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 16292CC6B17 for ; Thu, 2 Apr 2026 07:32:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AFD3B10EF1E; Thu, 2 Apr 2026 07:32:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Xu8XrVdY"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C93710EF1E for ; Thu, 2 Apr 2026 07:32:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1775115162; x=1806651162; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=GWFIGj3x0h5DsXd4my6gQjEWK5/acMvZUaLEVGZ91IM=; b=Xu8XrVdYXP4eyRS0IL7KLKZmuL9Vw1KIbF02O04K4qlZxaJAWiYpt18c iCGT96a6HMvSf1ptyyvkpxe8BJ3dxtyXVWgtCKnwS8Q/9q6X8h1twgy9H AvbbpMaqZmOFeIUcfR0aHNdTcTYpUybNt/36oZ8HXE4V8Ve0//YOKBuGS V02cPaO5zDr/5rq85yFqdSnf8+yCkWhNOGlY24agLFu2IlqTNtKauUGLo cIiWBakAgO8rN+dp5gOHbjaKynX6uWsY0BwFoSGwUHn/BkF4in0aR8iJV 6DLkW+eugPtJLvb0MNxxZGx0LG98hOVg9SVRAM3pNw26ccEsboIaOLtz2 g==; X-CSE-ConnectionGUID: PwPsNiiVRQqQxttdB2iSPg== X-CSE-MsgGUID: FlruvdMaQY+VOVYj/ORvFg== X-IronPort-AV: E=McAfee;i="6800,10657,11746"; a="93560791" X-IronPort-AV: E=Sophos;i="6.23,155,1770624000"; d="scan'208";a="93560791" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2026 00:32:41 -0700 X-CSE-ConnectionGUID: n1j0uA+KRTGwMJ6LAjDSJw== X-CSE-MsgGUID: rJ6lCQaNSIGM8zpzFFR7/A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,155,1770624000"; d="scan'208";a="227172424" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2026 00:32:40 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.2562.37; Thu, 2 Apr 2026 00:32:40 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) 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.37 via Frontend Transport; Thu, 2 Apr 2026 00:32:40 -0700 Received: from BN1PR04CU002.outbound.protection.outlook.com (52.101.56.1) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Thu, 2 Apr 2026 00:32:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mPgEXeBBZBAzRb8YAR1nxHYF6uktF6tMxZiC/LeukTMhx1g0ka15DH1gzhjxzfjksYAYgDtMZWqATtiwQjkw0yfLtuQNZv8y0rgQ4j15BV9YRnWqgxfI+JUwbqL7/KIdRyY3d03iQsvTXS+d0MBcydSKn0SXcu7yVEUjZwrqyroKs3SmpeQUnKO8p4pFud+wjlKaph1vSn+tkuUmwsNTxrmdmYOBf1hrumL5kvtYjIgGgOy9AGn4DTbBnYaWHTSssAlh1N3o3qnf/Ixmv38BsvxPygaX7dEJfz/ZjM3S+5JF8/H3AMyLKUDGwPFAA5bOeZBBUvHRA9sJWk8/vkfjOA== 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=GWFIGj3x0h5DsXd4my6gQjEWK5/acMvZUaLEVGZ91IM=; b=djB6nQXLgJuFAtT34A/kFl3Kv2dZdXv9sOfUvQOP5I3jVyCtg3D/ri4R+ye9StHyp/l1Yz8lvlXvsw+yAGpNddw16QBMCOlIDZdt/P8OHp15a++3PSp9XlMEQRRJX3Aqao7vJ6W/7/sr7kjd5k3WG/rvl3DqU0wECtMkR6O5GHzajWOvBq9Np8aGImMfa8iHDMW72Red4unHaUTmq8Ta28Ejr+J++49QxKxew7kIGy2cZ/OcoDG2VFMUDzmGYfBgDakl60ddgiJOzQwtyKd3XBLNvuZOzDZAwI8lUmNd8TsKmOkHtVGCdepB4r5EfJnyAQ+bJCq3swdDnrGKRGUsbQ== 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 DS0PR11MB7733.namprd11.prod.outlook.com (2603:10b6:8:dc::19) by IA0PR11MB7404.namprd11.prod.outlook.com (2603:10b6:208:430::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 2 Apr 2026 07:32:31 +0000 Received: from DS0PR11MB7733.namprd11.prod.outlook.com ([fe80::3e49:3435:98fa:130f]) by DS0PR11MB7733.namprd11.prod.outlook.com ([fe80::3e49:3435:98fa:130f%3]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026 07:32:31 +0000 From: "Hellstrom, Thomas" To: "igt-dev@lists.freedesktop.org" , "Thomas, Sobin" CC: "Sharma, Nishit" Subject: Re: [PATCH i-g-t v9 3/3] tests/intel/xe_vm: Add support for overcommit tests Thread-Topic: [PATCH i-g-t v9 3/3] tests/intel/xe_vm: Add support for overcommit tests Thread-Index: AQHcwBtp4tGx0Mc1MEyCXQRkqYRunbXLZX+A Date: Thu, 2 Apr 2026 07:32:31 +0000 Message-ID: <59f1418d0b3bfbf0093e7175c5de79af935d7066.camel@intel.com> References: <20260330080104.2956810-1-sobin.thomas@intel.com> <20260330080104.2956810-4-sobin.thomas@intel.com> In-Reply-To: <20260330080104.2956810-4-sobin.thomas@intel.com> Accept-Language: en-SE, en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.58.3 (3.58.3-1.fc43) 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: DS0PR11MB7733:EE_|IA0PR11MB7404:EE_ x-ms-office365-filtering-correlation-id: 120974c0-6bb0-4605-45a6-08de908a001b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|366016|1800799024|376014|38070700021|18002099003|22082099003|56012099003; x-microsoft-antispam-message-info: XGoCT7iS1jB67tEm7OXATjNHrNe/WkjYQkZINIXqysMu8ZzImyCk5hdMnF+32AdoXkzNz2GE9PXHA+UBWkkKCajK6qXDhxVQU4SHKecKsfODqc04SgV12DoP48Zkt/bQ0VoRhyJcvcMAC4W9++gb0RPhF3V6Kz3UNsRBBQqpwsVai7GWsLq80nhlvFLA7mGlNGcbY88njurIbSq9LursZ/BOmw0ApG4YNUynhiXqBDF2gwPm4pQr/FhMY3xyNaplvKPV54ObG9KlCCPbYbM6U7OhxKXPknXe5NvzSqE+2mTrc7qHCx1MR6Td3vIIRIYhQNU28vDAGJSByT/aH4olf9eWZMk2fDM9gS6ZTqNPdB9vdbuFcsxcK28ICiZ02Tb03zXTrcSO9TH/yeERe9CBLlxcVq9XkqiOZMdyNE7bcHBoPSFbEruaK7MmfiOyFU1lbDXy6t3YrpH14hn3/s2fNOAbNYwUc1DfxFCJFRxJ7q2nxrtlIn6NEqM5cIgnLCYNm+KkUXWyj/2sVTNDTYlolwWL1SQq1RFtrh0Rc56vR5en4c2BWAaqXiLKPnj7aR5Bv8W/iPUKpDIs23tDeVCCZ9jVqoa6AKmAiBjpaeLVv7dleE6xIod34fcz5z9ZwAvRq42f5E+m4lDfbnBtN+F62mHyXP+2Z1K7E4OilTPbVRNz9/tHrvlPsrQJqIoYbzJeARB0p06CHwUbxSML3KTRWi+IStzopOiQDPG62a9LDHw2smYge67qB6OCahOaclZxtlA6w2RvflIVoz+X5pW1Xm4bAGAIJDlbjwfsW+zEt1w= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7733.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(10070799003)(366016)(1800799024)(376014)(38070700021)(18002099003)(22082099003)(56012099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TG9ja3F1dFZHbFY0YjZvQ05aaE02b0JBakdRamYvNG5UUnY4V3BiOTJvWHo4?= =?utf-8?B?d1Q0UUU1eDIwdm9kTFo0d2hibDN6cmFKMk1KeWtqVEF5U24vd01xWDM4NzBS?= =?utf-8?B?L0w3ckh2SzRIN2tsVTdxem5uRmk2SlAyOFpXM3NsbktoUmJvTkFQNjhITVpv?= =?utf-8?B?Q2x5U0NpbVR2OW9nb2pyTjBPbjB6UFZrSGIvcy94OGxreTNoQ283ejhraXIy?= =?utf-8?B?djJnRzdWY0dSSVVPUi9XMEY0Q1JHWHhSaDExUzVnbk1NOGJDK3ZmSWE5YVJy?= =?utf-8?B?OTIrdmxDVjVLM1J2WkpnNlNCeTZCK0s0R1JadlQvRU5veUdlVC9KK2V1OVBG?= =?utf-8?B?eGhpdjVFcStVdUtyVG5jazJJWWNFZmhMVDRvYldMd2VKRE1jdXU3eGZSVW9I?= =?utf-8?B?S0FhR3BKT21UQVhUT0ZGankvNTJ5UXFKU2VwdUhPV2EzQ0FlVlR2bm1oRjdy?= =?utf-8?B?a2x4UnJYdlE3VU15ZDlWUWdDVk9GMXFGeVFEbklIRmF4RlRGV3pqcVFBMWk2?= =?utf-8?B?eVB1WHdiSEUyVjJJU2FrMHk3ZGpVU2picTlpVGFKOVg3Q2wwcjhRVzF3N0dC?= =?utf-8?B?Mzd6NGdOdzNSL3dlajl6NDZBRHgzYWtwenMrNjRuWVFlRURNQnMwZ3RlR21q?= =?utf-8?B?UXZ6MitiaEMxSUNPWFhoM2YyN1JRcFcxenhpWS9HN0ZWc1RYNTJBTnNzYUw2?= =?utf-8?B?VFBoRDFVU2V0U21UWDNyVko5OXNGYmRSeit2dlJrVUVXUnNsdlltWE44a2NK?= =?utf-8?B?aFh4cEs0aXVaNkRwQVBlRk9rQ0FTeW9hd1R3ZG0wOVNPcXJsa3FKai9PTUpo?= =?utf-8?B?dm1JdThIR2UwK2IrMGthZkhEWXNlQTZHeVBqRmFoYkFIYU9ZbVFKMzVraVps?= =?utf-8?B?dlZzdmdmVG9oNFNDN0o1UjR5WHNOSkg4Z3Y3cmQ5ajRVOEUzcEdoUE5TbEwx?= =?utf-8?B?ZGdNRmhMSXVOWmVMZTRreDd3M2NFWUVtamYyc09HV0RxNHN6NjlHelBFMG82?= =?utf-8?B?VXZHZG5vQ0lUdUh2RUtkN3RWZjVGSUFGeHJvdnNSb2I4UEhSVGxJZE5xQ3li?= =?utf-8?B?WnlvejNMWkM0M1hCSU1aMjVCRkgxRklUNWc4dHlwa0pPaTh1ejVEeWI0M0Nt?= =?utf-8?B?Qm5BdG1xU0Z4eVMrVnJEeEVodm9IcVc3NTZaV2hiRnBwRXJOVWdHWGJNTzZT?= =?utf-8?B?TEk0ODF4VWQxQmR4ZjI3cXZvdHFHVjNaUXlaMVpPM0xHQlAzbHZuUFpjMWxm?= =?utf-8?B?RVJJZ25lRm9WSTRPMzJpQ2NESURzcERpUnhhcnM5dzdwbDNZb3NONCsvbkdG?= =?utf-8?B?K0phMGQ4em41enNueis3cGFoRWYyWGlWSytEK0xwZllkQklhYTdUaU8rOEhW?= =?utf-8?B?M2pmakl4ZUhoUjBNQWZYcnhIdE5oS3RST0U4VWJ0enRJMWtQOGNYaHlCdEVy?= =?utf-8?B?UFMyOUZHQnhyVmZXNktTOGxZa3daYlhMeVFVd1I0ZmxCdWhCQzFNc1BUclBL?= =?utf-8?B?bWt6b2V2QnRxTWtWNjJYT3JkRW83MzhQckpNZit1VjJHbEx0bmYwaUl0T2Er?= =?utf-8?B?cFhQRU5GNnk4L1AvMXE1aWRiUnlkRHdwRDNVTERYZ0VtanFydmgxazYxalYv?= =?utf-8?B?Mzh6WjJzNjFseGU4Vm1KOUdOamplZ284OElCeUZVckJDdGU4MXhKeVNYdTQy?= =?utf-8?B?cmlrbFBIOCtvdVpCek12eFRkajRudG9sbGppdlAvZ1dDRUlWNmFKNGxNODg4?= =?utf-8?B?NWxCZjN2ZHU3ZElhSi96bUM5K0c3czZhTFN1Qm1SZi9SRXlIcHJaNG1RRlhZ?= =?utf-8?B?VnZoR1QzYkV5NTRNVGg3ZnVhcHVuK1pGeDk2SXVGUVluSlNXQ3lvdElKSVo0?= =?utf-8?B?b1M2OXdFbllHSVMzYUZxdUdMVDNlaTRmaUoyZml5Z2dmYnhMMVdFWW1NKy9p?= =?utf-8?B?TXd0eGdCOXBhYXhwRzFVTVFwSDhGS3VOTEhjZEtyVFk4RjdFdmh3aW5IdCt1?= =?utf-8?B?ZDNYQ0llNVYwY2JKS05DWU9ObGFVSHpLZXlMQ01ieXllSlZ4TjB2NXJ2Nllw?= =?utf-8?B?aEROdFN1RVBmcVRMZXBvSE9wT2JjcmtGQ1M5amt4RTRCbmFBWEpVOW9laHc3?= =?utf-8?B?OXlUUm05Nlh1K3FtTWR5M2ZGcHlCdTgrSHhBWEwxcnovdDNNWmU1TVB5VWJy?= =?utf-8?B?VWRudTFObkZJNlFyVTROOHpiWS94RWM3NytkU2dQRkpYalFxWFZXN2R2aVV4?= =?utf-8?B?eGllQ1BlZEVmazVMTkpRcFBFeGZ3UjB2WWVqdkxnR2pEeWFnZGRFT2V6MU1z?= =?utf-8?B?dXpZQm85OWhXeXJZTDBuRGcxWXVyTjNCUnR5TkhGREtPRzFvZTN4YWllb3VR?= =?utf-8?Q?nGwDLiug9QO4aXV8YeYqDUSrHFOIVT6l0LmO+csQ8U5l8?= x-ms-exchange-antispam-messagedata-1: uUTVEy6vQ6uzkA== Content-Type: text/plain; charset="utf-8" Content-ID: <364217DDF9532E44925E724A7710DC0A@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: JmvnKy+iZTf1RsIuJW5e9wiU0WzeSGSq87pznAaOKHs8CvHfyQkNio9mV6RACKEhWTtGsf15R5NedPBx/0Ofhbky71SFshzG+kTXzW1CkQs0SVetill/1Xeh7w77ulD8xIc5cw7geeUlHaPXWf9d5L9v2QMO9rm+FIHt+Tv36UuAkNujYqf1o3dfu4Y3UDPgaoMDak07Er8s165Dremsx+uPv7VPoyNWs+d2VtOKhxKR+WEkP+aftGCWMooG/YQA8zkyVqYJIUIpaz6TDOKIVsV6lcVjcjKsYmW2RCTinwS9KComh+WD/na/JWwU3yHJ+f0Xbx2i91bvYb2jxBu60g== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7733.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 120974c0-6bb0-4605-45a6-08de908a001b X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2026 07:32:31.4437 (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: 0QYNkZmFUUN8qf0nWjvIFYjm12AsfwYh6w3iZIjYxkJANl8WgqMW6dW+GHtPLF2yAzZhrqr5IlglHBOzcoa2pf2n91Hp7mHfJ1N7I16emPo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7404 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" T24gTW9uLCAyMDI2LTAzLTMwIGF0IDA4OjAxICswMDAwLCBTb2JpbiBUaG9tYXMgd3JvdGU6DQo+ IEN1cnJlbnQgdGVzdHMgZm9jdXMgb24gVk0gY3JlYXRpb24gd2l0aCBiYXNpYyBtb2RlIHNlbGVj dGlvbiBhbmQgZG8NCj4gbm90DQo+IHN1cHBvcnQgb3ZlcmNvbW1pdCBzY2VuYXJpb3MuDQo+IA0K PiBUaGlzIGNoYW5nZSBhZGRzIHRlc3RzIHRvIHZlcmlmeSBvdmVyY29tbWl0IGJlaGF2aW9yIGFj cm9zcyBkaWZmZXJlbnQNCj4gVk0NCj4gbW9kZXMuDQo+IA0KPiBOb24tZmF1bHQgbW9kZSB0ZXN0 czoNCj4gwqAtIHZyYW0tbHItZGVmZXI6IERFRkVSX0JBQ0tJTkcgcmVqZWN0cyBvdmVyY29tbWl0 IGF0IGJpbmQgdGltZQ0KPiDCoC0gdnJhbS1sci1leHRlcm5hbC1ub2RlZmVyOiBMb25nLXJ1bm5p bmcgbW9kZSB3aXRoIGV4dGVybmFsIEJPIGFuZA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBubyBkZWZlciBiYWNraW5nDQo+IMKgLSB2 cmFtLW5vLWxyOiBOb24tTFIgbW9kZQ0KPiANCj4gRmF1bHQgbW9kZSB0ZXN0czoNCj4gwqAtIHZy YW0tbHItZmF1bHQ6IEZhdWx0IGhhbmRsaW5nIGFsbG93cyBncmFjZWZ1bCBvdmVyY29tbWl0IHZp YSBwYWdlDQo+IMKgwqAgZmF1bHRzDQo+IMKgLSB2cmFtLWxyLWZhdWx0LW5vLW92ZXJjb21taXQ6 IFZlcmlmaWVzIE5PX1ZNX09WRVJDT01NSVQgYmxvY2tzDQo+IHNhbWUtVk0NCj4gwqDCoCBCTyBl dmljdGlvbiBkdXJpbmcgVk1fQklORCB3aGlsZSBzdGlsbCBhbGxvd2luZyBldmljdGlvbiBkdXJp bmcNCj4gwqDCoCBwYWdlZmF1bHQgT09NDQo+IA0KPiBUaGVzZSB0ZXN0cyB2YWxpZGF0ZSB0aGF0 IFZNcyBoYW5kbGUgbWVtb3J5IHByZXNzdXJlIGFwcHJvcHJpYXRlbHkNCj4gYmFzZWQNCj4gb24g dGhlaXIgY29uZmlndXJhdGlvbuKAlHJlamVjdGluZyBhdCBiaW5kLCBmYWlsaW5nIGF0IGV4ZWMs IG9yDQo+IGhhbmRsaW5nDQo+IGl0IGdyYWNlZnVsbHkgdmlhIHBhZ2UgZmF1bHRzLg0KPiANCj4g djIgLSBBZGRlZCBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgZm9yIExSIG1vZGUgYW5kIE5vIE92ZXJj b21taXQuDQo+IA0KPiB2MyAtIFJlZmFjdG9yZWQgaW50byBzaW5nbGUgYXBpIGNhbGzCoCBiYXNl ZCBvbiB0aGUgVk0gLyBCTyBGbGFncy4NCj4gDQo+IHY1IC0gQWRkcmVzc2VkIHJldmlldyBjb21t ZW50cyAocmVzZXQgc3luYyBvYmplY3RzIGFuZCBuaXRzKS4NCj4gwqDCoMKgwqAgQWRkZWQgY2hl Y2sgaW4gY2xlYW51cA0KPiB2NiAtIFJlcGxhY2VkIF9feGVfdm1fYmluZCB3aXRoIHhlX3ZtX2Jp bmRfbHJfc3luYyBhbmQgcmVmYWN0b3JlZC4NCj4gdjcgLSBBZGQgZmFpbGFibGUgeGVfdm1fYmlu ZF9scl9zeW5jIHRvIGhhbmRsZSB0aGUgZmFpbHVyZSBpbiB0aGUNCj4gwqDCoMKgwqAgdm0gYmlu ZCBpbiBjYXNlIG92ZXIgY29tbWl0IGhhcHBlbnMuDQo+IHY5IC0gUmVwbGFjZWQgeGVfdm1fYmlu ZF9scl9zeW5jX2ZhaWxhYmxlIHdvdGggX194ZV92bV9iaW5kX2xyX3N5bmMNCj4gDQo+IFNpZ25l ZC1vZmYtYnk6IFNvYmluIFRob21hcyA8c29iaW4udGhvbWFzQGludGVsLmNvbT4NCj4gLS0tDQo+ IMKgdGVzdHMvaW50ZWwveGVfdm0uYyB8IDM5NA0KPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQ0KPiDCoDEgZmlsZSBjaGFuZ2VkLCAzOTMgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ludGVsL3hlX3ZtLmMg Yi90ZXN0cy9pbnRlbC94ZV92bS5jDQo+IGluZGV4IGNjZmY4ZjgwNC4uNDdhYjVmNzA1IDEwMDY0 NA0KPiAtLS0gYS90ZXN0cy9pbnRlbC94ZV92bS5jDQo+ICsrKyBiL3Rlc3RzL2ludGVsL3hlX3Zt LmMNCj4gQEAgLTIwLDYgKzIwLDcgQEANCj4gwqAjaW5jbHVkZSAieGUveGVfcXVlcnkuaCINCj4g wqAjaW5jbHVkZSAieGUveGVfc3Bpbi5oIg0KPiDCoCNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gKyNk ZWZpbmUgVVNFUl9GRU5DRV9WQUxVRSAweGRlYWRiZWVmZGVhZGJlZWZ1bGwNCj4gwqANCj4gwqBz dGF0aWMgdWludDMyX3QNCj4gwqBhZGRyX2xvdyh1aW50NjRfdCBhZGRyKQ0KPiBAQCAtMjM3Niw2 ICsyMzc3LDM4NiBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkX3ZtX2lkKGludCBmZCkNCj4gwqAJZG9f aW9jdGxfZXJyKGZkLCBEUk1fSU9DVExfWEVfVk1fREVTVFJPWSwgJmRlc3Ryb3ksIEVOT0VOVCk7 DQo+IMKgfQ0KPiDCoA0KPiArc3RhdGljIHZvaWQgeGVfYXN5bmNfdm1fYmluZChpbnQgZmQsIHVp bnQzMl90IHZtLCB1aW50MzJfdA0KPiBleGVjX3F1ZXVlLCB1aW50MzJfdCBibywNCj4gKwkJCcKg wqDCoMKgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYWRkciwNCj4gdWludDY0X3Qgc2l6ZSwN Cj4gKwkJCcKgwqDCoMKgIHN0cnVjdCBkcm1feGVfc3luYyAqc3luYywgdWludDMyX3QNCj4gbnVt X3N5bmNzLCBib29sICpvdmVyY29tbWl0KQ0KPiArew0KPiArCWludCBiaW5kX2VyciA9IDA7DQo+ ICsNCj4gKwliaW5kX2VyciA9IF9feGVfdm1fYmluZChmZCwgdm0sIGV4ZWNfcXVldWUsIGJvLCBv ZmZzZXQsDQo+IGFkZHIsIHNpemUsDQo+ICsJCQkJRFJNX1hFX1ZNX0JJTkRfT1BfTUFQLCAwLCBz eW5jLA0KPiBudW1fc3luY3MsIDAsDQo+ICsJCQkJREVGQVVMVF9QQVRfSU5ERVgsIDApOw0KPiAr CWlmIChiaW5kX2Vycikgew0KPiArCQlpZiAoYmluZF9lcnIgPT0gLUVOT01FTSkgew0KDQpPT00g ZXJyb3JzIGFyZSBib3RoIEVOT01FTSBhbmQgRU5PU1BDDQoNCj4gKwkJCWlndF9kZWJ1ZygiXG4g U2V0dGluZyBvdmVyY29tbWl0IHRvIHRydWUiKTsNCj4gKwkJCSpvdmVyY29tbWl0ID0gdHJ1ZTsN Cj4gKwkJfSBlbHNlIHsNCj4gKwkJCWlndF9hc3NlcnRfZigwLCAiVW5leHBlY3RlZCBiaW5kIGVy cm9yICVkDQo+ICglcylcbiIsIC1iaW5kX2VyciwNCj4gKwkJCQnCoMKgwqDCoCBzdHJlcnJvcigt YmluZF9lcnIpKTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgY3Jl YXRlX2RhdGFfYm9zKGludCBmZCwgdWludDMyX3Qgdm0sIHVpbnQzMl90DQo+IGJpbmRfZXhlY19x dWV1ZSwNCj4gKwkJCcKgwqDCoCB1aW50MzJfdCAqYm9zLCBpbnQgbnVtX2JvcywgdWludDY0X3QN Cj4gbmZfYm9fc2l6ZSwNCj4gKwkJCcKgwqDCoCBib29sIHVzZV92cmFtLCB1aW50NjRfdCBkYXRh X2FkZHIsDQo+ICsJCQnCoMKgwqAgYm9vbCAqb3ZlcmNvbW1pdF9kZXRlY3RlZCwgc3RydWN0DQo+ IGRybV94ZV9zeW5jICpiaW5kX3N5bmMsDQo+ICsJCQnCoMKgwqAgdWludDMyX3QgYm9fZmxhZ3Ms IGludCBndF9pZCkNCj4gK3sNCj4gKwl1aW50MzJfdCBjcmVhdGVfcmV0ID0gMDsNCj4gKwl1aW50 MzJfdCBwbGFjZW1lbnQgPSB1c2VfdnJhbSA/IHZyYW1fbWVtb3J5KGZkLCBndF9pZCkgOg0KPiBz eXN0ZW1fbWVtb3J5KGZkKTsNCj4gKw0KPiArCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvczsg aSsrKSB7DQo+ICsJCXN0cnVjdCB7DQo+ICsJCQl1aW50NjRfdCB2bV9zeW5jOw0KPiArCQl9ICpk YXRhOw0KPiArDQo+ICsJCS8qIENyZWF0ZSBCTyB1c2luZyB0aGUgY2FzZSdzIGNyZWF0ZSBmdW5j dGlvbiAqLw0KPiArCQljcmVhdGVfcmV0ID0gX194ZV9ib19jcmVhdGUoZmQsIHZtLCBuZl9ib19z aXplLA0KPiBwbGFjZW1lbnQsDQo+ICsJCQkJCcKgwqDCoCBib19mbGFncywgTlVMTCwNCj4gJmJv c1tpXSk7DQo+ICsNCj4gKwkJaWYgKGNyZWF0ZV9yZXQpIHsNCj4gKwkJCWlmIChjcmVhdGVfcmV0 ID09IC1FTk9NRU0pIHsNCg0KU2FtZSBoZXJlLg0KDQo+ICsJCQkJKm92ZXJjb21taXRfZGV0ZWN0 ZWQgPSB0cnVlOw0KPiArCQkJCWlndF9kZWJ1ZygiQk8gY3JlYXRlIGZhaWxlZCBhdCAlZC8lZA0K PiB3aXRoIGVycm9yICVkICglcykgLSBvdmVyY29tbWl0IGRldGVjdGVkXG4iLA0KPiArCQkJCQnC oCBpLCBudW1fYm9zLCAtY3JlYXRlX3JldCwNCj4gc3RyZXJyb3IoLWNyZWF0ZV9yZXQpKTsNCj4g KwkJCQlicmVhazsNCj4gKwkJCX0NCj4gKwkJCWlndF9hc3NlcnRfZigwLCAiVW5leHBlY3RlZCBC TyBjcmVhdGUgZXJyb3INCj4gJWQgKCVzKVxuIiwgLWNyZWF0ZV9yZXQsDQo+ICsJCQkJwqDCoMKg wqAgc3RyZXJyb3IoLWNyZWF0ZV9yZXQpKTsNCj4gKwkJfQ0KPiArDQo+ICsJCS8qIE1hcCBhbmQg YmluZCBCTyAqLw0KPiArCQlkYXRhID0geGVfYm9fbWFwKGZkLCBib3NbaV0sIG5mX2JvX3NpemUp Ow0KPiArCQlpZ3RfYXNzZXJ0KGRhdGEpOw0KDQpib19tYXAgd2lsbCBhbGxvY2F0ZSBibyBiYWNr aW5nLXN0b3JlIGlmIHRoYXQgd2FzIGRlZmVycmVkIG9uIHRoZQ0KYm8gY3JlYXRpb24sIHNvIHRo ZSBPT00gbWF5IGhhcHBlbiBoZXJlLiBJdCdzIEJldHRlciB0byBkbyB0aGUNCmJvX21hcCAqYWZ0 ZXIqIHRoZSBiaW5kIGlzIGNvbXBsZXRlLg0KDQo+ICsJCW1lbXNldChkYXRhLCAwLCBuZl9ib19z aXplKTsNCg0KQnVmZmVycyBhcmUgY2xlYXJlZCBieSBLTUQgb24gY3JlYXRpb24sIHNvIHRoZSBh Ym92ZSBzaG91bGRuJ3QgYmUNCm5lZWRlZC4gSG93ZXZlciBpZiB5b3Ugd2FudCB0byBjaGVjayB0 aGF0IHdyaXRpbmcgdG8gYSBtYXAgd29ya3MsIGl0DQpkb2Vzbid0IGRvIGFueSBoYXJtIGVpdGhl ci4NCg0KPiArDQo+ICsJCWJpbmRfc3luY1swXS5hZGRyID0gdG9fdXNlcl9wb2ludGVyKCZkYXRh LT52bV9zeW5jKTsNCj4gKwkJeGVfYXN5bmNfdm1fYmluZChmZCwgdm0sIGJpbmRfZXhlY19xdWV1 ZSwgYm9zW2ldLCAwLA0KPiBkYXRhX2FkZHIgKyAoaSAqIG5mX2JvX3NpemUpLA0KPiArCQkJCSBu Zl9ib19zaXplLCBiaW5kX3N5bmMsIDEsDQo+IG92ZXJjb21taXRfZGV0ZWN0ZWQpOw0KPiArDQo+ ICsJCWlmICgqb3ZlcmNvbW1pdF9kZXRlY3RlZCkgew0KPiArCQkJbXVubWFwKGRhdGEsIG5mX2Jv X3NpemUpOw0KPiArCQkJaWd0X2RlYnVnKCJPdmVyY29tbWl0IGRldGVjdGVkIHdoaWxlIHZtDQo+ IGJpbmRcbiIpOw0KPiArCQkJYnJlYWs7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAoZGF0YS0+dm1f c3luYyAhPSBVU0VSX0ZFTkNFX1ZBTFVFKQ0KPiArCQkJeGVfd2FpdF91ZmVuY2UoZmQsICZkYXRh LT52bV9zeW5jLA0KPiBVU0VSX0ZFTkNFX1ZBTFVFLA0KPiArCQkJCcKgwqDCoMKgwqDCoCBiaW5k X2V4ZWNfcXVldWUsIDIwICoNCj4gTlNFQ19QRVJfU0VDKTsNCg0KTm93IHRoYXQgeW91IG5ld2x5 IGNyZWF0ZWQgYW4gX194ZV92bV9iaW5kX3N5bmMoKSBpbiB0aGUgcHJldmlvdXMNCnBhdGNoLCB3 aHkgaXMgdGhhdCBub3QgdXNlZCBoZXJlLCBpbnN0ZWFkIG9mIG9wZW4tY29kaW5nIGl0IGFsbCBv bmNlDQphZ2Fpbj8NCg0KDQo+ICsJCWRhdGEtPnZtX3N5bmMgPSAwOw0KPiArCQltdW5tYXAoZGF0 YSwgbmZfYm9fc2l6ZSk7DQo+ICsNCj4gKwkJaWd0X2RlYnVnKCJDcmVhdGVkIGFuZCBib3VuZCBC TyAlZC8lZCBhdCAweCVsbHhcbiIsDQo+ICsJCQnCoCBpICsgMSwgbnVtX2JvcywNCj4gKwkJCcKg ICh1bnNpZ25lZCBsb25nIGxvbmcpKGRhdGFfYWRkciArIChpICoNCj4gbmZfYm9fc2l6ZSkpKTsN Cj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHZlcmlmeV9ibyhpbnQgZmQsIHVpbnQz Ml90ICpib3MsIGludCBudW1fYm9zLCB1aW50NjRfdA0KPiBuZl9ib19zaXplLCB1aW50NjRfdCBz dHJpZGUpDQo+ICt7DQo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fYm9zOyBpKyspIHsNCj4g KwkJdWludDMyX3QgKnZlcmlmeV9kYXRhOw0KPiArCQlpbnQgZXJyb3JzID0gMDsNCj4gKw0KPiAr CQl2ZXJpZnlfZGF0YSA9IHhlX2JvX21hcChmZCwgYm9zW2ldLCBuZl9ib19zaXplKTsNCj4gKwkJ aWd0X2Fzc2VydCh2ZXJpZnlfZGF0YSk7DQo+ICsNCj4gKwkJZm9yIChpbnQgb2ZmID0gMDsgb2Zm IDwgbmZfYm9fc2l6ZTsgb2ZmICs9IHN0cmlkZSkgew0KPiArCQkJdWludDMyX3QgZXhwZWN0ZWQg PSAweEJCOw0KPiArCQkJdWludDMyX3QgYWN0dWFsID0gKih1aW50MzJfdCAqKSgoY2hhcg0KPiAq KXZlcmlmeV9kYXRhICsgb2ZmKTsNCj4gKw0KPiArCQkJaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkg ew0KPiArCQkJCWlmIChlcnJvcnMgPCA1KQ0KPiArCQkJCQlpZ3RfZGVidWcoIk1pc21hdGNoIGF0 IEJPICVkDQo+IG9mZnNldCAweCVsbHgiLA0KPiArCQkJCQkJwqAgaSwgKHVuc2lnbmVkIGxvbmcN Cj4gbG9uZylvZmYpOw0KPiArCQkJCWVycm9ycysrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsNCj4g KwkJbXVubWFwKHZlcmlmeV9kYXRhLCBuZl9ib19zaXplKTsNCj4gKwkJaWd0X2Fzc2VydF9mKGVy cm9ycyA9PSAwLCAiRGF0YSB2ZXJpZmljYXRpb24gZmFpbGVkDQo+IGZvciBCTyAlZCB3aXRoICVk IGVycm9yc1xuIiwNCj4gKwkJCcKgwqDCoMKgIGksIGVycm9ycyk7DQo+ICsJfQ0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAqIFNVQlRFU1Q6IG92ZXJjb21taXQtZmF1bHQtJXMNCj4gKyAqIERlc2Ny aXB0aW9uOiBUZXN0IFZNIG92ZXJjb21taXQgYmVoYXZpb3IgaW4gZmF1bHQgbW9kZSB3aXRoDQo+ ICVhcmdbMV0gY29uZmlndXJhdGlvbg0KPiArICogRnVuY3Rpb25hbGl0eTogb3ZlcmNvbW1pdA0K PiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0DQo+ICsgKg0KPiArICogYXJn WzFdOg0KPiArICoNCj4gKyAqIEB2cmFtLWxyLWZhdWx0OlZSQU0gd2l0aCBMUiBhbmQgZmF1bHQg bW9kZSwgZXhwZWN0cyBleGVjIHRvIHBhc3MNCj4gKyAqIEB2cmFtLWxyLWZhdWx0LW5vLW92ZXJj b21taXQ6VlJBTSB3aXRoIExSLCBmYXVsdCBhbmQNCj4gTk9fVk1fT1ZFUkNPTU1JVCwgZXhwZWN0 cyBiaW5kIHJlamVjdGlvbg0KPiArICovDQo+ICsNCj4gKy8qKg0KPiArICogU1VCVEVTVDogb3Zl cmNvbW1pdC1ub25mYXVsdC0lcw0KPiArICogRGVzY3JpcHRpb246IFRlc3QgVk0gb3ZlcmNvbW1p dCBiZWhhdmlvciBpbiBub25mYXVsdCBtb2RlIHdpdGgNCj4gJWFyZ1sxXSBjb25maWd1cmF0aW9u DQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBvdmVyY29tbWl0DQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBm dW5jdGlvbmFsaXR5IHRlc3QNCj4gKyAqDQo+ICsgKiBhcmdbMV06DQo+ICsgKg0KPiArICogQHZy YW0tbHItZGVmZXI6VlJBTSB3aXRoIExSIGFuZCBkZWZlciBiYWNraW5nLCBleHBlY3RzIGJpbmQN Cj4gcmVqZWN0aW9uDQo+ICsgKiBAdnJhbS1sci1leHRlcm5hbC1ub2RlZmVyOlZSQU0gd2l0aCBM UiBhbmQgZXh0ZXJuYWwgQk8gd2l0aG91dA0KPiBkZWZlciwgZXhwZWN0cyBleGVjIGZhaWwNCj4g KyAqIEB2cmFtLW5vLWxyOlZSQU0gd2l0aG91dCBMUiBtb2RlLCBleHBlY3RzIGV4ZWMgdG8gZmFp bA0KPiArICovDQo+ICtzdHJ1Y3Qgdm1fb3ZlcmNvbW1pdF9jYXNlIHsNCj4gKwljb25zdCBjaGFy ICpuYW1lOw0KPiArCXVpbnQzMl90IHZtX2ZsYWdzOw0KPiArCXVpbnQzMl90IGJvX2ZsYWdzOw0K PiArCWJvb2wgdXNlX3ZyYW07DQo+ICsJdWludDY0X3QgZGF0YV9hZGRyOw0KPiArCXVpbnQzMl90 IHBhdF9pbmRleDsNCj4gKwlpbnQgb3ZlcmNvbW1pdF9tdWx0Ow0KPiArfTsNCj4gKw0KPiArc3Rh dGljIGNvbnN0IHN0cnVjdCB2bV9vdmVyY29tbWl0X2Nhc2Ugb3ZlcmNvbW1pdF9jYXNlc1tdID0g ew0KPiArCS8qIENhc2UgMTogREVGRVJfQkFDS0lORyAqLw0KPiArCXsNCj4gKwkJLm5hbWUgPSAi dnJhbS1sci1kZWZlciIsDQo+ICsJCS52bV9mbGFncyA9IERSTV9YRV9WTV9DUkVBVEVfRkxBR19M Ul9NT0RFLA0KPiArCQkuYm9fZmxhZ3MgPSBEUk1fWEVfR0VNX0NSRUFURV9GTEFHX0RFRkVSX0JB Q0tJTkcgfA0KPiArCQkJwqDCoMKgDQo+IERSTV9YRV9HRU1fQ1JFQVRFX0ZMQUdfTkVFRFNfVklT SUJMRV9WUkFNLA0KPiArCQkudXNlX3ZyYW0gPSB0cnVlLA0KPiArCQkuZGF0YV9hZGRyID0gMHgx YTAwMDAsDQo+ICsJCS5vdmVyY29tbWl0X211bHQgPSAyLA0KPiArCX0sDQo+ICsJLyogQ2FzZSAx YjogRXh0ZXJuYWwgQk8gd2l0aG91dCBkZWZlciBiYWNraW5nICovDQo+ICsJew0KPiArCQkubmFt ZSA9ICJ2cmFtLWxyLWV4dGVybmFsLW5vZGVmZXIiLA0KPiArCQkudm1fZmxhZ3MgPSBEUk1fWEVf Vk1fQ1JFQVRFX0ZMQUdfTFJfTU9ERSwNCj4gKwkJLmJvX2ZsYWdzID0NCj4gRFJNX1hFX0dFTV9D UkVBVEVfRkxBR19ORUVEU19WSVNJQkxFX1ZSQU0sDQo+ICsJCS51c2VfdnJhbSA9IHRydWUsDQo+ ICsJCS5kYXRhX2FkZHIgPSAweDFhMDAwMCwNCj4gKwkJLm92ZXJjb21taXRfbXVsdCA9IDIsDQo+ ICsJfSwNCj4gKwkvKiBDYXNlIDI6IExSICsgRkFVTFQgLSBzaG91bGQgbm90IGZhaWwgb24gZXhl YyAqLw0KPiArCXsNCj4gKwkJLm5hbWUgPSAidnJhbS1sci1mYXVsdCIsDQo+ICsJCS52bV9mbGFn cyA9IERSTV9YRV9WTV9DUkVBVEVfRkxBR19MUl9NT0RFIHwNCj4gKwkJCcKgwqDCoCBEUk1fWEVf Vk1fQ1JFQVRFX0ZMQUdfRkFVTFRfTU9ERSwNCj4gKwkJLmJvX2ZsYWdzID0NCj4gRFJNX1hFX0dF TV9DUkVBVEVfRkxBR19ORUVEU19WSVNJQkxFX1ZSQU0sDQo+ICsJCS51c2VfdnJhbSA9IHRydWUs DQo+ICsJCS5kYXRhX2FkZHIgPSAweDMwMDAwMDAwMCwNCj4gKwkJLm92ZXJjb21taXRfbXVsdCA9 IDIsDQo+ICsJfSwNCj4gKwkvKiBDYXNlIDM6ICFMUiAtIG92ZXJjb21taXQgc2hvdWxkIGZhaWwg b24gZXhlYyAqLw0KPiArCXsNCj4gKwkJLm5hbWUgPSAidnJhbS1uby1sciIsDQo+ICsJCS52bV9m bGFncyA9IDAsDQo+ICsJCS5ib19mbGFncyA9DQo+IERSTV9YRV9HRU1fQ1JFQVRFX0ZMQUdfTkVF RFNfVklTSUJMRV9WUkFNLA0KPiArCQkudXNlX3ZyYW0gPSB0cnVlLA0KPiArCQkuZGF0YV9hZGRy ID0gMHgzMDAwMDAwMDAsDQo+ICsJCS5vdmVyY29tbWl0X211bHQgPSAyLA0KPiArCX0sDQo+ICsJ LyogQ2FzZSA0OiBMUiArIEZBVUxUICsgTk9fVk1fT1ZFUkNPTU1JVCAqLw0KPiArCXsNCj4gKwkJ Lm5hbWUgPSAidnJhbS1sci1mYXVsdC1uby1vdmVyY29tbWl0IiwNCj4gKwkJLnZtX2ZsYWdzID0g RFJNX1hFX1ZNX0NSRUFURV9GTEFHX05PX1ZNX09WRVJDT01NSVQgfA0KPiBEUk1fWEVfVk1fQ1JF QVRFX0ZMQUdfTFJfTU9ERSB8DQo+ICsJCQnCoMKgwqAgRFJNX1hFX1ZNX0NSRUFURV9GTEFHX0ZB VUxUX01PREUsDQo+ICsJCS5ib19mbGFncyA9IERSTV9YRV9HRU1fQ1JFQVRFX0ZMQUdfREVGRVJf QkFDS0lORyB8DQo+ICsJCQnCoMKgwqANCj4gRFJNX1hFX0dFTV9DUkVBVEVfRkxBR19ORUVEU19W SVNJQkxFX1ZSQU0sDQo+ICsJCS51c2VfdnJhbSA9IHRydWUsDQo+ICsJCS5kYXRhX2FkZHIgPSAw eDMwMDAwMDAwMCwNCj4gKwkJLm92ZXJjb21taXRfbXVsdCA9IDIsDQo+ICsJfSwNCj4gKwl7IH0N Cj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICt0ZXN0X3ZtX292ZXJjb21taXQoaW50IGZk LCBzdHJ1Y3QgZHJtX3hlX2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqZWNpLA0KPiArCQnCoMKgIGNv bnN0IHN0cnVjdCB2bV9vdmVyY29tbWl0X2Nhc2UgKmMsDQo+ICsJCcKgwqAgdWludDY0X3Qgc3lz dGVtX3NpemUsIHVpbnQ2NF90IHZyYW1fc2l6ZSkNCj4gK3sNCj4gKwl1aW50MzJfdCB2bSA9IDAs ICpib3MsIGJhdGNoX2JvID0gMCwgZXhlY19xdWV1ZSA9IDAsDQo+IGJpbmRfZXhlY19xdWV1ZTsN Cj4gKwlib29sIGlzX2ZhdWx0X21vZGUgPSAoYy0+dm1fZmxhZ3MgJg0KPiBEUk1fWEVfVk1fQ1JF QVRFX0ZMQUdfRkFVTFRfTU9ERSkgIT0gMDsNCj4gKwlib29sIGlzX2xyX21vZGUgPSAoYy0+dm1f ZmxhZ3MgJg0KPiBEUk1fWEVfVk1fQ1JFQVRFX0ZMQUdfTFJfTU9ERSkgIT0gMDsNCj4gKwl1aW50 NjRfdCBzeW5jX2FkZHIgPSAweDEwMWEwMDAwLCBiYXRjaF9hZGRyID0gMHgyMDAwMDAwMDA7DQo+ ICsJdWludDY0X3Qgb3ZlcmNvbW1pdF9zaXplLCBvZmYsIGRhdGFfYWRkcjsNCj4gKwlzaXplX3Qg c3luY19zaXplLCBuZl9ib19zaXplID0gNjQgKiAxMDI0ICogMTAyNDsNCj4gKwl1aW50NjRfdCBz dHJpZGUgPSAxMDI0ICogMTAyNCwgYmFzZV9zaXplOw0KPiArCWludDY0X3QgdGltZW91dCA9IDIw ICogTlNFQ19QRVJfU0VDOw0KPiArCWludCBpLCBudW1fYm9zLCBiaW5kX2VycjsNCj4gKwlib29s IG92ZXJjb21taXRfZGV0ZWN0ZWQgPSBmYWxzZTsNCj4gKwlzdHJ1Y3QgZHJtX3hlX3N5bmMgYmlu ZF9zeW5jWzFdID0gew0KPiArCQl7DQo+ICsJCQkudHlwZSA9IERSTV9YRV9TWU5DX1RZUEVfVVNF Ul9GRU5DRSwNCj4gKwkJCS5mbGFncyA9IERSTV9YRV9TWU5DX0ZMQUdfU0lHTkFMLA0KPiArCQkJ LnRpbWVsaW5lX3ZhbHVlID0gVVNFUl9GRU5DRV9WQUxVRQ0KPiArCQl9LA0KPiArCX07DQo+ICsN Cj4gKwkvKiBGb3IgZmF1bHQgbW9kZTogdXNlciBmZW5jZSwgZm9yIG5vbi1mYXVsdCBtb2RlOiBz eW5jb2JqDQo+ICovDQo+ICsJc3RydWN0IGRybV94ZV9zeW5jIGV4ZWNfc3luY1sxXSA9IHsNCj4g KwkJew0KPiArCQkJLnR5cGUgPSBEUk1fWEVfU1lOQ19UWVBFX1VTRVJfRkVOQ0UsDQo+ICsJCQku ZmxhZ3MgPSBEUk1fWEVfU1lOQ19GTEFHX1NJR05BTCwNCj4gKwkJCS50aW1lbGluZV92YWx1ZSA9 IFVTRVJfRkVOQ0VfVkFMVUUsDQo+ICsJCQkuaGFuZGxlID0gMCwNCj4gKwkJfSwNCj4gKwl9Ow0K PiArCXN0cnVjdCBkcm1feGVfZXhlYyBleGVjID0gew0KPiArCQkubnVtX2JhdGNoX2J1ZmZlciA9 IDEsDQo+ICsJCS5udW1fc3luY3MgPSAxLA0KPiArCQkuc3luY3MgPSB0b191c2VyX3BvaW50ZXIo ZXhlY19zeW5jKSwNCj4gKwl9Ow0KPiArCXN0cnVjdCB7DQo+ICsJCXVpbnQzMl90IGJhdGNoWzE2 XTsNCj4gKwkJdWludDY0X3QgcGFkOw0KPiArCQl1aW50MzJfdCBkYXRhOw0KPiArCQl1aW50NjRf dCB2bV9zeW5jOw0KPiArCX0gKmJhdGNoX2RhdGEgPSBOVUxMOw0KPiArCXVpbnQ2NF90ICp1c2Vy X2ZlbmNlX3N5bmMgPSBOVUxMOw0KPiArDQo+ICsJZGF0YV9hZGRyID0gYy0+ZGF0YV9hZGRyOw0K PiArDQo+ICsJYmFzZV9zaXplID0gYy0+dXNlX3ZyYW0gPyB2cmFtX3NpemUgOiBzeXN0ZW1fc2l6 ZTsNCj4gKwlvdmVyY29tbWl0X3NpemUgPSBBTElHTigodWludDY0X3QpKGJhc2Vfc2l6ZSAqIGMt DQo+ID5vdmVyY29tbWl0X211bHQpLCA0MDk2KTsNCj4gKw0KPiArCW51bV9ib3MgPSAob3ZlcmNv bW1pdF9zaXplIC8gbmZfYm9fc2l6ZSkgKyAxOw0KPiArCWJvcyA9IGNhbGxvYyhudW1fYm9zLCBz aXplb2YoKmJvcykpOw0KPiArCWlndF9hc3NlcnQoYm9zKTsNCj4gKw0KPiArCWlndF9kZWJ1Zygi T3ZlcmNvbW1pdCB0ZXN0OiBhbGxvY2F0aW5nICVkIEJPcyBvZiAlbGx1IE1CDQo+IGVhY2giLA0K PiArCQnCoCBudW1fYm9zLCAodW5zaWduZWQgbG9uZyBsb25nKShuZl9ib19zaXplID4+IDIwKSk7 DQo+ICsJaWd0X2RlYnVnKCIgdG90YWw9JWxsdSBNQiwgdnJhbT0lbGx1IE1CXG4iLA0KPiArCQnC oCAodW5zaWduZWQgbG9uZyBsb25nKShudW1fYm9zICogbmZfYm9fc2l6ZSA+PiAyMCksDQo+ICsJ CcKgICh1bnNpZ25lZCBsb25nIGxvbmcpKHZyYW1fc2l6ZSA+PiAyMCkpOw0KPiArCS8qIENyZWF0 ZSBWTSB3aXRoIGFwcHJvcHJpYXRlIGZsYWdzICovDQo+ICsJdm0gPSB4ZV92bV9jcmVhdGUoZmQs IGMtPnZtX2ZsYWdzLCAwKTsNCj4gKwlpZ3RfYXNzZXJ0KHZtKTsNCj4gKw0KPiArCWJpbmRfZXhl Y19xdWV1ZSA9IHhlX2JpbmRfZXhlY19xdWV1ZV9jcmVhdGUoZmQsIHZtLCAwKTsNCj4gKwlzeW5j X3NpemUgPSB4ZV9iYl9zaXplKGZkLCBzaXplb2YodWludDY0X3QpICogbnVtX2Jvcyk7DQo+ICsJ dXNlcl9mZW5jZV9zeW5jID0gbW1hcChOVUxMLCBzeW5jX3NpemUsIFBST1RfUkVBRCB8DQo+IFBS T1RfV1JJVEUsDQo+ICsJCQnCoMKgwqDCoMKgwqAgTUFQX1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMs IC0xLCAwKTsNCj4gKwlpZ3RfYXNzZXJ0KHVzZXJfZmVuY2Vfc3luYyAhPSBNQVBfRkFJTEVEKTsN Cj4gKwltZW1zZXQodXNlcl9mZW5jZV9zeW5jLCAwLCBzeW5jX3NpemUpOw0KPiArDQo+ICsJLyog Q3JlYXRlIGFuZCBiaW5kIGRhdGEgQk9zICovDQo+ICsJY3JlYXRlX2RhdGFfYm9zKGZkLCB2bSwg YmluZF9leGVjX3F1ZXVlLCBib3MsIG51bV9ib3MsDQo+ICsJCQluZl9ib19zaXplLCBjLT51c2Vf dnJhbSwgZGF0YV9hZGRyLA0KPiArCQkJJm92ZXJjb21taXRfZGV0ZWN0ZWQsIGJpbmRfc3luYywg Yy0NCj4gPmJvX2ZsYWdzLCBlY2ktPmd0X2lkKTsNCj4gKw0KPiArCWlmIChvdmVyY29tbWl0X2Rl dGVjdGVkKSB7DQo+ICsJCWlndF9kZWJ1ZygiT3ZlcmNvbW1pdCBjb3JyZWN0bHkgcmVqZWN0ZWQg YXQgQk8NCj4gY3JlYXRpb24vYmluZCAoY3JlYXRlZCAlZCBCT3MpXG4iLA0KPiArCQkJwqAgbnVt X2Jvcyk7DQo+ICsJCWdvdG8gY2xlYW51cDsNCj4gKwl9DQo+ICsNCj4gKwkgLyoNCj4gKwnCoCAq IENyZWF0ZSBiYXRjaCBidWZmZXIgZmlyc3QgaW4gU1JBTSBhcyBmb2N1cyBpcyBvbiBkYXRhIGJv DQo+IHByZXNlbnQgaW4gVlJBTQ0KPiArCcKgICovDQo+ICsJYmF0Y2hfYm8gPSB4ZV9ib19jcmVh dGUoZmQsIHZtLCAweDEwMDAsIHN5c3RlbV9tZW1vcnkoZmQpLA0KPiAwKTsNCj4gKw0KPiArCWln dF9kZWJ1ZygiTWFwcGluZyB0aGUgY3JlYXRlZCBCTyIpOw0KPiArCWJhdGNoX2RhdGEgPSB4ZV9i b19tYXAoZmQsIGJhdGNoX2JvLCAweDEwMDApOw0KPiArCWlndF9hc3NlcnQoYmF0Y2hfZGF0YSk7 DQo+ICsJbWVtc2V0KGJhdGNoX2RhdGEsIDAsIDB4MTAwMCk7DQo+ICsNCj4gKwkvKiBCaW5kIGJh dGNoIGJ1ZmZlciBhbmQgc3luYyBhcmVhcyAqLw0KPiArCWlmIChpc19mYXVsdF9tb2RlKSB7DQo+ ICsJCWJhdGNoX2RhdGEtPnZtX3N5bmMgPSAwOw0KPiArCQliaW5kX3N5bmMtPmFkZHIgPSB0b191 c2VyX3BvaW50ZXIoJmJhdGNoX2RhdGEtDQo+ID52bV9zeW5jKTsNCj4gKw0KPiArCQl4ZV92bV9i aW5kX3VzZXJwdHJfYXN5bmMoZmQsIHZtLCBiaW5kX2V4ZWNfcXVldWUsDQo+IHRvX3VzZXJfcG9p bnRlcih1c2VyX2ZlbmNlX3N5bmMpLA0KPiArCQkJCQkgc3luY19hZGRyLCBzeW5jX3NpemUsDQo+ IGJpbmRfc3luYywgMSk7DQo+ICsJCWlmIChiYXRjaF9kYXRhLT52bV9zeW5jICE9IFVTRVJfRkVO Q0VfVkFMVUUpDQo+ICsJCQl4ZV93YWl0X3VmZW5jZShmZCwgJmJhdGNoX2RhdGEtPnZtX3N5bmMs DQo+IFVTRVJfRkVOQ0VfVkFMVUUsDQo+ICsJCQkJwqDCoMKgwqDCoMKgIGJpbmRfZXhlY19xdWV1 ZSwNCj4gTlNFQ19QRVJfU0VDKTsNCj4gKwl9DQoNCldoeSBpcyB0aGVyZSBhIHNwZWNpYWwtY2Fz ZSBmb3IgaXNfZmF1bHRfbW9kZSgpIGhlcmU/DQoNCg0KPiArCWJhdGNoX2RhdGEtPnZtX3N5bmMg PSAwOw0KPiArCWJpbmRfZXJyID0gX194ZV92bV9iaW5kX2xyX3N5bmMoZmQsIHZtLCBiYXRjaF9i bywgMCwNCj4gYmF0Y2hfYWRkciwgMHgxMDAwLCAwKTsNCj4gKwlpZiAoYmluZF9lcnIpIHsNCj4g KwkJaWYgKGJpbmRfZXJyID09IC1FTk9NRU0pIHsNCj4gKwkJCWlndF9kZWJ1ZygiU2V0dGluZyBv dmVyY29tbWl0IHRvIHRydWVcbiIpOw0KPiArCQkJb3ZlcmNvbW1pdF9kZXRlY3RlZCA9IHRydWU7 DQo+ICsJCQlnb3RvIGNsZWFudXA7DQo+ICsJCX0gZWxzZSB7IC8qIEFzc2VydCBhbnkgYmluZCBl cnJvciBvdGhlciB0aGFuIC1FTk9NRU0NCj4gKi8NCj4gKwkJCWlndF9hc3NlcnRfZigwLCAiVW5l eHBlY3RlZCBiaW5kIGVycm9yICVkDQo+ICglcylcbiIsIC1iaW5kX2VyciwNCj4gKwkJCQnCoMKg wqDCoCBzdHJlcnJvcigtYmluZF9lcnIpKTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlndF9k ZWJ1ZygiVk0gYmluZHMgZG9uZSAtIGJhdGNoX2JvIGF0IDB4JWxseFxuIiwgKHVuc2lnbmVkDQo+ IGxvbmcgbG9uZyliYXRjaF9hZGRyKTsNCj4gKwkvKiBDcmVhdGUgZXhlYyBxdWV1ZSAqLw0KPiAr CWV4ZWNfcXVldWUgPSB4ZV9leGVjX3F1ZXVlX2NyZWF0ZShmZCwgdm0sIGVjaSwgMCk7DQo+ICsN Cj4gKwkvKiBTZXR1cCBzeW5jIGZvciBleGVjICovDQo+ICsJaWYgKGlzX2ZhdWx0X21vZGUpIHsN Cj4gKwkJZXhlY19zeW5jLT5hZGRyID0gc3luY19hZGRyOw0KPiArCX0gZWxzZSBpZiAoaXNfbHJf bW9kZSkgew0KPiArCQkvKiBMUiBtb2RlIC0gdXNlIGJhdGNoX2RhdGEtPnZtX3N5bmMgKEdQVSBh Y2Nlc3NpYmxlDQo+IG1lbW9yeSkgKi8NCj4gKwkJYmF0Y2hfZGF0YS0+dm1fc3luYyA9IDA7DQo+ ICsJCWV4ZWNfc3luYy0+YWRkciA9IHRvX3VzZXJfcG9pbnRlcigmYmF0Y2hfZGF0YS0NCj4gPnZt X3N5bmMpOw0KPiArCX0NCg0KQW5kIGhlcmU/IEFsc28sIHdoeSBpcyB0aGUgY29zZSBzcGVjaWFs LWNhc2luZyBMUiBtb2RlPw0KDQoNCj4gKw0KPiArCS8qIFVzZSBHUFUgdG8gd3JpdGUgdG8gZWFj aCBCTyAqLw0KPiArCWZvciAoaSA9IDA7IGkgPCBudW1fYm9zOyBpKyspIHsNCj4gKwkJaWd0X2Rl YnVnKCJXcml0aW5nIHRvIEJPICVkLyVkIHZpYSBHUFVcbiIsIGkgKyAxLA0KPiBudW1fYm9zKTsN Cj4gKw0KPiArCQlmb3IgKG9mZiA9IDA7IG9mZiA8IG5mX2JvX3NpemU7IG9mZiArPSBzdHJpZGUp IHsNCj4gKwkJCXVpbnQ2NF90IHRhcmdldF9hZGRyID0gZGF0YV9hZGRyICsgKGkgKg0KPiBuZl9i b19zaXplKSArIG9mZjsNCj4gKwkJCWludCBiX2lkeCA9IDAsIHJlcyA9IDA7DQo+ICsNCj4gKwkJ CWJhdGNoX2RhdGEtPmJhdGNoW2JfaWR4KytdID0NCj4gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQ7 DQo+ICsJCQliYXRjaF9kYXRhLT5iYXRjaFtiX2lkeCsrXSA9IHRhcmdldF9hZGRyICYNCj4gMHhG RkZGRkZGRjsNCj4gKwkJCWJhdGNoX2RhdGEtPmJhdGNoW2JfaWR4KytdID0gKHRhcmdldF9hZGRy ID4+DQo+IDMyKSAmIDB4RkZGRkZGRkY7DQo+ICsJCQliYXRjaF9kYXRhLT5iYXRjaFtiX2lkeCsr XSA9IDB4QkI7DQo+ICsJCQliYXRjaF9kYXRhLT5iYXRjaFtiX2lkeCsrXSA9DQo+IE1JX0JBVENI X0JVRkZFUl9FTkQ7DQo+ICsNCj4gKwkJCS8qIFN1Ym1pdCBiYXRjaCAqLw0KPiArCQkJZXhlYy5l eGVjX3F1ZXVlX2lkID0gZXhlY19xdWV1ZTsNCj4gKwkJCWV4ZWMuYWRkcmVzcyA9IGJhdGNoX2Fk ZHI7DQo+ICsNCj4gKwkJCXJlcyA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX1hFX0VYRUMsDQo+ ICZleGVjKTsNCj4gKwkJCWlmIChyZXMgIT0gMCkgew0KPiArCQkJCWlmIChlcnJubyA9PSBFTk9N RU0gfHwgZXJybm8gPT0NCj4gRU5PU1BDKSB7DQo+ICsJCQkJCWlndF9kZWJ1ZygiRXhwZWN0ZWQN Cj4gZmF1bHQvZXJyb3I6ICVkICglcylcbiIsDQo+ICsJCQkJCQnCoCBlcnJubywNCj4gc3RyZXJy b3IoZXJybm8pKTsNCj4gKwkJCQkJZ290byBjbGVhbnVwOw0KPiArCQkJCX0NCj4gKwkJCQlpZ3Rf YXNzZXJ0X2YoMCwgIlVuZXhwZWN0ZWQgZXhlYw0KPiBlcnJvcjogJWRcbiIsIGVycm5vKTsNCj4g KwkJCX0NCj4gKwkJCXhlX3dhaXRfdWZlbmNlKGZkLCAmdXNlcl9mZW5jZV9zeW5jWzBdLA0KPiBV U0VSX0ZFTkNFX1ZBTFVFLCBleGVjX3F1ZXVlLA0KPiArCQkJCcKgwqDCoMKgwqDCoCB0aW1lb3V0 KTsNCj4gKwkJCXVzZXJfZmVuY2Vfc3luY1swXSA9IDA7DQo+ICsJCX0NCj4gKwkJaWd0X2RlYnVn KCJBY2Nlc3NlZCBCTyAlZC8lZCB2aWEgR1BVXG4iLCBpICsgMSwNCj4gbnVtX2Jvcyk7DQo+ICsJ fQ0KPiArCWlndF9kZWJ1ZygiQWxsIGJhdGNoZXMgc3VibWl0dGVkIC0gd2FpdGluZyBmb3IgR1BV DQo+IGNvbXBsZXRpb25cbiIpOw0KPiArDQo+ICsJLyogVmVyaWZ5IEdQVSB3cml0ZXMgKi8NCj4g Kwl2ZXJpZnlfYm8oZmQsIGJvcywgbnVtX2JvcywgbmZfYm9fc2l6ZSwgc3RyaWRlKTsNCj4gKw0K PiArY2xlYW51cDoNCj4gKwkvKiBDbGVhbnVwICovDQo+ICsJaWYgKGV4ZWNfcXVldWUpDQo+ICsJ CXhlX2V4ZWNfcXVldWVfZGVzdHJveShmZCwgZXhlY19xdWV1ZSk7DQo+ICsJaWYgKGJpbmRfZXhl Y19xdWV1ZSkNCj4gKwkJeGVfZXhlY19xdWV1ZV9kZXN0cm95KGZkLCBiaW5kX2V4ZWNfcXVldWUp Ow0KPiArCWlmIChiYXRjaF9kYXRhKQ0KPiArCQltdW5tYXAoYmF0Y2hfZGF0YSwgMHgxMDAwKTsN Cj4gKwlpZiAoYmF0Y2hfYm8pDQo+ICsJCWdlbV9jbG9zZShmZCwgYmF0Y2hfYm8pOw0KPiArDQo+ ICsJbXVubWFwKHVzZXJfZmVuY2Vfc3luYywgc3luY19zaXplKTsNCj4gKw0KPiArCWlmIChib3Mp IHsNCj4gKwkJZm9yIChpID0gMDsgaSA8IG51bV9ib3M7IGkrKykgew0KPiArCQkJaWYgKGJvc1tp XSkNCj4gKwkJCQlnZW1fY2xvc2UoZmQsIGJvc1tpXSk7DQo+ICsJCX0NCj4gKwkJZnJlZShib3Mp Ow0KPiArCX0NCj4gKwlpZiAodm0gPiAwKQ0KPiArCQl4ZV92bV9kZXN0cm95KGZkLCB2bSk7DQo+ ICt9DQo+ICsNCj4gwqAvKioNCj4gwqAgKiBTVUJURVNUOiBvdXQtb2YtbWVtb3J5DQo+IMKgICog RGVzY3JpcHRpb246IFRlc3QgaWYgdm1fYmluZCBpb2N0bCByZXN1bHRzIGluIG9vbQ0KPiBAQCAt MjM4NSw3ICsyNzY2LDYgQEAgc3RhdGljIHZvaWQgaW52YWxpZF92bV9pZChpbnQgZmQpDQo+IMKg ICovDQo+IMKgc3RhdGljIHZvaWQgdGVzdF9vb20oaW50IGZkKQ0KPiDCoHsNCj4gLSNkZWZpbmUg VVNFUl9GRU5DRV9WQUxVRSAweGRlYWRiZWVmZGVhZGJlZWZ1bGwNCj4gwqAjZGVmaW5lIEJPX1NJ WkUgeGVfYmJfc2l6ZShmZCwgU1pfNTEyTSkNCj4gwqAjZGVmaW5lIE1BWF9CVUZTICgoaW50KSh4 ZV92aXNpYmxlX3ZyYW1fc2l6ZShmZCwgMCkgLyBCT19TSVpFKSkNCj4gwqAJdWludDY0X3QgYWRk ciA9IDB4MWEwMDAwOw0KPiBAQCAtMjg1MCw2ICszMjMwLDE4IEBAIGludCBpZ3RfbWFpbigpDQo+ IMKgCQl0ZXN0X29vbShmZCk7DQo+IMKgCX0NCj4gwqANCj4gKwlmb3IgKGludCBpID0gMDsgb3Zl cmNvbW1pdF9jYXNlc1tpXS5uYW1lOyBpKyspIHsNCj4gKwkJY29uc3Qgc3RydWN0IHZtX292ZXJj b21taXRfY2FzZSAqYyA9DQo+ICZvdmVyY29tbWl0X2Nhc2VzW2ldOw0KPiArCQljb25zdCBjaGFy ICptb2RlID0gKGMtPnZtX2ZsYWdzICYNCj4gRFJNX1hFX1ZNX0NSRUFURV9GTEFHX0ZBVUxUX01P REUpID8NCj4gKwkJCQkJImZhdWx0IiA6ICJub25mYXVsdCI7DQo+ICsJCWlndF9zdWJ0ZXN0X2Yo Im92ZXJjb21taXQtJXMtJXMiLCBtb2RlLCBjLT5uYW1lKSB7DQo+ICsJCQlpZ3RfcmVxdWlyZSh4 ZV9oYXNfdnJhbShmZCkpOw0KPiArCQkJaWd0X2Fzc2VydCh4ZV92aXNpYmxlX3ZyYW1fc2l6ZShm ZCwgMCkpOw0KPiArCQkJdGVzdF92bV9vdmVyY29tbWl0KGZkLCBod2UsIGMsDQo+IChpZ3RfZ2V0 X2F2YWlsX3JhbV9tYigpIDw8IDIwKSwNCj4gKwkJCQkJwqDCoCB4ZV92aXNpYmxlX3ZyYW1fc2l6 ZShmZCwNCj4gMCkpOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+IMKgCWlndF9maXh0dXJlKCkNCj4g wqAJCWRybV9jbG9zZV9kcml2ZXIoZmQpOw0KPiDCoH0NCg0KVGhhbmtzLA0KVGhvbWFzDQo=