From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id hz7hCiNiKmpKNgEAWB0awg (envelope-from ) for ; Thu, 11 Jun 2026 03:22:11 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CeRY2PP2; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 076D71E024; Thu, 11 Jun 2026 03:22:11 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 95ED91E024 for ; Thu, 11 Jun 2026 03:22:06 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AC0994BA2E29 for ; Thu, 11 Jun 2026 07:22:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AC0994BA2E29 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CeRY2PP2 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by sourceware.org (Postfix) with ESMTPS id C910E4BA2E05 for ; Thu, 11 Jun 2026 07:21:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C910E4BA2E05 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=tempfail smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C910E4BA2E05 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1781162490; cv=fail; b=j2YjXHTQ8e6VdD/4NtMGTn5X6oxL6yfq21dzVRFLGTbOP/pCDdyBfeJMXdDldBuvEjmg/ybthSbYhdDe/1J3gfjD8I33jV8N7UbaLJCEDXKVjUS3C5FskVavcSz1lWczk+diMGI1tJl8xS0AKwdfZt3FZ5qPu10LQfUdZF7on44= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1781162490; c=relaxed/simple; bh=hEgqjA1s7gHaWAg8QjPu71tG+lx1wzSdAldfSv2xiSg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=BFt9/7RM05NiX1fhM9Ydyrm18fS+pkmYnJrURX73yLar37agOrulr3qAa8yQcxkuinKrpXYfZeqSeenmkGm4kwogxJioxYifvJig9bVRsuDfkyb1xO/Np+BY+di+0buvawhEm9B7Wm+mLHzgPM54cuMJLi0vnH5ZNYtNusy/o6A= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CeRY2PP2 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C910E4BA2E05 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1781162490; x=1812698490; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=hEgqjA1s7gHaWAg8QjPu71tG+lx1wzSdAldfSv2xiSg=; b=CeRY2PP2YfNob4YD79WYVCwjbf7qa9igQCwPYURYTboEVv+GlcEkjVFu kRC6iBg2Uhy5t7RM9T81+MJWtois25NFH34msWvbOzotep7OCDaE/NOqT W308UUtvKuXRUGeh/sS9K0DNd4aZi//YoRUJBIpxPPO71xIoCDscM4uZf JzVJz7zZEOHU9yU3GCmGsoQbS0k2/+HN+SeAWA8mRoW0ZnpFsLJ55P8Ab KT5ibny19HffvrrmPuskiwFW/qTMgn06mr9Kp+ojURHReAxGhYNtBC+HK RM+Pw8GV7s+4135aCMha+cugk26CoYJgR4dcB5JpqNcJAjSHVDtwpIGmh w==; X-CSE-ConnectionGUID: +AF17X58RGa5IrndIR7+xQ== X-CSE-MsgGUID: wEeZSGzUQXuQI8f1O8kprQ== X-IronPort-AV: E=McAfee;i="6800,10657,11813"; a="92645655" X-IronPort-AV: E=Sophos;i="6.24,198,1774335600"; d="scan'208";a="92645655" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2026 00:21:29 -0700 X-CSE-ConnectionGUID: N/rYooHLQ42i/S4Gt2d5ug== X-CSE-MsgGUID: Ugq6MsaeTtCfm9MYgUJ5Wg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,198,1774335600"; d="scan'208";a="284486611" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2026 00:21:29 -0700 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Thu, 11 Jun 2026 00:21:27 -0700 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX903.amr.corp.intel.com (10.18.126.92) 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, 11 Jun 2026 00:21:27 -0700 Received: from BYAPR05CU005.outbound.protection.outlook.com (52.101.85.66) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Thu, 11 Jun 2026 00:21:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gXiYTDQLIpRMQ4SLBUTuXk+hWVKFRtBQzfuma10UPotvhkoZsryfh+Qfo0SOh/diFHjQm06zk9qa2kIOHrEqo/OiP7jpMOt8ca7ojoiT8IZP9P2rx9jWiBRKb7fu5uta447tBqlkB8jVynSYUhiYB0e0NsqcefBjTOGkQA2JcUZlPH9wOlX4NhmLG0M7ilBtkUl6ghR8mzFXnzV2ddlmRhtmFdVd4OVze+/VPM/W7MCcYCfGYFm2Is+AoWBXBLFOHzengXurKYgRezBZzJdfeyRArZymLRZ5Mk3XZpFRlPN7B8O38KEsKn71d2Lx/uH8AialvncscSCXmqMUbd0LSg== 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=8E/3hV7RZKkKAs0OX3SCnlSBKV6NOEQNqCuDJk+ACGA=; b=FzG0Z8b5Uz5B3/7Vn1G2hGKt5aOQYFr1wBFLS5cXAmBhiRTV5KY7a83DOVdTWbc5nSGJSA6Jz10VaZKoDyE99Acky+FKy1t10YKQNYqZtlrX6SjUcZamsg+DyO165CSd9psNjqQnKDB9ox9NHmz+oHKv047PLK0j2xsLViT8AfFRDXX+FZO+8wWitNE9C5KVK2/SfENmh14mrGbFGpwXlSUkjPUAm45ltm74xNX9iroZbr24YC2vZTvNNmgaCVQ2ycoDWYzcRUov5H/5hxdUEEPDXoEH0KO+W4VdR5o2rQLlLAQ17wSy+FcN0Vs5I5l2IS82eP12ThCCoSb/mPXn9Q== 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 SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by SJ0PR11MB6574.namprd11.prod.outlook.com (2603:10b6:a03:44e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Thu, 11 Jun 2026 07:21:24 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%3]) with mapi id 15.21.0092.006; Thu, 11 Jun 2026 07:21:24 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" CC: Thiago Jung Bauermann Subject: RE: [PATCH v4 4/8] gdb/record: c++ify internal structures of record-full.c Thread-Topic: [PATCH v4 4/8] gdb/record: c++ify internal structures of record-full.c Thread-Index: AQHc8p00zx/w03M9S0iGJZ/pqE0slbY35w8wgABMbQCAAMxnsA== Date: Thu, 11 Jun 2026 07:21:24 +0000 Message-ID: References: <20260602143342.12245-1-guinevere@redhat.com> <20260602143342.12245-5-guinevere@redhat.com> <8ec6ee8f-b4e2-4cb1-a238-5f200dd512a4@redhat.com> In-Reply-To: <8ec6ee8f-b4e2-4cb1-a238-5f200dd512a4@redhat.com> 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: SN7PR11MB7638:EE_|SJ0PR11MB6574:EE_ x-ms-office365-filtering-correlation-id: 5645462f-2a71-48d3-a74e-08dec78a0b73 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|23010399003|38070700021|10063799003|6133799003|22082099003|18002099003|3023799007|4143699003|5023799004|11063799006|56012099006; x-microsoft-antispam-message-info: ThB3mFbY8hX6t0xlSw6XS7YanYlLys03Qn1gIv6nqfx/IMKWZMm1S0cwg8l6d4sSJFuJtoDYgBitjNGCKKRAozLR4laQPV5XzNXg9NyMrgelXtK6zWQ3AOkQiFtjGVLYAJ0qnTjORx6n1toWpANxuTqeO/3ZT7E/XUvldqCuP6t1onSw8PJ1TMIipUVTlyqMcwjv010SFRdez7ZNGxIiEMCLMvn6fFDN5jKGGnrjwwAUKXnXu6Fm0WAOarM5i75zE51xayRcFKqZBUlbnX53RN3fmagE90n7PZusF2P7++DExXhZV587/iM2pzlnklr214CewEqD3EiEahmBoNbyFHMbh+ydJ7BsmBmoNEQUV5n1HH1T4je6CmY5HC6LK1g0vPhDTBKkKmQAgy3jQRm4QqGOL1k58gxmLHMOUuA9IV2ZPN2y4ArKRwSLAYTe66S80Ffgw9NS5rTetqW2sCLLpiizKge/K6BidaiTV3sK18kfUfMO0NmoX5wsMjW98GHCH9J1f7Tth14gAdNoA1Wmt5oDG+UrChYy6rID/KXRELo53bzcrdFm6WzBMdrbBA4O9fr00EXipcf3jezlSmLYp448UmcJHZAVQEK3MLvoZXGyuM5vFr8bSov8PTpbHRmYpX+PxnlRnD3lnYLlPL+9y/AhJfpAQIFsSTah6BfFO4CEwEvWUPNytki0FWWo6uwikcja4/S6JhCq+qA6p8zrWZKcQ/WDkREGJ/rpKvQJW+bMrdaocCF/BXQROO02NQWg x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(23010399003)(38070700021)(10063799003)(6133799003)(22082099003)(18002099003)(3023799007)(4143699003)(5023799004)(11063799006)(56012099006); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eThtZ0F5WjBGcldCREEwa0NuTmNiWGpkaGRubkJHempnS3RDTlI2cVVScFF3?= =?utf-8?B?STFsV3JQQ0FvbmVaMk5VdWg1aThDR1FXbVl6dkhHNHBNTXY3cDREMTBRV3hk?= =?utf-8?B?WGUreEZ3d3c2NFlnVml2elVoVExaaUUwYjcxVlFHYmpmVDRvMVZLc01ybDBt?= =?utf-8?B?WHluNENJM3I3NXdZYm1TdUVSaCswYXRWQkdWOGxDR3E4SWdxZ2loZ2YxZG1m?= =?utf-8?B?eGEvRnQwL2FMZEhQSHF4M0I0T05BbExSRmtSaDBOYWRxb2w0b0QyTTZSRmVy?= =?utf-8?B?bFVhQVZtRU8zNVJick1RbEQ1Zmg3QkZEbmd4bm9lZkFVZWwvMGJkUkVxTTFw?= =?utf-8?B?UWlPY21lK1dUR0cxSnV1cWhkdVczQjhGK3JqcVByTExIeFdpdzBGb0t6cGlJ?= =?utf-8?B?SmF0ZTVOMDdzaTRITkxzNk9ibVNhNGgwalI4aWtlSk5UZHhZbGowelcvZmRF?= =?utf-8?B?TXcrRXJ6UGRWMHlkY2p1MS9xd0NCQnVaTjR5S0tDTVZNLzZCVnNTY0VSc1BU?= =?utf-8?B?ZFhSVFRtVC9MOEZsai9UOXFLZitkQXBuWDY2V3hxaDRqK1NWUWFBR2QvMXFs?= =?utf-8?B?TVlnRkE0b0k3czVtSkdoNm10eFBhaUtSOWp5cHR1RXNkVlNKSUZyWnBVUm9U?= =?utf-8?B?eVBnQklvb0JRbis0cVdheHFWMDNyeElCRlAya0NoS1lINjA2MUlKQzkxYzlT?= =?utf-8?B?aUlvdzNGL0x4ZzZ0VDhNeUhHdGFuUE4xSE43a0lVdjRrajVnRzRqeEZsV0N2?= =?utf-8?B?Z3EzWkFLR2J0bk1WTjJWMzNUTFlKdzZ6andHam9ic1BySXdaQW5oNTNTMmxU?= =?utf-8?B?TDM5ZDJCZlZsQkFCWUp1YjFpdmJJOHh5dHlFcnJzQ2Y0MGZaSG1zdTd5cmdB?= =?utf-8?B?MFoza2JYbXVEYS9WTkZ6S1Z4SnlGSVA3c3Z6WDNTMEM4MWNrUEF0SUI1UXYw?= =?utf-8?B?SXkrM1p6Vm5EZkUxNlREcStOYjg0S2M2dURhR0dVMU9kYjQzcGptSGNqQnJr?= =?utf-8?B?b29HUTdkaGRFZlFPaFJoUGlEclZ0VGtJRHBDUnJGdHdFeWtOMU5IUUNZcUxu?= =?utf-8?B?SDJma2ErTGEzWnlGc1JDS3Iwc08vWmgxYW9na1poK1UyOXVrUzhLS3ZrdTZz?= =?utf-8?B?dmNleS9iT0dkeWp5Nk1WWWxTWExjK2ZYU29FU0xwVnlZVkZRVHliQ0ZTbFFS?= =?utf-8?B?Z1ZEaWdIS2JyWTg5R3NkM2FnT0dXWnVPRytncmVVV1FtZmpRbWhiZTFaU2lB?= =?utf-8?B?VDZiNHdNLzN6OFovZWFTZGJ1c0tkODBaMzFPZ21TRHlOU1hKRUVSTGFoc01W?= =?utf-8?B?YnBva0NDNzBWbSt0N2pxU1UxR3J6Z013aDExVjQ5dXJqQnMySTBsNFl3THd2?= =?utf-8?B?TEJCV1FNMWFOUWFWVzIwNDd2OTMrK1NJSzIxRDd1N3NMVWdDK1lUUnlSNHNE?= =?utf-8?B?N1VPMzZNRkFnVkJJamRUa3NBUEU3a0lBUitnTU04ZlUzZjJnRDlXNjQ4dTNS?= =?utf-8?B?MUU1eE1ENUpqSXY3S0hzaW45Rm9HVWxvck9RQm84MU9URFo0Y3RsNllwQ3J4?= =?utf-8?B?aFJuZ0ZEd0tCY1dkeTkvRlZPekdVY1ZMV1pRM05nckRnR0ZWZTFXSGVXU0ZL?= =?utf-8?B?ZUJqUGUrRk04TWVhU3lITW0weFV3RXlHbG9Ka0V0SjQ3VWdvL1E2SHExSytm?= =?utf-8?B?d3FzSVdCU3BkVThKMnZlY2s5YXRBRVN4Y054cUs0U05XRmFCZjhTdEFIYlA2?= =?utf-8?B?eTk3RndDVVc2RkpLMEkrNGlMb2FIUVdMMUhTZktRS0pMR041YXBFQXRDOWl4?= =?utf-8?B?NVZtcWUyZXpBVHM2aGc0V0FCbHZ5ZDZFWlkra21tak9PRGdDVjNTa1Z6Q2Zj?= =?utf-8?B?Q1Vxd1ZsdUJIK01FcGF4bVJZdGFIRnZaQS8zUWVuVk9zVG5KRHY1WVZEd2lq?= =?utf-8?B?bHNESGJkeHQ4ZHZVNjJxbEEzN1FMNHdrZnN5eDhNeE1JdEZTS1JIOHRXTndz?= =?utf-8?B?aEZTZUltV2x6YVJXaDVpZmUvb2Y1Mjd1SWxEa0Y4bFlNZXNvNUFPRHdOeVlH?= =?utf-8?B?d1hpVENnWDJjcHUxdDVBSlFTYlpVQ2V5RW1FSkFwMy9mZmZBYVd5dVZlcWZ2?= =?utf-8?B?Q2pMbWxKdXkxN1NhREE4ZE5lVXZaaU5CWTJZVjRTc0V0dlB6RnV4THpJVmto?= =?utf-8?B?U3VkWC9FQTJrLzNpeGdDY0VCdDNCQnFVYW4wNkpnRENoZ0p0a043K1VRdWxC?= =?utf-8?B?TFVmZjVKWXBnT3hrcGU4M0NCVTh1VkRyM1hSU3lkbzZLMmVOYzVWdCtSQzZ5?= =?utf-8?B?OUJhZkNETG9rbGwvdFN5MFFlc0tDODU0YU1VWnZMQkxRVEErM1Y3UT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: ixhv51IBntZWyP/pVe0DNwnyv7xbeZ5E63EMq3HuEasKHrp+++ZnpgwO+9oDFJjD0LUwZBZtnQ0Wxp8i2M8n049UkyHVsAC8Dt1aDvekDbM//pU5Pe2EPwDbUTD4P86MwWPxHMns5YrbF7p44ftt54AOxkSrWwjREtYfk9m5egpZmAMOsbb7PEUghzZBO8sFjrdBvtzZE0S7PuMtf3T0qD9OWLzVRq9TrarLWAGT0NaxTDuycSxMUECPtZcRH6wf3+LzMPnMnBurbHEaRSRv6nXtUq4V6sNH+Pc0f8mseGqN2xAyWUxmjzbsOOKNfK+RPi2LttoyH1PrEj0Rx9wykw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5645462f-2a71-48d3-a74e-08dec78a0b73 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2026 07:21:24.4509 (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: pWz2iI4L7bjPyVSF+UeRa1iYsx3wJrZ4ni3HPzGVsTp2WcZ387qBnh9VQwy65cBtYEHbYwCbcBrN/ncgTI84tnaRfIWf2AfZIjZDxuX+HRU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB6574 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3VpbmV2ZXJlIExhcnNl biA8Z3VpbmV2ZXJlQHJlZGhhdC5jb20+DQo+IFNlbnQ6IE1pdHR3b2NoLCAxMC4gSnVuaSAyMDI2 IDIxOjA3DQo+IFRvOiBTY2hpbXBlLCBDaHJpc3RpbmEgPGNocmlzdGluYS5zY2hpbXBlQGludGVs LmNvbT47IGdkYi0NCj4gcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBDYzogVGhpYWdvIEp1bmcg QmF1ZXJtYW5uIDx0aGlhZ28uYmF1ZXJtYW5uQGxpbmFyby5vcmc+DQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjQgNC84XSBnZGIvcmVjb3JkOiBjKytpZnkgaW50ZXJuYWwgc3RydWN0dXJlcyBvZiBy ZWNvcmQtDQo+IGZ1bGwuYw0KPiANCj4gT24gNi8xMC8yNiAxMTo0NiBBTSwgU2NoaW1wZSwgQ2hy aXN0aW5hIHdyb3RlOg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9t OiBHdWluZXZlcmUgTGFyc2VuIDxndWluZXZlcmVAcmVkaGF0LmNvbT4NCj4gPj4gU2VudDogRGll bnN0YWcsIDIuIEp1bmkgMjAyNiAxNjozNA0KPiA+PiBUbzogZ2RiLXBhdGNoZXNAc291cmNld2Fy ZS5vcmcNCj4gPj4gQ2M6IEd1aW5ldmVyZSBMYXJzZW4gPGd1aW5ldmVyZUByZWRoYXQuY29tPjsg VGhpYWdvIEp1bmcgQmF1ZXJtYW5uDQo+ID4+IDx0aGlhZ28uYmF1ZXJtYW5uQGxpbmFyby5vcmc+ DQo+ID4+IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzhdIGdkYi9yZWNvcmQ6IGMrK2lmeSBpbnRlcm5h bCBzdHJ1Y3R1cmVzIG9mDQo+ID4+IHJlY29yZC1mdWxsLmMNCj4gPj4NCj4gPj4gVGhpcyBjb21t aXQgYWRkcyBhIGNvbnN0cnVjdG9yLCBkZXN0cnVjdG9yLCBhbmQgc29tZSBtZXRob2RzIHRvIHRo ZQ0KPiA+PiBzdHJ1Y3R1cmVzIHJlY29yZF9mdWxsX2VudHJ5LCByZWNvcmRfZnVsbF9yZWdfZW50 cnkgYW5kDQo+ID4+IHJlY29yZF9mdWxsX21lbV9lbnRyeS4gVGhpcyBpcyBhIG1vdmUgdG8gZGlz ZW50YW5nbGUgdGhlIGludGVybmFsDQo+ID4+IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGFu ZCBob3cgcmVjb3JkLWZ1bGwgbWFuaXB1bGF0ZXMgaXQgZm9yDQo+IHJlcGxheWluZy4NCj4gPj4N Cj4gPj4gQWxvbmcgd2l0aCB0aGlzIGNoYW5nZSwgcmVjb3JkX2Z1bGxfZW50cnkgaXMgY2hhbmdl ZCB0byB1c2UgYW4NCj4gPj4gc3RkOjp2YXJpYW50LCBzaW5jZSBpdCB3YXMgYmFzaWNhbGx5IGRv aW5nIHRoYXQgYWxyZWFkeSwgYnV0IG5vdyB3ZQ0KPiA+PiBoYXZlIHRoZSBzdGRsaWJjKysgZXJy b3IgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIHdlJ3JlIG9ubHkgYWNjZXNzaW5nDQo+IGVsZW1lbnRz IHdlJ3JlIGFsbG93ZWQgdG8uDQo+ID4+DQo+ID4+IFJldmlld2VkLWJ5OiBUaGlhZ28gSnVuZyBC YXVlcm1hbm4gPHRoaWFnby5iYXVlcm1hbm5AbGluYXJvLm9yZz4NCj4gPj4gLS0tDQo+ID4+ICAg Z2RiL3JlY29yZC1mdWxsLmMgfCA2MTMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+PiAgIDEgZmlsZSBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwg Mjg3IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvZ2RiL3JlY29yZC1mdWxs LmMgYi9nZGIvcmVjb3JkLWZ1bGwuYyBpbmRleA0KPiA+PiBhM2EzMWU3Mjc2Zi4uNzNkZTg0Mzcy YjAgMTAwNjQ0DQo+ID4+IC0tLSBhL2dkYi9yZWNvcmQtZnVsbC5jDQo+ID4+ICsrKyBiL2dkYi9y ZWNvcmQtZnVsbC5jDQo+ID4+IEBAIC01MSw2ICs1MSw3IEBADQo+ID4+ICAgI2luY2x1ZGUgPG9w dGlvbmFsPg0KPiA+PiAgICNpbmNsdWRlIDxkZXF1ZT4NCj4gPj4gICAjaW5jbHVkZSA8c2lnbmFs Lmg+DQo+ID4+ICsjaW5jbHVkZSA8dmFyaWFudD4NCj4gPj4NCj4gPj4gICAvKiBUaGlzIG1vZHVs ZSBpbXBsZW1lbnRzICJ0YXJnZXQgcmVjb3JkLWZ1bGwiLCBhbHNvIGtub3duIGFzICJwcm9jZXNz DQo+ID4+ICAgICAgcmVjb3JkIGFuZCByZXBsYXkiLiAgVGhpcyB0YXJnZXQgc2l0cyBvbiB0b3Ag b2YgYSAibm9ybWFsIg0KPiA+PiB0YXJnZXQgQEAgLTkyLDEzDQo+ID4+ICs5MywxMTYgQEAgc3Ry dWN0IHJlY29yZF9mdWxsX21lbV9lbnRyeQ0KPiA+PiAgICAgQ09SRV9BRERSIGFkZHI7DQo+ID4+ ICAgICBpbnQgbGVuOw0KPiA+PiAgICAgLyogU2V0IHRoaXMgZmxhZyBpZiB0YXJnZXQgbWVtb3J5 IGZvciB0aGlzIGVudHJ5DQo+ID4+IC0gICAgIGNhbiBubyBsb25nZXIgYmUgYWNjZXNzZWQuICAq Lw0KPiA+PiAtICBpbnQgbWVtX2VudHJ5X25vdF9hY2Nlc3NpYmxlOw0KPiA+PiArICAgICBjYW4g YmUgYWNjZXNzZWQuICAqLw0KPiA+PiArICBib29sIG1lbV9lbnRyeV9hY2Nlc3NpYmxlOw0KPiA+ PiAgICAgdW5pb24NCj4gPj4gICAgIHsNCj4gPj4gICAgICAgZ2RiX2J5dGUgKnB0cjsNCj4gPj4g ICAgICAgZ2RiX2J5dGUgYnVmW3NpemVvZiAoZ2RiX2J5dGUgKildOw0KPiA+PiAgICAgfSB1Ow0K PiA+PiArDQo+ID4+ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSAoKSA6IGFkZHIgKDApLCBsZW4g KDApLCBtZW1fZW50cnlfYWNjZXNzaWJsZQ0KPiA+PiArICh0cnVlKSAgeyB9DQo+ID4+ICsNCj4g Pj4gKyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IChDT1JFX0FERFIgbWVtX2FkZHIsIGludCBtZW1f bGVuKSAgew0KPiA+PiArICAgIGFkZHIgPSBtZW1fYWRkcjsNCj4gPj4gKyAgICBsZW4gPSBtZW1f bGVuOw0KPiA+PiArICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gPj4gKyAgICAgIHUu cHRyID0gbmV3IGdkYl9ieXRlW2xlbl07DQo+ID4+ICsgICAgbWVtX2VudHJ5X2FjY2Vzc2libGUg PSB0cnVlOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5 IChyZWNvcmRfZnVsbF9tZW1fZW50cnkgJiZvdGhlcikgIHsNCj4gPj4gKyAgICBhZGRyID0gb3Ro ZXIuYWRkcjsNCj4gPj4gKyAgICBsZW4gPSBvdGhlci5sZW47DQo+ID4+ICsgICAgbWVtY3B5ICh1 LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsNCj4gPj4gKyAgICBtZW1fZW50cnlf YWNjZXNzaWJsZSA9IG90aGVyLm1lbV9lbnRyeV9hY2Nlc3NpYmxlOw0KPiA+PiArICAgIC8qIFdp dGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJhbnRlZWQgdG8gbm90IHRyeSB0byBmcmVlIHRoZQ0K PiA+PiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlzIGRlc3RydWN0ZWQuICAqLw0KPiA+PiArICAg IG90aGVyLmxlbiA9IDA7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICB+cmVjb3JkX2Z1bGxf bWVtX2VudHJ5ICgpDQo+ID4+ICsgIHsNCj4gPj4gKyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1 ZikpDQo+ID4+ICsgICAgICBkZWxldGVbXSB1LnB0cjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSAmb3BlcmF0b3I9IChyZWNvcmRfZnVsbF9tZW1fZW50 cnkgJiZvdGhlcikNCj4gew0KPiA+PiArICAgIGdkYl9hc3NlcnQgKHRoaXMgIT0gJm90aGVyKTsN Cj4gPj4gKyAgICBhZGRyID0gb3RoZXIuYWRkcjsNCj4gPj4gKyAgICBsZW4gPSBvdGhlci5sZW47 DQo+ID4+ICsgICAgbWVtY3B5ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsN Cj4gPj4gKyAgICBtZW1fZW50cnlfYWNjZXNzaWJsZSA9IG90aGVyLm1lbV9lbnRyeV9hY2Nlc3Np YmxlOw0KPiA+PiArICAgIC8qIFdpdGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJhbnRlZWQgdG8g bm90IHRyeSB0byBmcmVlIHRoZQ0KPiA+PiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlzIGRlc3Ry dWN0ZWQuICAqLw0KPiA+PiArICAgIG90aGVyLmxlbiA9IDA7DQo+ID4+ICsgICAgcmV0dXJuICp0 aGlzOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgRElTQUJMRV9DT1BZX0FORF9BU1NJR04g KHJlY29yZF9mdWxsX21lbV9lbnRyeSk7DQo+ID4+ICsNCj4gPj4gKyAgZ2RiX2J5dGUgKmdldF9s b2MgKCkNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4g Pj4gKyAgICAgIHJldHVybiB1LnB0cjsNCj4gPj4gKyAgICBlbHNlDQo+ID4+ICsgICAgICByZXR1 cm4gdS5idWY7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBib29sIGV4ZWN1dGUgKGdkYmFy Y2ggKmdkYmFyY2gpDQo+ID4+ICsgIHsNCj4gPj4gKyAgICAvKiBOb3RoaW5nIHRvIGRvIGlmIHRo ZSBtZW1vcnkgaXMgZmxhZ2dlZCBub3RfYWNjZXNzaWJsZS4gICovDQo+ID4+ICsgICAgaWYgKCFt ZW1fZW50cnlfYWNjZXNzaWJsZSkNCj4gPj4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4gPj4gKw0K PiA+PiArICAgIGdkYjo6Ynl0ZV92ZWN0b3IgYnVmIChsZW4pOw0KPiA+PiArDQo+ID4+ICsgICAg aWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ID4+ICsgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9n LA0KPiA+PiArCQkgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxfbWVtICVzIHRvICINCj4g Pj4gKwkJICAiaW5mZXJpb3IgYWRkciA9ICVzIGxlbiA9ICVkLlxuIiwNCj4gPj4gKwkJICBob3N0 X2FkZHJlc3NfdG9fc3RyaW5nICh0aGlzKSwNCj4gPj4gKwkJICBwYWRkcmVzcyAoZ2RiYXJjaCwg YWRkciksDQo+ID4+ICsJCSAgbGVuKTsNCj4gPj4gKw0KPiA+PiArICAgIGlmIChyZWNvcmRfcmVh ZF9tZW1vcnkgKGdkYmFyY2gsIGFkZHIsIGJ1Zi5kYXRhICgpLCBsZW4pKQ0KPiA+PiArICAgICAg bWVtX2VudHJ5X2FjY2Vzc2libGUgPSBmYWxzZTsNCj4gPj4gKyAgICBlbHNlDQo+ID4+ICsgICAg ICB7DQo+ID4+ICsJaWYgKHRhcmdldF93cml0ZV9tZW1vcnkgKGFkZHIsDQo+ID4+ICsJCQkJIGdl dF9sb2MgKCksDQo+ID4+ICsJCQkJIGxlbikpDQo+ID4+ICsJICB7DQo+ID4+ICsJICAgIG1lbV9l bnRyeV9hY2Nlc3NpYmxlID0gZmFsc2U7DQo+ID4+ICsJICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ ID4+ICsJICAgICAgd2FybmluZyAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHdyaXRpbmcgbWVt b3J5IGF0ICINCj4gPj4gKwkJCSAiYWRkciA9ICVzIGxlbiA9ICVkLiIpLA0KPiA+PiArCQkgICAg ICAgcGFkZHJlc3MgKGdkYmFyY2gsIGFkZHIpLA0KPiA+PiArCQkgICAgICAgbGVuKTsNCj4gPj4g KwkgIH0NCj4gPj4gKwllbHNlDQo+ID4+ICsJICB7DQo+ID4+ICsJICAgIG1lbWNweSAoZ2V0X2xv YyAoKSwgYnVmLmRhdGEgKCksIGxlbik7DQo+ID4+ICsNCj4gPj4gKwkgICAgLyogV2UndmUgY2hh bmdlZCBtZW1vcnkgLS0tIGNoZWNrIGlmIGEgaGFyZHdhcmUNCj4gPj4gKwkgICAgICAgd2F0Y2hw b2ludCBzaG91bGQgdHJhcC4gIE5vdGUgdGhhdCB0aGlzDQo+ID4+ICsJICAgICAgIHByZXNlbnRs eSBhc3N1bWVzIHRoZSB0YXJnZXQgYmVuZWF0aCBzdXBwb3J0cw0KPiA+PiArCSAgICAgICBjb250 aW51YWJsZSB3YXRjaHBvaW50cy4gIE9uIG5vbi1jb250aW51YWJsZQ0KPiA+PiArCSAgICAgICB3 YXRjaHBvaW50cyB0YXJnZXQsIHdlJ2xsIHdhbnQgdG8gY2hlY2sgdGhpcw0KPiA+PiArCSAgICAg ICBfYmVmb3JlXyBhY3R1YWxseSBkb2luZyB0aGUgbWVtb3J5IGNoYW5nZSwgYW5kDQo+ID4+ICsJ ICAgICAgIG5vdCBkb2luZyB0aGUgY2hhbmdlIGF0IGFsbCBpZiB0aGUgd2F0Y2hwb2ludA0KPiA+ PiArCSAgICAgICB0cmFwcy4gICovDQo+ID4+ICsJICAgIGlmIChoYXJkd2FyZV93YXRjaHBvaW50 X2luc2VydGVkX2luX3JhbmdlDQo+ID4+ICsJCShjdXJyZW50X2luZmVyaW9yICgpLT5hc3BhY2Uu Z2V0ICgpLCBhZGRyLCBsZW4pKQ0KPiA+PiArCSAgICAgIHJldHVybiB0cnVlOw0KPiA+PiArCSAg fQ0KPiA+PiArICAgICAgfQ0KPiA+PiArICAgIHJldHVybiBmYWxzZTsNCj4gPj4gKyAgfQ0KPiA+ PiAgIH07DQo+ID4+DQo+ID4+ICAgc3RydWN0IHJlY29yZF9mdWxsX3JlZ19lbnRyeQ0KPiA+PiBA QCAtMTEwLDYgKzIxNCw3MSBAQCBzdHJ1Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5DQo+ID4+ICAg ICAgIGdkYl9ieXRlICpwdHI7DQo+ID4+ICAgICAgIGdkYl9ieXRlIGJ1ZlsyICogc2l6ZW9mIChn ZGJfYnl0ZSAqKV07DQo+ID4+ICAgICB9IHU7DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxf cmVnX2VudHJ5ICgpIDogbnVtICgwKSwgbGVuICgwKSB7IH0NCj4gPj4gKw0KPiA+PiArICByZWNv cmRfZnVsbF9yZWdfZW50cnkgKGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pICB7DQo+ID4+ ICsgICAgbnVtID0gcmVnbnVtOw0KPiA+PiArICAgIGxlbiA9IHJlZ2lzdGVyX3NpemUgKGdkYmFy Y2gsIHJlZ251bSk7DQo+ID4+ICsgICAgaWYgKGxlbiA+IHNpemVvZiAodS5idWYpKQ0KPiA+PiAr ICAgICAgdS5wdHIgPSBuZXcgZ2RiX2J5dGVbbGVuXTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIHJlY29yZF9mdWxsX3JlZ19lbnRyeSAocmVjb3JkX2Z1bGxfcmVnX2VudHJ5ICYmb3RoZXIp ICB7DQo+ID4+ICsgICAgbnVtID0gb3RoZXIubnVtOw0KPiA+PiArICAgIGxlbiA9IG90aGVyLmxl bjsNCj4gPj4gKyAgICBtZW1jcHkgKHUuYnVmLCBvdGhlci51LmJ1Ziwgc2l6ZW9mICh1LmJ1Zikp Ow0KPiA+PiArICAgIC8qIFdpdGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJhbnRlZWQgdG8gbm90 IHRyeSB0byBmcmVlIHRoZQ0KPiA+PiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlzIGRlc3RydWN0 ZWQuICAqLw0KPiA+PiArICAgIG90aGVyLmxlbiA9IDA7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+ PiArICB+cmVjb3JkX2Z1bGxfcmVnX2VudHJ5ICgpDQo+ID4+ICsgIHsNCj4gPj4gKyAgICBpZiAo bGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ID4+ICsgICAgICBkZWxldGVbXSB1LnB0cjsNCj4gPj4g KyAgfQ0KPiA+PiArDQo+ID4+ICsgIHJlY29yZF9mdWxsX3JlZ19lbnRyeSAmb3BlcmF0b3I9KHJl Y29yZF9mdWxsX3JlZ19lbnRyeSAmJm90aGVyKSAgew0KPiA+PiArICAgIGdkYl9hc3NlcnQgKHRo aXMgIT0gJm90aGVyKTsNCj4gPj4gKyAgICBudW0gPSBvdGhlci5udW07DQo+ID4+ICsgICAgbGVu ID0gb3RoZXIubGVuOw0KPiA+PiArICAgIG1lbWNweSAodS5idWYsIG90aGVyLnUuYnVmLCBzaXpl b2YgKHUuYnVmKSk7DQo+ID4+ICsgICAgLyogV2l0aCBsZW4gPT0gMCwgT1RIRVIgaXMgZ3VhcmFu dGVlZCB0byBub3QgdHJ5IHRvIGZyZWUgdGhlDQo+ID4+ICsgICAgICAgbWVtb3J5IHdoZW4gaXQg aXMgZGVzdHJ1Y3RlZC4gICovDQo+ID4+ICsgICAgb3RoZXIubGVuID0gMDsNCj4gPj4gKyAgICBy ZXR1cm4gKnRoaXM7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBESVNBQkxFX0NPUFlfQU5E X0FTU0lHTiAocmVjb3JkX2Z1bGxfcmVnX2VudHJ5KTsNCj4gPj4gKw0KPiA+PiArICBnZGJfYnl0 ZSAqZ2V0X2xvYyAoKQ0KPiA+PiArICB7DQo+ID4+ICsgICAgaWYgKGxlbiA+IHNpemVvZiAodS5i dWYpKQ0KPiA+PiArICAgICAgcmV0dXJuIHUucHRyOw0KPiA+PiArICAgIGVsc2UNCj4gPj4gKyAg ICAgIHJldHVybiB1LmJ1ZjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGJvb2wgZXhlY3V0 ZSAocmVnY2FjaGUgKnJlZ2NhY2hlKQ0KPiA+PiArICB7DQo+ID4+ICsgICAgZ2RiOjpieXRlX3Zl Y3RvciBidWYgKGxlbik7DQo+ID4+ICsNCj4gPj4gKyAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkN Cj4gPj4gKyAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ICsJCSAgIlByb2Nlc3Mg cmVjb3JkOiByZWNvcmRfZnVsbF9yZWcgJXMgdG8gIg0KPiA+PiArCQkgICJpbmZlcmlvciBudW0g PSAlZC5cbiIsDQo+ID4+ICsJCSAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAodGhpcyksDQo+ID4+ ICsJCSAgbnVtKTsNCj4gPj4gKw0KPiA+PiArICAgIHJlZ2NhY2hlLT5jb29rZWRfcmVhZCAobnVt LCBidWYpOw0KPiA+PiArICAgIHJlZ2NhY2hlLT5jb29rZWRfd3JpdGUgKG51bSwgZ2V0X2xvYyAo KSk7DQo+ID4+ICsgICAgbWVtY3B5IChnZXRfbG9jICgpLCBidWYuZGF0YSAoKSwgbGVuKTsNCj4g Pj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ID4+ICsgIH0NCj4gPj4gICB9Ow0KPiA+Pg0KPiA+PiAg IGVudW0gcmVjb3JkX2Z1bGxfdHlwZQ0KPiA+PiBAQCAtMTE4LDE2ICsyODcsODggQEAgZW51bSBy ZWNvcmRfZnVsbF90eXBlDQo+ID4+ICAgICByZWNvcmRfZnVsbF9tZW0NCj4gPj4gICB9Ow0KPiA+ Pg0KPiA+PiAtc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5DQo+ID4+ICtjbGFzcyByZWNvcmRfZnVs bF9lbnRyeQ0KPiA+PiAgIHsNCj4gPj4gLSAgZW51bSByZWNvcmRfZnVsbF90eXBlIHR5cGU7DQo+ ID4+IC0gIHVuaW9uDQo+ID4+ICsgIHN0ZDo6dmFyaWFudDxyZWNvcmRfZnVsbF9yZWdfZW50cnks IHJlY29yZF9mdWxsX21lbV9lbnRyeT4gZW50cnk7DQo+ID4+ICsNCj4gPj4gK3B1YmxpYzoNCj4g Pj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkgKCkgOiBlbnRyeSAocmVjb3JkX2Z1bGxfcmVnX2VudHJ5 ICgpKSB7fQ0KPiA+PiArDQo+ID4+ICsgIC8qIENvbnN0cnVjdG9yIGZvciBhIHJlZ2lzdGVyIGVu dHJ5LiAgVHlwZSBpcyBoZXJlIHRvIG1ha2UgaXQNCj4gPj4gKyAgICAgZWFzaWVyIHRvIHJlY29n bml6ZSBpdCBpbiB0aGUgY29uc3RydWN0b3IgY2FsbHMsIGl0IGlzbid0DQo+ID4+ICsgICAgIGFj dHVhbGx5IGltcG9ydGFudC4gICovDQo+ID4+ICsgIHJlY29yZF9mdWxsX2VudHJ5IChyZWNvcmRf ZnVsbF90eXBlIHJlZ190eXBlLCBnZGJhcmNoICpnZGJhcmNoLA0KPiA+PiArCQkgICAgIGludCBy ZWdudW0pDQo+ID4+ICsgIDogZW50cnkocmVjb3JkX2Z1bGxfcmVnX2VudHJ5IChnZGJhcmNoLCBy ZWdudW0pKQ0KPiA+PiAgICAgew0KPiA+PiAtICAgIC8qIHJlZyAqLw0KPiA+PiAtICAgIHN0cnVj dCByZWNvcmRfZnVsbF9yZWdfZW50cnkgcmVnOw0KPiA+PiAtICAgIC8qIG1lbSAqLw0KPiA+PiAt ICAgIHN0cnVjdCByZWNvcmRfZnVsbF9tZW1fZW50cnkgbWVtOw0KPiA+PiAtICB9IHU7DQo+ID4+ ICsgICAgZ2RiX2Fzc2VydCAocmVnX3R5cGUgPT0gcmVjb3JkX2Z1bGxfcmVnKTsgIH0NCj4gPj4g Kw0KPiA+PiArICByZWNvcmRfZnVsbF9lbnRyeSAocmVjb3JkX2Z1bGxfdHlwZSBtZW1fdHlwZSwg Q09SRV9BRERSIGFkZHIsIGludA0KPiA+PiArIGxlbikNCj4gPj4gKyAgOiBlbnRyeShyZWNvcmRf ZnVsbF9tZW1fZW50cnkgKGFkZHIsIGxlbikpICB7DQo+ID4+ICsgICAgZ2RiX2Fzc2VydCAobWVt X3R5cGUgPT0gcmVjb3JkX2Z1bGxfbWVtKTsgIH0NCj4gPj4gKw0KPiA+PiArICByZWNvcmRfZnVs bF9lbnRyeSAocmVjb3JkX2Z1bGxfZW50cnkgJiZvdGhlcikNCj4gPj4gKyAgOiBlbnRyeSAoc3Rk Ojptb3ZlIChvdGhlci5lbnRyeSkpDQo+ID4+ICsgIHsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChyZWNvcmRfZnVsbF9lbnRyeSk7DQo+ID4+ICsN Cj4gPj4gKyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5JiByZWcgKCkNCj4gPj4gKyAgew0KPiA+PiAr ICAgIGdkYl9hc3NlcnQgKHR5cGUgKCkgPT0gcmVjb3JkX2Z1bGxfcmVnKTsNCj4gPj4gKyAgICBy ZXR1cm4gc3RkOjpnZXQ8cmVjb3JkX2Z1bGxfcmVnX2VudHJ5PiAoZW50cnkpOyAgfQ0KPiA+PiAr DQo+ID4+ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSYgbWVtICgpDQo+ID4+ICsgIHsNCj4gPj4g KyAgICBnZGJfYXNzZXJ0ICh0eXBlICgpID09IHJlY29yZF9mdWxsX21lbSk7DQo+ID4+ICsgICAg cmV0dXJuIHN0ZDo6Z2V0PHJlY29yZF9mdWxsX21lbV9lbnRyeT4gKGVudHJ5KTsgIH0NCj4gPj4g Kw0KPiA+PiArICByZWNvcmRfZnVsbF90eXBlIHR5cGUgKCkgY29uc3QNCj4gPj4gKyAgew0KPiA+ PiArICAgIHN3aXRjaCAoZW50cnkuaW5kZXggKCkpDQo+ID4+ICsgICAgew0KPiA+PiArICAgIGNh c2UgMDoNCj4gPj4gKyAgICAgIHJldHVybiByZWNvcmRfZnVsbF9yZWc7DQo+ID4+ICsgICAgY2Fz ZSAxOg0KPiA+PiArICAgICAgcmV0dXJuIHJlY29yZF9mdWxsX21lbTsNCj4gPj4gKyAgICB9DQo+ ID4+ICsgICAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoIkltcG9zc2libGUgdmFyaWFudCBpbmRl eCIpOyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgZGF0YSBz dG9yZWQgYnkgdGhpcyBlbnRyeS4gICovICBnZGJfYnl0ZQ0KPiA+PiArICpnZXRfbG9jICgpICB7 DQo+ID4+ICsgICAgc3dpdGNoICh0eXBlICgpKQ0KPiA+PiArICAgIHsNCj4gPj4gKyAgICBjYXNl IHJlY29yZF9mdWxsX3JlZzoNCj4gPj4gKyAgICAgIHJldHVybiByZWcgKCkuZ2V0X2xvYyAoKTsN Cj4gPj4gKyAgICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gPj4gKyAgICAgIHJldHVybiBtZW0g KCkuZ2V0X2xvYyAoKTsNCj4gPj4gKyAgICB9DQo+ID4+ICsgICAgZ2RiX2Fzc2VydF9ub3RfcmVh Y2hlZCAoIkltcG9zc2libGUgZW50cnkgdHlwZSIpOyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8qIEV4 ZWN1dGUgdGhpcyBlbnRyeSwgc3dhcHBpbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmcm9tIG1l bW9yeSBvcg0KPiA+PiArICAgICByZWdpc3RlciBhbmQgdGhlIHJlY29yZGVkIG9uZXMuICBSZXR1 cm5zIFRSVUUgaWYgdGhlIGV4ZWN1dGlvbiB3YXMNCj4gPj4gKyAgICAgc3RvcHBlZCBieSBhIHdh dGNocG9pbnQuICAqLw0KPiA+PiArDQo+ID4+ICsgIGJvb2wgZXhlY3V0ZSAocmVnY2FjaGUgKnJl Z2NhY2hlKQ0KPiA+PiArICB7DQo+ID4+ICsgICAgc3dpdGNoICh0eXBlICgpKQ0KPiA+PiArICAg ICAgew0KPiA+PiArICAgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ID4+ICsJcmV0dXJuIHJl ZyAoKS5leGVjdXRlIChyZWdjYWNoZSk7DQo+ID4+ICsgICAgICBjYXNlIHJlY29yZF9mdWxsX21l bToNCj4gPj4gKwlyZXR1cm4gbWVtICgpLmV4ZWN1dGUgKHJlZ2NhY2hlLT5hcmNoICgpKTsNCj4g Pj4gKyAgICAgIH0NCj4gPj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ID4+ICsgIH0NCj4gPj4gICB9 Ow0KPiA+Pg0KPiA+PiAgIC8qIFRoaXMgaXMgdGhlIG1haW4gc3RydWN0dXJlIHRoYXQgY29tcHJp c2VzIHRoZSBleGVjdXRpb24gbG9nLg0KPiA+PiBAQCAtMzg2LDkxICs2MjcsMTIgQEAgc3RhdGlj IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50DQo+ID4+ICpyZWNvcmRfZnVsbF9jbWRsaXN0OyAgc3Rh dGljIHZvaWQgcmVjb3JkX2Z1bGxfZ290b19pbnNuIChzaXplX3QgdGFyZ2V0X2luc24sDQo+ID4+ ICAgCQkJCSAgIGVudW0gZXhlY19kaXJlY3Rpb25fa2luZCBkaXIpOw0KPiA+Pg0KPiA+PiAtLyog SW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgZnVuY3Rpb25zIGZvciByZWNvcmRfZnVsbF9yZWcg YW5kDQo+ID4+IC0gICByZWNvcmRfZnVsbF9tZW0gZW50cmllcy4gICovDQo+ID4+IC0NCj4gPj4g LS8qIEluaXQgYSByZWNvcmRfZnVsbF9yZWcgcmVjb3JkIGVudHJ5LiAgKi8NCj4gPj4gLQ0KPiA+ PiAtc3RhdGljIGlubGluZSByZWNvcmRfZnVsbF9lbnRyeQ0KPiA+PiAtcmVjb3JkX2Z1bGxfcmVn X2luaXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0pIC17DQo+ID4+IC0g IHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gPj4gLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSByZWdjYWNoZS0+YXJjaCAoKTsNCj4gPj4gLQ0KPiA+PiAtICByZWMudHlwZSA9IHJlY29yZF9m dWxsX3JlZzsNCj4gPj4gLSAgcmVjLnUucmVnLm51bSA9IHJlZ251bTsNCj4gPj4gLSAgcmVjLnUu cmVnLmxlbiA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ251bSk7DQo+ID4+IC0gIGlmIChy ZWMudS5yZWcubGVuID4gc2l6ZW9mIChyZWMudS5yZWcudS5idWYpKQ0KPiA+PiAtICAgIHJlYy51 LnJlZy51LnB0ciA9IChnZGJfYnl0ZSAqKSB4bWFsbG9jIChyZWMudS5yZWcubGVuKTsNCj4gPj4g LQ0KPiA+PiAtICByZXR1cm4gcmVjOw0KPiA+PiAtfQ0KPiA+PiAtDQo+ID4+IC0vKiBDbGVhbnVw IGEgcmVjb3JkX2Z1bGxfcmVnIHJlY29yZCBlbnRyeS4gICovDQo+ID4+IC0NCj4gPj4gLXN0YXRp YyBpbmxpbmUgdm9pZA0KPiA+PiAtcmVjb3JkX2Z1bGxfcmVnX2NsZWFudXAgKHJlY29yZF9mdWxs X2VudHJ5IHJlYykgLXsNCj4gPj4gLSAgZ2RiX2Fzc2VydCAocmVjLnR5cGUgPT0gcmVjb3JkX2Z1 bGxfcmVnKTsNCj4gPj4gLSAgaWYgKHJlYy51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy51LnJlZy51 LmJ1ZikpDQo+ID4+IC0gICAgeGZyZWUgKHJlYy51LnJlZy51LnB0cik7DQo+ID4+IC19DQo+ID4+ IC0NCj4gPj4gLS8qIEluaXQgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8NCj4g Pj4gLQ0KPiA+PiAtc3RhdGljIGlubGluZSByZWNvcmRfZnVsbF9lbnRyeQ0KPiA+PiAtcmVjb3Jk X2Z1bGxfbWVtX2luaXQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKSAtew0KPiA+PiAtICByZWNv cmRfZnVsbF9lbnRyeSByZWM7DQo+ID4+IC0NCj4gPj4gLSAgcmVjLnR5cGUgPSByZWNvcmRfZnVs bF9tZW07DQo+ID4+IC0gIHJlYy51Lm1lbS5hZGRyID0gYWRkcjsNCj4gPj4gLSAgcmVjLnUubWVt LmxlbiA9IGxlbjsNCj4gPj4gLSAgaWYgKHJlYy51Lm1lbS5sZW4gPiBzaXplb2YgKHJlYy51Lm1l bS51LmJ1ZikpDQo+ID4+IC0gICAgcmVjLnUubWVtLnUucHRyID0gKGdkYl9ieXRlICopIHhtYWxs b2MgKGxlbik7DQo+ID4+IC0gIHJlYy51Lm1lbS5tZW1fZW50cnlfbm90X2FjY2Vzc2libGUgPSAw Ow0KPiA+PiAtDQo+ID4+IC0gIHJldHVybiByZWM7DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gLS8q IENsZWFudXAgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8NCj4gPj4gLQ0KPiA+ PiAtc3RhdGljIGlubGluZSB2b2lkDQo+ID4+IC1yZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAocmVj b3JkX2Z1bGxfZW50cnkgcmVjKSAtew0KPiA+PiAtICBnZGJfYXNzZXJ0IChyZWMudHlwZSA9PSBy ZWNvcmRfZnVsbF9tZW0pOw0KPiA+PiAtICBpZiAocmVjLnUubWVtLmxlbiA+IHNpemVvZiAocmVj LnUubWVtLnUuYnVmKSkNCj4gPj4gLSAgICB4ZnJlZSAocmVjLnUubWVtLnUucHRyKTsNCj4gPj4g LX0NCj4gPj4gLQ0KPiA+PiAtLyogRnJlZSBvbmUgcmVjb3JkIGVudHJ5LCBhbnkgdHlwZS4gICov DQo+ID4+IC0NCj4gPj4gLXN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiAtcmVjb3JkX2Z1bGxfZW50 cnlfY2xlYW51cCAocmVjb3JkX2Z1bGxfZW50cnkgcmVjKSAtew0KPiA+PiAtDQo+ID4+IC0gIHN3 aXRjaCAocmVjLnR5cGUpIHsNCj4gPj4gLSAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ID4+IC0g ICAgcmVjb3JkX2Z1bGxfcmVnX2NsZWFudXAgKHJlYyk7DQo+ID4+IC0gICAgYnJlYWs7DQo+ID4+ IC0gIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOg0KPiA+PiAtICAgIHJlY29yZF9mdWxsX21lbV9jbGVh bnVwIChyZWMpOw0KPiA+PiAtICAgIGJyZWFrOw0KPiA+PiAtICB9DQo+ID4+IC19DQo+ID4+IC0N Cj4gPj4gICBzdGF0aWMgdm9pZA0KPiA+PiAgIHJlY29yZF9mdWxsX3Jlc2V0X2hpc3RvcnkgKCkN Cj4gPj4gICB7DQo+ID4+ICAgICByZWNvcmRfZnVsbF9pbnNuX2NvdW50ID0gMDsNCj4gPj4gICAg IHJlY29yZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+ID4+DQo+ID4+IC0gIGZvciAoYXV0byAmaW5z biA6IHJlY29yZF9mdWxsX2xpc3QpDQo+ID4+IC0gICAgew0KPiA+PiAtICAgICAgZm9yIChhdXRv ICZlbnRyeSA6IGluc24uZWZmZWN0cykNCj4gPj4gLQlyZWNvcmRfZnVsbF9lbnRyeV9jbGVhbnVw IChlbnRyeSk7DQo+ID4+IC0gICAgfQ0KPiA+PiAtDQo+ID4+ICAgICByZWNvcmRfZnVsbF9saXN0 LmNsZWFyICgpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gQEAgLTQ4MCwxMSArNjQyLDcgQEAgc3Rh dGljIHZvaWQNCj4gPj4gICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChpbnQg aW5kZXgpICB7DQo+ID4+ICAgICBmb3IgKGludCBpID0gcmVjb3JkX2Z1bGxfbGlzdC5zaXplICgp IC0gMTsgaSA+IGluZGV4OyBpLS0pDQo+ID4+IC0gICAgew0KPiA+PiAtICAgICAgZm9yIChhdXRv ICZlbnRyeSA6IHJlY29yZF9mdWxsX2xpc3RbaV0uZWZmZWN0cykNCj4gPj4gLQlyZWNvcmRfZnVs bF9lbnRyeV9jbGVhbnVwIChlbnRyeSk7DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9saXN0LnBv cF9iYWNrICgpOw0KPiA+PiAtICAgIH0NCj4gPj4gKyAgICByZWNvcmRfZnVsbF9saXN0LnBvcF9i YWNrICgpOw0KPiA+PiAgICAgLyogU2V0IHRoZSBuZXh0IGluc3RydWN0aW9uIHRvIGJlIHBhc3Qg dGhlIGVuZCBvZiB0aGUgbG9nIHNvIHdlDQo+ID4+ICAgICAgICBzdGFydCByZWNvcmRpbmcgaWYg dGhlIHVzZXIgbW92ZXMgZm9yd2FyZCBhZ2Fpbi4gICovDQo+ID4+ICAgICByZWNvcmRfZnVsbF9u ZXh0X2luc24gPSBpbmRleDsNCj4gPj4gQEAgLTUxMyw5ICs2NzEsNiBAQCByZWNvcmRfZnVsbF9s aXN0X3JlbGVhc2VfZmlyc3QgKHZvaWQpDQo+ID4+ICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC5l bXB0eSAoKSkNCj4gPj4gICAgICAgcmV0dXJuOw0KPiA+Pg0KPiA+PiAtICBmb3IgKGF1dG8gJmVu dHJ5IDogcmVjb3JkX2Z1bGxfbGlzdFswXS5lZmZlY3RzKQ0KPiA+PiAtICAgIHJlY29yZF9mdWxs X2VudHJ5X2NsZWFudXAgKGVudHJ5KTsNCj4gPj4gLQ0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfbGlz dC5wb3BfZnJvbnQgKCk7DQo+ID4+ICAgICAtLXJlY29yZF9mdWxsX25leHRfaW5zbjsNCj4gPj4g ICB9DQo+ID4+IEBAIC01MjUsMjggKzY4MCw3IEBAIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9m aXJzdCAodm9pZCkgIHN0YXRpYw0KPiA+PiB2b2lkIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGQg KHJlY29yZF9mdWxsX2VudHJ5ICZyZWMpICB7DQo+ID4+IC0gIHJlY29yZF9mdWxsX2luY29tcGxl dGVfaW5zdHJ1Y3Rpb24uZWZmZWN0cy5wdXNoX2JhY2sgKHJlYyk7IC19DQo+ID4+IC0NCj4gPj4g LS8qIFJldHVybiB0aGUgdmFsdWUgc3RvcmFnZSBsb2NhdGlvbiBvZiBhIHJlY29yZCBlbnRyeS4g ICovIC1zdGF0aWMNCj4gPj4gaW5saW5lIGdkYl9ieXRlICogLXJlY29yZF9mdWxsX2dldF9sb2Mg KHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeQ0KPiA+PiAqcmVjKSAtew0KPiA+PiAtICBzd2l0Y2gg KHJlYy0+dHlwZSkgew0KPiA+PiAtICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gPj4gLSAgICBp ZiAocmVjLT51Lm1lbS5sZW4gPiBzaXplb2YgKHJlYy0+dS5tZW0udS5idWYpKQ0KPiA+PiAtICAg ICAgcmV0dXJuIHJlYy0+dS5tZW0udS5wdHI7DQo+ID4+IC0gICAgZWxzZQ0KPiA+PiAtICAgICAg cmV0dXJuIHJlYy0+dS5tZW0udS5idWY7DQo+ID4+IC0gIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0K PiA+PiAtICAgIGlmIChyZWMtPnUucmVnLmxlbiA+IHNpemVvZiAocmVjLT51LnJlZy51LmJ1Zikp DQo+ID4+IC0gICAgICByZXR1cm4gcmVjLT51LnJlZy51LnB0cjsNCj4gPj4gLSAgICBlbHNlDQo+ ID4+IC0gICAgICByZXR1cm4gcmVjLT51LnJlZy51LmJ1ZjsNCj4gPj4gLSAgZGVmYXVsdDoNCj4g Pj4gLSAgICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgidW5leHBlY3RlZCByZWNvcmRfZnVsbF9l bnRyeSB0eXBlIik7DQo+ID4+IC0gICAgcmV0dXJuIE5VTEw7DQo+ID4+IC0gIH0NCj4gPj4gKyAg cmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5lZmZlY3RzLnB1c2hfYmFjayAoc3Rk Ojptb3ZlDQo+ID4+ICsgKHJlYykpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gICAvKiBSZWNvcmQg dGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgTlVNIHRvIHJlY29yZF9mdWxsX2FyY2hfbGlzdC4gICov DQo+ID4+IEBAIC01NTQsNw0KPiA+PiArNjg4LDcgQEAgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoc3Ry dWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpICBpbnQNCj4gPj4gcmVjb3JkX2Z1bGxfYXJjaF9s aXN0X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0pDQo+ID4+ IHsNCj4gPj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiA+PiArICByZWNvcmRfZnVsbF9l bnRyeSByZWMgKHJlY29yZF9mdWxsX3JlZywgcmVnY2FjaGUtPmFyY2ggKCksDQo+ID4+ICsgcmVn bnVtKTsNCj4gPj4NCj4gPj4gICAgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiA+PiAgICAgICBn ZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiA+PiBAQCAtNTYyLDkgKzY5Niw3IEBAIHJlY29yZF9m dWxsX2FyY2hfbGlzdF9hZGRfcmVnIChzdHJ1Y3QgcmVnY2FjaGUNCj4gPj4gKnJlZ2NhY2hlLCBp bnQgcmVnbnVtKQ0KPiA+PiAgIAkJInJlY29yZCBsaXN0LlxuIiwNCj4gPj4gICAJCXJlZ251bSk7 DQo+ID4+DQo+ID4+IC0gIHJlYyA9IHJlY29yZF9mdWxsX3JlZ19pbml0IChyZWdjYWNoZSwgcmVn bnVtKTsNCj4gPj4gLQ0KPiA+PiAtICByZWdjYWNoZS0+Y29va2VkX3JlYWQgKHJlZ251bSwgcmVj b3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYykpOw0KPiA+PiArICByZWdjYWNoZS0+Y29va2VkX3JlYWQg KHJlZ251bSwgcmVjLmdldF9sb2MgKCkpOw0KPiA+Pg0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfYXJj aF9saXN0X2FkZCAocmVjKTsNCj4gPj4NCj4gPj4gQEAgLTU3Nyw3ICs3MDksNyBAQCByZWNvcmRf ZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAoc3RydWN0IHJlZ2NhY2hlDQo+ID4+ICpyZWdjYWNoZSwg aW50IHJlZ251bSkgIGludCAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9tZW0gKENPUkVfQURE Ug0KPiA+PiBhZGRyLCBpbnQgbGVuKSAgew0KPiA+PiAtICByZWNvcmRfZnVsbF9lbnRyeSByZWM7 DQo+ID4+ICsgIHJlY29yZF9mdWxsX2VudHJ5IHJlYyAocmVjb3JkX2Z1bGxfbWVtLCBhZGRyLCBs ZW4pOw0KPiA+Pg0KPiA+PiAgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ID4+ICAgICAgIGdk Yl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IEBAIC01ODgsMTQgKzcyMCw5IEBAIHJlY29yZF9m dWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFINCj4gYWRkciwNCj4gPj4gaW50IGxlbikN Cj4gPj4gICAgIGlmICghYWRkcikJLyogRklYTUU6IFdoeT8gIFNvbWUgYXJjaCBtdXN0IHBlcm1p dCBpdC4uLiAgKi8NCj4gPj4gICAgICAgcmV0dXJuIDA7DQo+ID4+DQo+ID4+IC0gIHJlYyA9IHJl Y29yZF9mdWxsX21lbV9pbml0IChhZGRyLCBsZW4pOw0KPiA+PiAtDQo+ID4+ICAgICBpZiAocmVj b3JkX3JlYWRfbWVtb3J5IChjdXJyZW50X2luZmVyaW9yICgpLT5hcmNoICgpLCBhZGRyLA0KPiA+ PiAtCQkJICByZWNvcmRfZnVsbF9nZXRfbG9jICgmcmVjKSwgbGVuKSkNCj4gPj4gLSAgICB7DQo+ ID4+IC0gICAgICByZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAocmVjKTsNCj4gPj4gLSAgICAgIHJl dHVybiAtMTsNCj4gPj4gLSAgICB9DQo+ID4+ICsJCQkgIHJlYy5nZXRfbG9jICgpLCBsZW4pKQ0K PiA+PiArICAgIHJldHVybiAtMTsNCj4gPj4NCj4gPj4gICAgIHJlY29yZF9mdWxsX2FyY2hfbGlz dF9hZGQgKHJlYyk7DQo+ID4+DQo+ID4+IEBAIC03MjMsOTEgKzg1MCw2IEBAIHJlY29yZF9mdWxs X2dkYl9vcGVyYXRpb25fZGlzYWJsZV9zZXQgKHZvaWQpDQo+ID4+IHN0YXRpYyBlbnVtIHRhcmdl dF9zdG9wX3JlYXNvbiByZWNvcmRfZnVsbF9zdG9wX3JlYXNvbg0KPiA+PiAgICAgPSBUQVJHRVRf U1RPUFBFRF9CWV9OT19SRUFTT047DQo+ID4+DQo+ID4+IC0vKiBFeGVjdXRlIG9uZSBpbnN0cnVj dGlvbiBmcm9tIHRoZSByZWNvcmQgbG9nLiAgRWFjaCBpbnN0cnVjdGlvbiBpbg0KPiA+PiAtICAg dGhlIGxvZyB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBy ZWdpc3Rlcg0KPiA+PiAtICAgZW50cmllcyBhbmQgbWVtb3J5IGVudHJpZXMsIGZvbGxvd2VkIGJ5 IGFuICdlbmQnIGVudHJ5LiAgKi8NCj4gPj4gLQ0KPiA+PiAtc3RhdGljIGlubGluZSB2b2lkDQo+ ID4+IC1yZWNvcmRfZnVsbF9leGVjX2VudHJ5IChyZWdjYWNoZSAqcmVnY2FjaGUsDQo+ID4+IC0J CQlnZGJhcmNoICpnZGJhcmNoLA0KPiA+PiAtCQkJcmVjb3JkX2Z1bGxfZW50cnkgKmVudHJ5KQ0K PiA+PiAtew0KPiA+PiAtICBzd2l0Y2ggKGVudHJ5LT50eXBlKQ0KPiA+PiAtICAgIHsNCj4gPj4g LSAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVnICovDQo+ID4+IC0gICAgICB7DQo+ID4+ IC0JZ2RiOjpieXRlX3ZlY3RvciByZWcgKGVudHJ5LT51LnJlZy5sZW4pOw0KPiA+PiAtDQo+ID4+ IC0JaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ID4+IC0JICBnZGJfcHJpbnRmIChnZGJfc3RkbG9n LA0KPiA+PiAtCQkgICAgICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9mdWxsX3JlZyAlcyB0byAi DQo+ID4+IC0JCSAgICAgICJpbmZlcmlvciBudW0gPSAlZC5cbiIsDQo+ID4+IC0JCSAgICAgIGhv c3RfYWRkcmVzc190b19zdHJpbmcgKGVudHJ5KSwNCj4gPj4gLQkJICAgICAgZW50cnktPnUucmVn Lm51bSk7DQo+ID4+IC0NCj4gPj4gLQlyZWdjYWNoZS0+Y29va2VkX3JlYWQgKGVudHJ5LT51LnJl Zy5udW0sIHJlZy5kYXRhICgpKTsNCj4gPj4gLQlyZWdjYWNoZS0+Y29va2VkX3dyaXRlIChlbnRy eS0+dS5yZWcubnVtLCByZWNvcmRfZnVsbF9nZXRfbG9jDQo+ID4+IChlbnRyeSkpOw0KPiA+PiAt CW1lbWNweSAocmVjb3JkX2Z1bGxfZ2V0X2xvYyAoZW50cnkpLCByZWcuZGF0YSAoKSwgZW50cnkt PnUucmVnLmxlbik7DQo+ID4+IC0gICAgICB9DQo+ID4+IC0gICAgICBicmVhazsNCj4gPj4gLQ0K PiA+PiAtICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOiAvKiBtZW0gKi8NCj4gPj4gLSAgICAgIHsN Cj4gPj4gLQkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZSBlbnRyeSBpcyBmbGFnZ2VkIG5vdF9hY2Nl c3NpYmxlLiAgKi8NCj4gPj4gLQlpZiAoIWVudHJ5LT51Lm1lbS5tZW1fZW50cnlfbm90X2FjY2Vz c2libGUpDQo+ID4+IC0JICB7DQo+ID4+IC0JICAgIGdkYjo6Ynl0ZV92ZWN0b3IgbWVtIChlbnRy eS0+dS5tZW0ubGVuKTsNCj4gPj4gLQ0KPiA+PiAtCSAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkN Cj4gPj4gLQkgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiA+PiAtCQkJICAiUHJvY2Vz cyByZWNvcmQ6IHJlY29yZF9mdWxsX21lbSAlcyB0byAiDQo+ID4+IC0JCQkgICJpbmZlcmlvciBh ZGRyID0gJXMgbGVuID0gJWQuXG4iLA0KPiA+PiAtCQkJICBob3N0X2FkZHJlc3NfdG9fc3RyaW5n IChlbnRyeSksDQo+ID4+IC0JCQkgIHBhZGRyZXNzIChnZGJhcmNoLCBlbnRyeS0+dS5tZW0uYWRk ciksDQo+ID4+IC0JCQkgIGVudHJ5LT51Lm1lbS5sZW4pOw0KPiA+PiAtDQo+ID4+IC0JICAgIGlm IChyZWNvcmRfcmVhZF9tZW1vcnkgKGdkYmFyY2gsDQo+ID4+IC0JCQkJICAgIGVudHJ5LT51Lm1l bS5hZGRyLCBtZW0uZGF0YSAoKSwNCj4gPj4gLQkJCQkgICAgZW50cnktPnUubWVtLmxlbikpDQo+ ID4+IC0JICAgICAgZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSA9IDE7DQo+ ID4+IC0JICAgIGVsc2UNCj4gPj4gLQkgICAgICB7DQo+ID4+IC0JCWlmICh0YXJnZXRfd3JpdGVf bWVtb3J5IChlbnRyeS0+dS5tZW0uYWRkciwNCj4gPj4gLQkJCQkJIHJlY29yZF9mdWxsX2dldF9s b2MgKGVudHJ5KSwNCj4gPj4gLQkJCQkJIGVudHJ5LT51Lm1lbS5sZW4pKQ0KPiA+PiAtCQkgIHsN Cj4gPj4gLQkJICAgIGVudHJ5LT51Lm1lbS5tZW1fZW50cnlfbm90X2FjY2Vzc2libGUgPSAxOw0K PiA+PiAtCQkgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gLQkJICAgICAgd2FybmluZyAoXygi UHJvY2VzcyByZWNvcmQ6IGVycm9yIHdyaXRpbmcgbWVtb3J5IGF0ICINCj4gPj4gLQkJCQkgImFk ZHIgPSAlcyBsZW4gPSAlZC4iKSwNCj4gPj4gLQkJCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwg ZW50cnktPnUubWVtLmFkZHIpLA0KPiA+PiAtCQkJICAgICAgIGVudHJ5LT51Lm1lbS5sZW4pOw0K PiA+PiAtCQkgIH0NCj4gPj4gLQkJZWxzZQ0KPiA+PiAtCQkgIHsNCj4gPj4gLQkJICAgIG1lbWNw eSAocmVjb3JkX2Z1bGxfZ2V0X2xvYyAoZW50cnkpLCBtZW0uZGF0YSAoKSwNCj4gPj4gLQkJCSAg ICBlbnRyeS0+dS5tZW0ubGVuKTsNCj4gPj4gLQ0KPiA+PiAtCQkgICAgLyogV2UndmUgY2hhbmdl ZCBtZW1vcnkgLS0tIGNoZWNrIGlmIGEgaGFyZHdhcmUNCj4gPj4gLQkJICAgICAgIHdhdGNocG9p bnQgc2hvdWxkIHRyYXAuICBOb3RlIHRoYXQgdGhpcw0KPiA+PiAtCQkgICAgICAgcHJlc2VudGx5 IGFzc3VtZXMgdGhlIHRhcmdldCBiZW5lYXRoIHN1cHBvcnRzDQo+ID4+IC0JCSAgICAgICBjb250 aW51YWJsZSB3YXRjaHBvaW50cy4gIE9uIG5vbi1jb250aW51YWJsZQ0KPiA+PiAtCQkgICAgICAg d2F0Y2hwb2ludHMgdGFyZ2V0LCB3ZSdsbCB3YW50IHRvIGNoZWNrIHRoaXMNCj4gPj4gLQkJICAg ICAgIF9iZWZvcmVfIGFjdHVhbGx5IGRvaW5nIHRoZSBtZW1vcnkgY2hhbmdlLCBhbmQNCj4gPj4g LQkJICAgICAgIG5vdCBkb2luZyB0aGUgY2hhbmdlIGF0IGFsbCBpZiB0aGUgd2F0Y2hwb2ludA0K PiA+PiAtCQkgICAgICAgdHJhcHMuICAqLw0KPiA+PiAtCQkgICAgaWYgKGhhcmR3YXJlX3dhdGNo cG9pbnRfaW5zZXJ0ZWRfaW5fcmFuZ2UNCj4gPj4gLQkJCShjdXJyZW50X2luZmVyaW9yICgpLT5h c3BhY2UuZ2V0ICgpLA0KPiA+PiAtCQkJIGVudHJ5LT51Lm1lbS5hZGRyLCBlbnRyeS0+dS5tZW0u bGVuKSkNCj4gPj4gLQkJICAgICAgcmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24gPQ0KPiA+PiBUQVJH RVRfU1RPUFBFRF9CWV9XQVRDSFBPSU5UOw0KPiA+PiAtCQkgIH0NCj4gPj4gLQkgICAgICB9DQo+ ID4+IC0JICB9DQo+ID4+IC0gICAgICB9DQo+ID4+IC0gICAgICBicmVhazsNCj4gPj4gLSAgICB9 DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gICAvKiBFeGVjdXRlIG9uZSBlbnRyeSBpbiB0aGUgbG9n IGJ5IGV4ZWN1dGluZyBhbGwgdGhlIGVmZmVjdHMuICAqLw0KPiA+Pg0KPiA+PiAgIHN0YXRpYyBp bmxpbmUgdm9pZA0KPiA+PiBAQCAtODE2LDcgKzg1OCw4IEBAIHJlY29yZF9mdWxsX2V4ZWNfaW5z biAocmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+PiAgIAkJICAgICAgIHJlY29yZF9mdWxsX2luc3Ry dWN0aW9uICZpbnNuKSAgew0KPiA+PiAgICAgZm9yIChhdXRvICZlbnRyeSA6IGluc24uZWZmZWN0 cykNCj4gPj4gLSAgICByZWNvcmRfZnVsbF9leGVjX2VudHJ5IChyZWdjYWNoZSwgZ2RiYXJjaCwg JmVudHJ5KTsNCj4gPj4gKyAgICBpZiAoZW50cnkuZXhlY3V0ZSAocmVnY2FjaGUpKQ0KPiA+PiAr ICAgICAgcmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24gPSBUQVJHRVRfU1RPUFBFRF9CWV9XQVRDSFBP SU5UOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gICBzdGF0aWMgdm9pZCByZWNvcmRfZnVsbF9yZXN0 b3JlIChzdHJ1Y3QgYmZkICZjYmZkKTsgQEAgLTIxOTMsMjENCj4gPj4gKzIyMzYsMTkgQEAgcmVj b3JkX2Z1bGxfcmVhZF9lbnRyeV9mcm9tX2JmZCAoYmZkICpjYmZkLCBhc2VjdGlvbg0KPiA+PiAq b3NlYywgaW50DQo+ID4+ICpiZmRfb2Zmc2V0KQ0KPiA+PiAgIAliZmRjb3JlX3JlYWQgKGNiZmQs IG9zZWMsICZyZWdudW0sIHNpemVvZiAocmVnbnVtKSwgYmZkX29mZnNldCk7DQo+ID4+ICAgCXJl Z251bSA9IG5ldG9yZGVyMzIgKHJlZ251bSk7DQo+ID4+DQo+ID4+IC0JcmVjb3JkX2Z1bGxfZW50 cnkgcmVjOw0KPiA+PiAtDQo+ID4+IC0JcmVjID0gcmVjb3JkX2Z1bGxfcmVnX2luaXQgKGNhY2hl LCByZWdudW0pOw0KPiA+PiArCXJlY29yZF9mdWxsX2VudHJ5IHJlYyAocmVjb3JkX2Z1bGxfcmVn LCBjYWNoZS0+YXJjaCAoKSwgcmVnbnVtKTsNCj4gPj4NCj4gPj4gICAJLyogR2V0IHZhbC4gICov DQo+ID4+IC0JYmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCByZWNvcmRfZnVsbF9nZXRfbG9jICgm cmVjKSwNCj4gPj4gLQkJICAgICAgcmVjLnUucmVnLmxlbiwgYmZkX29mZnNldCk7DQo+ID4+ICsJ YmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCByZWMuZ2V0X2xvYyAoKSwNCj4gPj4gKwkJICAgICAg cmVjLnJlZyAoKS5sZW4sIGJmZF9vZmZzZXQpOw0KPiA+Pg0KPiA+PiAgIAlpZiAocmVjb3JkX2Rl YnVnKQ0KPiA+PiAgIAkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ICAgCQkgICAgICAi ICBSZWFkaW5nIHJlZ2lzdGVyICVkICgxICINCj4gPj4gICAJCSAgICAgICJwbHVzICVsdSBwbHVz ICVkIGJ5dGVzKVxuIiwNCj4gPj4gLQkJICAgICAgcmVjLnUucmVnLm51bSwNCj4gPj4gKwkJICAg ICAgcmVjLnJlZyAoKS5udW0sDQo+ID4+ICAgCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9m IChyZWdudW0pLA0KPiA+PiAtCQkgICAgICByZWMudS5yZWcubGVuKTsNCj4gPj4gKwkJICAgICAg cmVjLnJlZyAoKS5sZW4pOw0KPiA+Pg0KPiA+PiAgIAlyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk IChyZWMpOw0KPiA+PiAgIAlicmVhazsNCj4gPj4gQEAgLTIyMjMsMjIgKzIyNjQsMjAgQEAgcmVj b3JkX2Z1bGxfcmVhZF9lbnRyeV9mcm9tX2JmZCAoYmZkICpjYmZkLA0KPiA+PiBhc2VjdGlvbiAq b3NlYywgaW50ICpiZmRfb2Zmc2V0KQ0KPiA+PiAgIAliZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMs ICZhZGRyLCBzaXplb2YgKGFkZHIpLCBiZmRfb2Zmc2V0KTsNCj4gPj4gICAJYWRkciA9IG5ldG9y ZGVyNjQgKGFkZHIpOw0KPiA+Pg0KPiA+PiAtCXJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gPj4g LQlyZWMgPSByZWNvcmRfZnVsbF9tZW1faW5pdCAoYWRkciwgbGVuKTsNCj4gPj4gKwlyZWNvcmRf ZnVsbF9lbnRyeSByZWMgKHJlY29yZF9mdWxsX21lbSwgYWRkciwgbGVuKTsNCj4gPj4NCj4gPj4g ICAJLyogR2V0IHZhbC4gICovDQo+ID4+IC0JYmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCByZWNv cmRfZnVsbF9nZXRfbG9jICgmcmVjKSwNCj4gPj4gLQkJICAgICAgbGVuLCBiZmRfb2Zmc2V0KTsN Cj4gPj4gKwliZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMsIHJlYy5nZXRfbG9jICgpLCBsZW4sIGJm ZF9vZmZzZXQpOw0KPiA+Pg0KPiA+PiAgIAlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAgIAkgIGdk Yl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ICAgCQkgICAgICAiICBSZWFkaW5nIG1lbW9yeSAl cyAoMSBwbHVzICINCj4gPj4gICAJCSAgICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBieXRlcylc biIsDQo+ID4+ICAgCQkgICAgICBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwNCj4gPj4g LQkJCQlyZWMudS5tZW0uYWRkciksDQo+ID4+ICsJCQkJcmVjLm1lbSAoKS5hZGRyKSwNCj4gPj4g ICAJCSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiA+PiAgIAkJICAgICAg KHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4gPj4gLQkJICAgICAgcmVjLnUubWVtLmxl bik7DQo+ID4+ICsJCSAgICAgIHJlYy5tZW0gKCkubGVuKTsNCj4gPj4NCj4gPj4gICAJcmVjb3Jk X2Z1bGxfYXJjaF9saXN0X2FkZCAocmVjKTsNCj4gPj4gICAJYnJlYWs7DQo+ID4+IEBAIC0yMzg1 LDU3ICsyNDI0LDU2IEBAIHJlY29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZA0KPiA+PiAocmVj b3JkX2Z1bGxfZW50cnkgJmVudHJ5LA0KPiA+PiAgICAgdWludDMyX3QgcmVnbnVtLCBsZW47DQo+ ID4+ICAgICB1aW50NjRfdCBhZGRyOw0KPiA+Pg0KPiA+PiAtICB0eXBlID0gZW50cnkudHlwZTsN Cj4gPj4gKyAgdHlwZSA9IGVudHJ5LnR5cGUgKCk7DQo+ID4+ICAgICBiZmRjb3JlX3dyaXRlIChv YmZkLmdldCAoKSwgb3NlYywgJnR5cGUsIHNpemVvZiAodHlwZSksDQo+ID4+IGJmZF9vZmZzZXQp Ow0KPiA+Pg0KPiA+PiAtICBzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ID4+ICsgIHN3aXRjaCAodHlw ZSkNCj4gPj4gICAgICAgew0KPiA+PiAgICAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVn ICovDQo+ID4+IC0gICAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAtCWdkYl9wcmludGYgKGdk Yl9zdGRsb2csDQo+ID4+IC0JCSAgICAiICBXcml0aW5nIHJlZ2lzdGVyICVkICgxICINCj4gPj4g LQkJICAgICJwbHVzICVsdSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gPj4gLQkJICAgIGVudHJ5LnUu cmVnLm51bSwNCj4gPj4gLQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251bSksDQo+ ID4+IC0JCSAgICBlbnRyeS51LnJlZy5sZW4pOw0KPiA+PiAtDQo+ID4+IC0gICAgICAvKiBXcml0 ZSByZWdudW0uICAqLw0KPiA+PiAtICAgICAgcmVnbnVtID0gbmV0b3JkZXIzMiAoZW50cnkudS5y ZWcubnVtKTsNCj4gPj4gLSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAm cmVnbnVtLA0KPiA+PiAtCQkgICAgIHNpemVvZiAocmVnbnVtKSwgYmZkX29mZnNldCk7DQo+ID4+ IC0NCj4gPj4gLSAgICAgIC8qIFdyaXRlIHJlZ3ZhbC4gICovDQo+ID4+IC0gICAgICBiZmRjb3Jl X3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywNCj4gPj4gLQkJICAgICByZWNvcmRfZnVsbF9nZXRf bG9jICgmZW50cnkpLA0KPiA+PiAtCQkgICAgIGVudHJ5LnUucmVnLmxlbiwgYmZkX29mZnNldCk7 DQo+ID4+IC0gICAgICBicmVhazsNCj4gPj4gKyAgICAgIHsNCj4gPj4gKwlhdXRvICZyZWcgPSBl bnRyeS5yZWcgKCk7DQo+ID4+ICsJaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gKwkgIGdkYl9wcmlu dGYgKGdkYl9zdGRsb2csDQo+ID4+ICsJCSAgICAgICIgIFdyaXRpbmcgcmVnaXN0ZXIgJWQgKDEg Ig0KPiA+PiArCQkgICAgICAicGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+ICsJCSAg ICAgIHJlZy5udW0sDQo+ID4+ICsJCSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251 bSksDQo+ID4+ICsJCSAgICAgIHJlZy5sZW4pOw0KPiA+PiArDQo+ID4+ICsJLyogV3JpdGUgcmVn bnVtLiAgKi8NCj4gPj4gKwlyZWdudW0gPSBuZXRvcmRlcjMyIChyZWcubnVtKTsNCj4gPj4gKwli ZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChyZWdudW0p LA0KPiA+PiArYmZkX29mZnNldCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBXcml0ZSByZWd2YWwuICAq Lw0KPiA+PiArCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCBlbnRyeS5nZXRfbG9j ICgpLCByZWcubGVuLCBiZmRfb2Zmc2V0KTsNCj4gPj4gKwlicmVhazsNCj4gPj4gKyAgICAgIH0N Cj4gPj4NCj4gPj4gICAgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06IC8qIG1lbSAqLw0KPiA+PiAt ICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gLQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0K PiA+PiAtCQkgICAgIiAgV3JpdGluZyBtZW1vcnkgJXMgKDEgcGx1cyAiDQo+ID4+IC0JCSAgICAi JWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiA+PiAtCQkgICAgcGFkZHJlc3MgKGdk YmFyY2gsDQo+ID4+IC0JCQkgICAgICBlbnRyeS51Lm1lbS5hZGRyKSwNCj4gPj4gLQkJICAgICh1 bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiA+PiAtCQkgICAgKHVuc2lnbmVkIGxvbmcp IHNpemVvZiAobGVuKSwNCj4gPj4gLQkJICAgIGVudHJ5LnUubWVtLmxlbik7DQo+ID4+IC0NCj4g Pj4gLSAgICAgIC8qIFdyaXRlIG1lbWxlbi4gICovDQo+ID4+IC0gICAgICBsZW4gPSBuZXRvcmRl cjMyIChlbnRyeS51Lm1lbS5sZW4pOw0KPiA+PiAtICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5n ZXQgKCksIG9zZWMsICZsZW4sIHNpemVvZiAobGVuKSwNCj4gPj4gLQkJICAgICBiZmRfb2Zmc2V0 KTsNCj4gPj4gLQ0KPiA+PiAtICAgICAgLyogV3JpdGUgbWVtYWRkci4gICovDQo+ID4+IC0gICAg ICBhZGRyID0gbmV0b3JkZXI2NCAoZW50cnkudS5tZW0uYWRkcik7DQo+ID4+IC0gICAgICBiZmRj b3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsDQo+ID4+IC0JCSAgICAgc2l6ZW9m IChhZGRyKSwgYmZkX29mZnNldCk7DQo+ID4+IC0NCj4gPj4gLSAgICAgIC8qIFdyaXRlIG1lbXZh bC4gICovDQo+ID4+IC0gICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywNCj4g Pj4gLQkJICAgICByZWNvcmRfZnVsbF9nZXRfbG9jICgmZW50cnkpLA0KPiA+PiAtCQkgICAgIGVu dHJ5LnUubWVtLmxlbiwgYmZkX29mZnNldCk7DQo+ID4+IC0gICAgICBicmVhazsNCj4gPj4gKyAg ICAgIHsNCj4gPj4gKwlhdXRvICZtZW0gPSBlbnRyeS5tZW0gKCk7DQo+ID4+ICsJaWYgKHJlY29y ZF9kZWJ1ZykNCj4gPj4gKwkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ICsJCSAgICAg ICIgIFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiA+PiArCQkgICAgICAiJWx1IHBsdXMg JWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiA+PiArCQkgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwg bWVtLmFkZHIpLA0KPiA+PiArCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChhZGRyKSwN Cj4gPj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4gPj4gKwkJICAg ICAgbWVtLmxlbik7DQo+ID4+ICsNCj4gPj4gKwkvKiBXcml0ZSBtZW1sZW4uICAqLw0KPiA+PiAr CWxlbiA9IG5ldG9yZGVyMzIgKG1lbS5sZW4pOw0KPiA+PiArCWJmZGNvcmVfd3JpdGUgKG9iZmQu Z2V0ICgpLCBvc2VjLCAmbGVuLCBzaXplb2YgKGxlbiksIGJmZF9vZmZzZXQpOw0KPiA+PiArDQo+ ID4+ICsJLyogV3JpdGUgbWVtYWRkci4gICovDQo+ID4+ICsJYWRkciA9IG5ldG9yZGVyNjQgKG1l bS5hZGRyKTsNCj4gPj4gKwliZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIs IHNpemVvZiAoYWRkciksDQo+ID4+ICtiZmRfb2Zmc2V0KTsNCj4gPj4gKw0KPiA+PiArCS8qIFdy aXRlIG1lbXZhbC4gICovDQo+ID4+ICsJYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMs IGVudHJ5LmdldF9sb2MgKCksIG1lbS5sZW4sDQo+ID4+ICsJCSAgICAgICBiZmRfb2Zmc2V0KTsN Cj4gPj4gKwlicmVhazsNCj4gPj4gKyAgICAgIH0NCj4gPj4gICAgICAgfQ0KPiA+PiAgIH0NCj4g Pj4NCj4gPj4gQEAgLTI0ODIsMTMgKzI1MjAsMTMgQEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6 OnNhdmVfcmVjb3JkIChjb25zdA0KPiA+PiBjaGFyICpyZWNmaWxlbmFtZSkNCj4gPj4gICAgICAg ICAvKiBOdW1iZXIgb2YgZWZmZWN0cyBvZiBhbiBpbnN0cnVjdGlvbi4gICovDQo+ID4+ICAgICAg ICAgc2F2ZV9zaXplICs9IHNpemVvZiAodWludDMyX3QpICsgc2l6ZW9mICh1aW50OF90KSArIHNp emVvZiAodWludDMyX3QpOw0KPiA+PiAgICAgICAgIGZvciAoYXV0byAmZW50cnkgOiByZWNvcmRf ZnVsbF9saXN0W2ldLmVmZmVjdHMpDQo+ID4+IC0Jc3dpdGNoIChlbnRyeS50eXBlKQ0KPiA+PiAr CXN3aXRjaCAoZW50cnkudHlwZSAoKSkNCj4gPj4gICAJICB7DQo+ID4+ICAgCSAgY2FzZSByZWNv cmRfZnVsbF9yZWc6DQo+ID4+IC0JICAgIHNhdmVfc2l6ZSArPSAxICsgNCArIGVudHJ5LnUucmVn LmxlbjsNCj4gPj4gKwkgICAgc2F2ZV9zaXplICs9IDEgKyA0ICsgZW50cnkucmVnICgpLmxlbjsN Cj4gPj4gICAJICAgIGJyZWFrOw0KPiA+PiAgIAkgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOg0KPiA+ PiAtCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkudS5tZW0ubGVuOw0KPiA+PiAr CSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkubWVtICgpLmxlbjsNCj4gPj4gICAJ ICAgIGJyZWFrOw0KPiA+PiAgIAkgIH0NCj4gPj4gICAgICAgfQ0KPiA+PiBAQCAtMjYyMSwxOCAr MjY1OSwxOCBAQCBtYWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24NCj4gKGNvbnN0 DQo+ID4+IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gPj4NCj4gPj4gICAgIGdkYmFyY2gg KmFyY2ggPSBjdXJyZW50X2luZmVyaW9yICgpLT5hcmNoICgpOw0KPiA+Pg0KPiA+PiAtICBmb3Ig KGF1dG8gZW50cnkgOiB0b19wcmludC0+ZWZmZWN0cykNCj4gPj4gKyAgZm9yIChhdXRvICZlbnRy eSA6IHRvX3ByaW50LT5lZmZlY3RzKQ0KPiA+PiAgICAgICB7DQo+ID4+IC0gICAgICBzd2l0Y2gg KGVudHJ5LnR5cGUpDQo+ID4+ICsgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUgKCkpDQo+ID4+ICAg CXsNCj4gPj4gICAJICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gPj4gICAJICAgIHsNCj4gPj4g LQkgICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChhcmNoLCBlbnRy eS51LnJlZy5udW0pOw0KPiA+PiArCSAgICAgIHR5cGUgKnJlZ3R5cGUgPSBnZGJhcmNoX3JlZ2lz dGVyX3R5cGUgKGFyY2gsIGVudHJ5LnJlZw0KPiA+PiArKCkubnVtKTsNCj4gPj4gICAJICAgICAg dmFsdWUgKnZhbA0KPiA+PiAgIAkJICA9IHZhbHVlX2Zyb21fY29udGVudHMgKHJlZ3R5cGUsDQo+ ID4+IC0JCQkJCSByZWNvcmRfZnVsbF9nZXRfbG9jICgmZW50cnkpKTsNCj4gPj4gKwkJCQkJIGVu dHJ5LmdldF9sb2MgKCkpOw0KPiA+PiAgIAkgICAgICBnZGJfcHJpbnRmICgiUmVnaXN0ZXIgJXMg Y2hhbmdlZDogIiwNCj4gPj4gLQkJCSAgZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChhcmNoLCBlbnRy eS51LnJlZy5udW0pKTsNCj4gPj4gKwkJCSAgZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChhcmNoLCBl bnRyeS5yZWcgKCkubnVtKSk7DQo+ID4+ICAgCSAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zIG9wdHM7DQo+ID4+ICAgCSAgICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsN Cj4gPj4gICAJICAgICAgb3B0cy5yYXcgPSB0cnVlOw0KPiA+PiBAQCAtMjY0MiwxMSArMjY4MCwx MiBAQCBtYWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24NCj4gKGNvbnN0DQo+ID4+ IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gPj4gICAJICAgIH0NCj4gPj4gICAJICBjYXNl IHJlY29yZF9mdWxsX21lbToNCj4gPj4gICAJICAgIHsNCj4gPj4gLQkgICAgICBnZGJfYnl0ZSAq YiA9IHJlY29yZF9mdWxsX2dldF9sb2MgKCZlbnRyeSk7DQo+ID4+ICsJICAgICAgcmVjb3JkX2Z1 bGxfbWVtX2VudHJ5JiBtZW0gPSBlbnRyeS5tZW0gKCk7DQo+ID4+ICsJICAgICAgZ2RiX2J5dGUg KmIgPSBlbnRyeS5nZXRfbG9jICgpOw0KPiA+PiAgIAkgICAgICBnZGJfcHJpbnRmICgiJWQgYnl0 ZXMgb2YgbWVtb3J5IGF0IGFkZHJlc3MgJXMgY2hhbmdlZCBmcm9tOiIsDQo+ID4+IC0JCQkgIGVu dHJ5LnUubWVtLmxlbiwNCj4gPj4gLQkJCSAgcHJpbnRfY29yZV9hZGRyZXNzIChhcmNoLCBlbnRy eS51Lm1lbS5hZGRyKSk7DQo+ID4+IC0JICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbnRyeS51 Lm1lbS5sZW47IGkrKykNCj4gPj4gKwkJCSAgbWVtLmxlbiwNCj4gPj4gKwkJCSAgcHJpbnRfY29y ZV9hZGRyZXNzIChhcmNoLCBtZW0uYWRkcikpOw0KPiA+PiArCSAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbWVtLmxlbjsgaSsrKQ0KPiA+PiAgIAkJZ2RiX3ByaW50ZiAoIiAlMDJ4IiwgYltpXSk7 DQo+ID4+ICAgCSAgICAgIGdkYl9wcmludGYgKCJcbiIpOw0KPiA+PiAgIAkgICAgICBicmVhazsN Cj4gPj4gLS0NCj4gPj4gMi41NC4wDQo+ID4+DQo+ID4gSXQgc2VlbXMgdGhhdCB5b3UgZGlkIG5v dCBjaGFuZ2UgdGhlIGNvZGUgYXMgZGlzY3Vzc2VkIGhlcmU6DQo+ID4gaHR0cHM6Ly9zb3VyY2V3 YXJlLm9yZy9waXBlcm1haWwvZ2RiLXBhdGNoZXMvMjAyNi1NYXkvMjI3Njk5Lmh0bWwNCj4gPg0K PiA+IFdvdWxkIHlvdSBtaW5kIHNoYXJpbmcgdGhlIHJlYXNvbiBmb3IgdGhhdD8NCj4gPiBJbiBt eSBvcGluaW9uIHRoaXMgaXMgbmVjZXNzYXJ5Lg0KPiANCj4gSSBibGFtZSB0aGUgd2Vla2VuZC4g TGVhdmUgb24gZnJpZGF5IHRoaW5raW5nICJJJ2xsIGRvIGl0IG9uIG1vbmRheSIsIGFycml2ZQ0K PiBvbiBtb25kYXkgdGhpbmtpbmcgIkkgZGlkIGl0IGxhc3QgZnJpZGF5Ii4NCj4gDQo+IEkgbWFk ZSBzdXJlIHRvIG1ha2UgdGhlIGNoYW5nZSBub3cuIEFkZGVkIHRoZSBhc3NlcnRzIHRoYXQgdGhl IGxlbmd0aCBpcw0KPiAwIGluIHRoZSBtb3ZlIG9wZXJhdG9yLCB3aGljaCBtZWFucyB3ZSB3b24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0IGZyZWVpbmcNCj4gdGhlIG1lbW9yeS4NCg0KQnV0IGlzbid0 IGl0IHBvc3NpYmxlIHRoYXQgImxlbiA+IHNpemVvZiAodS5idWYpIiBvciBhdCBsZWFzdCAibGVu ID4gMCIgYXQgdGhpcyBwb2ludCA/DQoNClNvIGJlZm9yZSB0aGlzIGNvZGU6DQoNCj4+Pj4gKyAg ICBhZGRyID0gb3RoZXIuYWRkcjsNCj4+Pj4gKyAgICBsZW4gPSBvdGhlci5sZW47DQo+Pj4+ICsg ICAgbWVtY3B5ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsNCg0KQ2hyaXN0 aW5hDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJICgpSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hl ciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55ClRlbDogKzQ5IDg5IDk5MSA0 MzAsIHd3dy5pbnRlbC5kZQpNYW5hZ2luZyBEaXJlY3RvcnM6IEhhcnJ5IERlbWFzLCBKZWZmcmV5 IFNjaG5laWRlcm1hbiwgWWluIENob25nIFNvcnJlbGwKQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVy dmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1ClJlZ2lzdGVyZWQgU2VhdDogTXVuaWNoCkNvbW1lcmNp YWwgUmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE11ZW5jaGVuIEhSQiAxODY5MjgK