From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id dzr+CwMVTmpAFywAWB0awg (envelope-from ) for ; Wed, 08 Jul 2026 05:14:43 -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=TMvHbXZt; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id F38E41E098; Wed, 08 Jul 2026 05:14:42 -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 [38.145.34.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 158361E070 for ; Wed, 08 Jul 2026 05:14:36 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9D43D4BA2E19 for ; Wed, 8 Jul 2026 09:14:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9D43D4BA2E19 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=TMvHbXZt Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by sourceware.org (Postfix) with ESMTPS id 114944BA543C for ; Wed, 8 Jul 2026 09:13:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 114944BA543C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 114944BA543C Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.12 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1783502039; cv=fail; b=b320PENt2ldU6lA7WVPV14cnft8IHu+IywacQL824/0nYk8Clcb6WS3Dv30ZF7hMlRXrncLm9NFpYpnOuXLko+5v7kUgiPT+Zt3bkFsBgGGtIEJuB20Ex8hJ9HQ2HCH+yw2xok8cGwC2agfwmtmLQOD9nJa75arNJWmAIA3n5PY= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1783502039; c=relaxed/simple; bh=KbPheSPNG41k+b1GKpDiiSIpNI72ULLyhetV+eEiFGg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=v1LVowTvCnbgXCsNWhzvEGtecNhuONmkTdcqJRjgGv7ji8t4LlYNcR8CfmE7ONecaxxm/vHbPhKHg8BBVOF6ZoMNy+91aD0JLQBMscqqIHpRJ/lM0/o7A+EtbtLTNSILChBiy8JIGvAJqBd+QrLPrUv6i86bFla5f7s0phKNrq4= 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=TMvHbXZt DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 114944BA543C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783502039; x=1815038039; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=KbPheSPNG41k+b1GKpDiiSIpNI72ULLyhetV+eEiFGg=; b=TMvHbXZtnpPkp4UTsGBy/fbGMAZCWZuo3VANikCVdB8CvCvFATgPBTxp gZE51m8gkVz5o2RPM0pcF9hWg737P4kpzxPb9ZVW6Y+z3061QwN+u5H6D VhcefLZ0yNHfJNH4NJ8YjyShIGZxP8YBuo7ks4qhZLz8n6MdrvHAjzo1f 4Ba63iRjdzSJhruosKulQv3max+pnHLt7ltjkGluzc+fqsUMPjTc3Wh5j LGYkQawkFoyVxmAkO3/stm1I2N0EXb7foNvS0ZIVstp9iuYubMIJZ2fu7 GquBsYpIJezyqayxb58gM/8Kig+yso9MU12RbE8c6KeqrFc+Fdx4Enf2t Q==; X-CSE-ConnectionGUID: 73fvP8PpTW+EbRBERwJ+hA== X-CSE-MsgGUID: fVg+7UtOQQiTTTib8z9cZg== X-IronPort-AV: E=McAfee;i="6800,10657,11840"; a="87982608" X-IronPort-AV: E=Sophos;i="6.25,153,1779174000"; d="scan'208";a="87982608" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2026 02:13:57 -0700 X-CSE-ConnectionGUID: shdjvbMKTWe8l3punu8+Fg== X-CSE-MsgGUID: T52/G+xsQiWsvJJ+F6opuQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,153,1779174000"; d="scan'208";a="254874730" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa009.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2026 02:13:58 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) 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.43; Wed, 8 Jul 2026 02:13:57 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43 via Frontend Transport; Wed, 8 Jul 2026 02:13:57 -0700 Received: from DM5PR21CU001.outbound.protection.outlook.com (52.101.62.45) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43; Wed, 8 Jul 2026 02:13:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V1U5UiZsU6BQVY7/6Vyh2uoMhp1p3JE5H4XhcI421+Ogqi/A1MKMBDK/0u5rb2s6VRQ4Vp+fiCU8enun3JM9khItMro8aE842Ln4a0ZG1GZ59LwXUNzRTa7hImH9Qg4aXjaqAwl9Ez/ej5wvF6EeSJh5ez0kEI/MXZPEMQwu/0RMu7DcoMibWKlNg24weiXNwoPZGsUkQce7FLuSaA4I88kI7CerE2JveuoxECwWANx1wVf2dFbMlzPegmePl7m/7p2vo8OftrFmT1akU+bnzr72G7M0fwen7xaKg5mXaVivi2IKpe0z9z8p50IV11GK50XXk0HLB/enWz63u3VWrg== 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=/DNG89t/HYRy9kSM7/EkFPO9jCCWAZA5WN95ybqRZ78=; b=SXSsSsZn1ihXQ6tjqt86SMP0RobL+mlQd65MAq/LUo3sVvgejllNriR6px6ZaXXKl59XJhwtlc3ZnmHbxyPtWocNfxosThezFy3gtg4ezHapXDXexPS2PpzOWOJvogW/4tGTRn+ZUHPpsAgkQgN72vqWwqTvtHyIB8sbp2OKgBseZVuQCsyGADWo6iIADOj+cWWWlrJCeIfPgahmkC6RK/r62BZ07cy9b7s/jRB3ShDYWmu/59eiZ1LYumSzoebU8xwKO43WjxrdVqdQ3vqDamAw1n70XYc4DxA3emWStoS9/xUE1YgbgrHdEIcdOJ5cF0BClxagQK+HUuFHfhkanA== 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 SN7PR11MB7113.namprd11.prod.outlook.com (2603:10b6:806:298::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.8; Wed, 8 Jul 2026 09:13:48 +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.0159.018; Wed, 8 Jul 2026 09:13:48 +0000 From: "Schimpe, Christina" To: "gdb-patches@sourceware.org" CC: "tom@tromey.com" , "thiago.bauermann@linaro.org" Subject: RE: [PATCH v3 08/12] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace. Thread-Topic: [PATCH v3 08/12] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace. Thread-Index: AQHdDUOw6cTBTpnSIUeYsUbBuoY6A7ZjV4Ug Date: Wed, 8 Jul 2026 09:13:48 +0000 Message-ID: References: <20260706123133.1990441-1-christina.schimpe@intel.com> <20260706123133.1990441-9-christina.schimpe@intel.com> In-Reply-To: <20260706123133.1990441-9-christina.schimpe@intel.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_|SN7PR11MB7113:EE_ x-ms-office365-filtering-correlation-id: b1fd4264-af51-4260-051c-08dedcd1384e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|38070700021|6133799003|56012099006|4143699003|11063799006|22082099003|18002099003|20052099010|3023799007; x-microsoft-antispam-message-info: 1mIH5dtqWqaup+JlmM8LYUJoa5ZIf9RT2GQzDozfzZ+IchzB1jZU9MXWY6PS8EXEK1Uz9L6P/e1+cSKeAPIK520kiFgx0boOr3eb+bWia14Qv2syALLLXzr0wZE4owgy/z7nA55j2fmNB6eCgMUVVmt2oyEy+OOGugcdbBJmiWvSFQM2M+FO5Ir1Ej29XBlIaQihKk9fBziu0wtnuE+6QiIYmBhxy5U2EpdOA6xKi09+7/vSLniMMfVZ7YMVV/Ko6n0nJvq78cpIB3xor6qItfhUfthRrr4m9UYun/gR60A5/Ief04YaLJ6DKkAvOeXTEV7U5PT/2rXSHpfdPa6NfJ54s3e3m3QOnbrCh5LX8Cy7AW/EnDpy4WJEDu3QdnwVjOWs8NNod+NLJGY9ZdfLGGkxMDHYmcLLavDWQEu04qSlT79g5G4VUd1GUqa60VgMyp2t17wYyBcbFDYXSGe9y0JkzYr7T+SmRdUMUAO8Jqz255d3HzrUF4hhK+uDqVVxpJiOD227DWydLWX/1B3EGTkUXdhcmfl8pus30rHVxFys11zvFHC6lIHsh4AM6qmcNBBfH9liSD9x7Qfv0mzIEHpAGInopBTOYa9e+nO/jkSVA3NJ03B3HwtaztpvfYlD2LSOp8+KVxxtF1abOVNUP4886WM7TbSDA0lNhPlr1iw= 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)(366016)(376014)(23010399003)(1800799024)(38070700021)(6133799003)(56012099006)(4143699003)(11063799006)(22082099003)(18002099003)(20052099010)(3023799007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Mm5oNlQweFBDeFdsanVpV3lrRWFuWURIc3JWcW1jenRSYjRRUXl5UzNMR3ph?= =?utf-8?B?SDZQTzBrREZGZmVIT2NFVzNsL2k2NWN1bWg1MjVkb0NHVG9kL3c5NW0xWjda?= =?utf-8?B?TVZzVnhjUnZMcWF6em9xcGVlV2NFaG9HSnRDQjFEVTgrb0s5TFZxR2RCbnRI?= =?utf-8?B?cUFzU3ZsNU54THNEb2RzYVZUSHYxMy96eXNPcXFIMzJhenJkcWtjRDdYT0dQ?= =?utf-8?B?d0ZuTm9TOFRxWlZkSmdCQ3hhWUUyUmZzR0FRcjRuYUdaam1NS2hDeUJuRDg3?= =?utf-8?B?eDNIYVhJdUIxT3JGQnljS2p6TmVIMkxEZGdrWEV0eExaV1Q0VnBhQ0F5aFBZ?= =?utf-8?B?OTRmbnQrY2p6TEROK0Q5THREdVdUMnhoK29md2JmcVFNMjMyb3gzeVlpWml2?= =?utf-8?B?SXZuR1VaTmxySC85ZTIwbEIwOU54UUREcUlFL05HNDBwSUlVbjd2VnFvQnNw?= =?utf-8?B?YVV4QjljSHhTdnRpZjNpZDhuSDNTbC8zVFJmV2RLei9ISlhNSWFzZlpXUzd6?= =?utf-8?B?WURiVTV0Qm51cFdjMDM5VEhtNWpIYUVnSEs4MU52Snc5a1NXd2tKMytRS1Vs?= =?utf-8?B?dlVBYjFQVXJhNklDazBBcGh2V3ozOGREMytQY0lmcWs4bjQya0JVcURQK29a?= =?utf-8?B?L3dFdEVPeTFja0YvenM1RFJoMVZxSWtoZlhVMEdVL1pnWHN1aU5uZ0pHKzYx?= =?utf-8?B?bk5nUFA2NDZOQXNLVlBmNXE2Ym5KODhjbmpORUNudTg3aXVCeEM0ejBkbG5m?= =?utf-8?B?c0ZmSkVwS2xVRWRudGp1TGc0NXJ1YTdIaEdZUnEwUzFvVnBnb1R3WS96Y1hl?= =?utf-8?B?VGlWNGtydzJhdVBOS1FVQk13Rit5bDZVVlZDT1U3RWlQenY4V1UySzNabGtw?= =?utf-8?B?SjVSZzA1dFY1OTkvcTdjZ3Bua2NxN0VtclJkcStSektudTdhdjlFNVk3aUJP?= =?utf-8?B?RzloKzhmS1M2dCthdW5LNTByNWp2T3hrUmVmQUFmVWNTYitYd0tEa1R2RXRC?= =?utf-8?B?ZUUySnJnWUpYN2o2SDUvVTI0WG1JUEN6eFhlU3pxRGtWY1VUTGtDeXJBb2Fp?= =?utf-8?B?Z3UrOHI1MzVIRXIvT3QwYUFCQmZpZTZtemJWQlN1aFFkZmF6MTVmUEVJQUZN?= =?utf-8?B?TmJUdmJiWUJuQlU2MFBNVWhGL2tRcVdXSGMrb1VKRzFQN2pvRFEzbmI4ZlE1?= =?utf-8?B?WUxieFNEaTBIcmdDUlBxNG8rU28vakg1RTZEK2pOTmpDYkhGaklmZy8vSWw4?= =?utf-8?B?T1lNalE2SHhDZTZTT3JSQ3VMdFQ0QUhabEczZTNJb3E2dURHUi9tODVkU0V3?= =?utf-8?B?Snd4cyt3b1F6eWY2VDJLTGQ5U2FTYW5kZ1RwdUV1cUx3aUdiSm5MRjJWNGdh?= =?utf-8?B?cmsvYVZ0ZkUraWl0TlYwK3hMNnYwbFNNaElGdVFwSHJlVVRXcjlPaERtNHZ1?= =?utf-8?B?VTNuNGl5MlJtN3BQZG03QUZ6SXBFbkNWYmFtcVZoazJ6RElTT1Ird3RxNllJ?= =?utf-8?B?TXp2WW03WEVsM2dxOGt2SzhzdFVTbXVlWUpNQ2FReDdjTEpydFY0S2tXZjBo?= =?utf-8?B?cmEvU0ZFcnAveFdFZVhBSUNEOGZwZER0SjNwaHRCQ0N5MS9wblZCWXN0alB1?= =?utf-8?B?ckhhaEhXblBVZmxPODIxRTllV0p4dEFwUEhBSnpUNTZBQTJMYkhHUkhObUVt?= =?utf-8?B?NGwyNURkV2lCNzZnVE9BZi9mOWkwSEZ5Q2NzdVlDcUwwWGZPVjFtUVk0MUxS?= =?utf-8?B?RWlkU3BaUmUxYkJsbk56OWpiWWNZTVlaK2lZa2NsREh0TkxoRnV5U25vYktQ?= =?utf-8?B?Z2lta04zQXVsWVlveXQvT3U3VDV3UzJCY29uVnQzcndDNFovU053elk3R3N3?= =?utf-8?B?bFE0dVN2ZGFnWUR3c1VkQklZMlRnZTZHVG9UODcxZDI5K0dPRDZneVF2L3E2?= =?utf-8?B?enVET0NiMmd3YlJ6OVMrR3pJeUo0RjZxTFRCSVUwVFh2dFRNT1dKTDJtUTZW?= =?utf-8?B?Qm9iQjJlaFBMajJYVmF6YUVJdnlCVkNzMlA0ZkhLMG8wY1RDQW11VkZzVFBw?= =?utf-8?B?V3I3MVdjcnZqWWQwVGhSeEprK242aW9JVWw1bzRGaExBUmUrdWcyVXdYK1hB?= =?utf-8?B?V1BzTno1eHRjeWprWjRjY3Z0VjRSWEdkUDI4VXVMU3djclh6R1IyV3BZQStw?= =?utf-8?B?M05BMXJ2V3VLLzVqUUlJeUxjaFV1Q2VSbkxXekNuY0N1aDBvQm02MzlHZUo0?= =?utf-8?B?dHNpNThYMlZDWGhVMW9aWWQ0bmpvbEtRUjQ4Q3R0M244M3dpb2xpS2s4SFh2?= =?utf-8?B?NllsaU1iUGxUc1FrMitqVXpOU1lEcVFhNjZFVGl4bWtwRXZoSXhzdUxaTjBM?= =?utf-8?Q?+wIINIBaBOj4k72Q=3D?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: CLHF3F+li3YffLwFDoH2X7km5Isypqe4D/Nyrl1WxaKXYCnmKC0C+MMwzW2zJYRdyBEbtnuBY87Mwptn6AB9l2ndklE6JLsKS1nuUKVTSPlpm18Jdg/NbbXa/DyfkqXQJ9/2GaekrN5ovUMQdP/G7Oz11KIci1LLBAsG5OUG137I0VrJtwS+Frb/iHbQgEpOGRjQQXz85Q3MAEr3b3JIFs7d1GakKOTY6e1eihYw6+tilMbzT4emfVmZCdwo2ec1PP7FaOi/qt+HSclGExDWwByUUKFW1IABZ9mpElJnlEqs6b0OGQ4syGFGQC3ZPTiCa2s9Y+2Sn19oQtZxQXnKpg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1fd4264-af51-4260-051c-08dedcd1384e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2026 09:13:48.3716 (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: gfKNSNkNBJxLk6CXLL+Yn2t4jRPL4y5XMpIYDyhIRw2jNlJZ9quED5VZt2qJr+YKDyRPw2O3MIAq8omAKIYbm9zU2u6bHZiWzcPjtyaOyxU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7113 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 SSBhY2NpZGVudGFsbHkgbWVyZ2VkIHRoZSBwYXRjaCANCiJnZGI6IFByb3ZpZGUgZ2RiYXJjaCBo b29rIHRvIGRpc3Rpbmd1aXNoIHNoYWRvdyBzdGFjayBiYWNrdHJhY2UgZWxlbWVudHMuICIgaW50 byB0aGlzIG9uZS4NCg0KQWxzbyB0aGVyZSBpcyBhbiBhcm0gYnVpbGQgZmFpbHVyZToNCg0KL3Rt cC9nZGIvc2hhZG93LXN0YWNrLmM6NzEyOjM1OiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkIOKA mGdldF9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbyhnZGJhcmNoKiYsIGNvbnN0IENPUkVfQUREUiYs IGludCnigJkgaXMgYW1iaWd1b3VzDQogIHwgIyAwMDowMjowOSBtYWtlWzFdOiAqKiogW01ha2Vm aWxlOjIxMDI6IHNoYWRvdy1zdGFjay5vXSBFcnJvciAxDQogIHwgIyAwMDowMjowOSBtYWtlOiAq KiogW01ha2VmaWxlOjExNDAwOiBhbGwtZ2RiXSBFcnJvciAyDQoNCkkgd2lsbCBwb3N0IGEgdjQg dG8gZml4IHRoaXMgc29vbi4NCg0KQ2hyaXN0aW5hDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogQ2hyaXN0aW5hIFNjaGltcGUgPGNocmlzdGluYS5zY2hpbXBlQGludGVs LmNvbT4NCj4gU2VudDogTW9udGFnLCA2LiBKdWxpIDIwMjYgMTQ6MzENCj4gVG86IGdkYi1wYXRj aGVzQHNvdXJjZXdhcmUub3JnDQo+IENjOiB0b21AdHJvbWV5LmNvbTsgdGhpYWdvLmJhdWVybWFu bkBsaW5hcm8ub3JnDQo+IFN1YmplY3Q6IFtQQVRDSCB2MyAwOC8xMl0gZ2RiOiBBZGQgY29tbWFu ZCBvcHRpb24gJ2J0IC1zaGFkb3cnIHRvIHByaW50DQo+IHRoZSBzaGFkb3cgc3RhY2sgYmFja3Ry YWNlLg0KPiANCj4gQWRkIGNvbW1hbmQgb3B0aW9uICctc2hhZG93IiB0byB0aGUgYmFja3RyYWNl IGNvbW1hbmQgdG8gcHJpbnQgdGhlDQo+IHNoYWRvdyBzdGFjayBiYWNrdHJhY2UgaW5zdGVhZCBv ZiB0aGUgbm9ybWFsIGJhY2t0cmFjZS4NCj4gDQo+IFRoaXMgb3B0aW9uIG1heSBiZSBjb21iaW5l ZCB3aXRoICctZnJhbWUtaW5mbycgYW5kIGltcGxpZXMgJy1uby1maWx0ZXJzJw0KPiBhbmQgJy1m cmFtZS1hcmd1bWVudHMgbm9uZScuICBBbHNvIHRoZSBvcHRpb25zIEBzYW1wey1wYXN0LWVudHJ5 fSBvcg0KPiBAc2FtcHstaGlkZX0gYXJlIG5vdCBzdXBwb3J0ZWQuDQo+IA0KPiBUaGlzIGlzIGFu IGV4YW1wbGUgZm9yIHRoZSBvdXRwdXQgb2YgJ2J0IC1zaGFkb3cnIG9uIGFtZDY0IGxpbnV4Og0K PiB+fg0KPiAoZ2RiKSBidCAtc2hhZG93DQo+IC8jMCAgMHgwMDAwNTU1NTU1NTU1MTRhIGluIGNh bGwxIGF0IGFtZDY0LXNoYWRvdy1zdGFjay5jOjI3DQo+IC8jMSAgMHgwMDAwNTU1NTU1NTU1MTVm IGluIG1haW4gYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6Mzggfn4NCj4gDQo+IE5vdGUgdGhhdCB0 aGUgbm9ybWFsIGJhY2t0cmFjZSBpbmNsdWRlcyBvbmUgYWRkaXRpb25hbCBmcmFtZSwgc2luY2Ug dGhlDQo+IHNoYWRvdyBzdGFjayBiYWNrdHJhY2UgcmVsaWVzIG9uIHJldHVybiBhZGRyZXNzZXMg b2YgdGhlIHNoYWRvdyBzdGFjayBvbmx5Lg0KPiBCdXQgZXhjZXB0IHRoZSBtaXNzaW5nIGZyYW1l IGFyZ3VtZW50cyBhbmQgZnJhbWUgIzAgb2YgdGhlIG5vcm1hbA0KPiBiYWNrdHJhY2UsIHRoZSBi YWNrdHJhY2UgaXMgdGhlIHNhbWUuDQo+IH5+DQo+IChnZGIpIGJ0DQo+IC8jMCAgY2FsbDIgKCkg YXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjENCj4gLyMxICAweDAwMDA1NTU1NTU1NTUxNGEgaW4g Y2FsbDEgKCkgYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjcNCj4gLyMyICAweDAwMDA1NTU1NTU1 NTUxNWYgaW4gbWFpbiAoKSBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzozOCB+fg0KPiANCj4gVGhp cyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBmb3IgJ2J0IC1zaGFkb3cnIG9uIGFtZDY0Lg0KPiBB bHRob3VnaCB0aGUgdGVzdCBpcyBPUyBpbmRlcGVuZGVudCB3ZSBjYW4gb25seSB0ZXN0IHRoaXMg b24gbGludXgsIGFzIEdEQg0KPiBkb2VzIG5vdCBzdXBwb3J0IHNoYWRvdyBzdGFjayBvbiBvdGhl ciBPUyBmb3Igbm93Lg0KPiBBbHNvIHdlIGRvIG5vdCBhZGQgYSB0ZXN0IGZvciAzMiBiaXQsIGFz IHN1cHBvcnQgZm9yIHNoYWRvdyBzdGFjayBpcyBsaW1pdGVkIHRvDQo+IDY0IGJpdCBieSB0aGUg bGludXgga2VybmVsLg0KPiAtLS0NCj4gIGdkYi9ORVdTICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMyArDQo+ICBnZGIvZG9jL2dkYi50ZXhpbmZvICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNDMgKysNCj4gIGdkYi9nZGJhcmNoLWdlbi5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAzMiArKw0KPiAgZ2RiL2dkYmFyY2gtZ2VuLmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIxICsNCj4gIGdkYi9nZGJhcmNoLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICBnZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5 ICAgICAgICAgICAgICAgICAgICAgfCAgMjcgKw0KPiAgZ2RiL3NoYWRvdy1zdGFjay5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNTA5ICsrKysrKysrKysrKysrKysrKw0KPiAgZ2RiL3No YWRvdy1zdGFjay5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysNCj4gIGdk Yi9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArLQ0KPiAg Z2RiL3N0YWNrLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQzICsrDQo+ ICAuLi4vZ2RiLmFyY2gvYW1kNjQtc2hhZG93LXN0YWNrLWNtZHMuZXhwICAgICAgfCAgNDcgKysN Cj4gIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvb3B0aW9ucy5leHAgICAgICAgICAgICB8ICAgMiAr LQ0KPiAgMTIgZmlsZXMgY2hhbmdlZCwgODQzIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MNCj4gaW5kZXggMzQzODI4 YTg1ZGQuLjI2MDVhNWFiNzhhIDEwMDY0NA0KPiAtLS0gYS9nZGIvTkVXUw0KPiArKysgYi9nZGIv TkVXUw0KPiBAQCAtMyw2ICszLDkgQEANCj4gDQo+ICAqKiogQ2hhbmdlcyBzaW5jZSBHREIgMTcN Cj4gDQo+ICsqIE5ldyAiLXNoYWRvdyIgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgdGhlIGJhY2t0 cmFjZSBjb21tYW5kIHRvIHByaW50DQo+ICsgIHRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGlu c3RlYWQgb2YgdGhlIG5vcm1hbCBiYWNrdHJhY2UuDQo+ICsNCj4gICogU3VwcG9ydCBmb3IgdGhl IENvbW1vbiBUcmFjZSBGb3JtYXQgKENURikgaGFzIGJlZW4gcmVtb3ZlZC4gIEdEQiBub3cNCj4g ICAgc2F2ZXMgdHJhY2UgaW5mb3JtYXRpb24gZXhjbHVzaXZlbHkgaW4gaXRzIG93biAidGZpbGUi IGZvcm1hdC4NCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbyBpbmRleA0KPiBhNjk4YjJiODQ1MS4uMjRiMTFkMjY1N2MgMTAwNjQ0DQo+ IC0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8NCj4gKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbw0K PiBAQCAtODc4OCw2ICs4Nzg4LDQ3IEBAIFJlbGF0ZWQgc2V0dGluZzogQHJlZntzZXQgcHJpbnQg cmF3LWZyYW1lLQ0KPiBhcmd1bWVudHN9Lg0KPiAgQGl0ZW0gLWZyYW1lLWluZm8gQGNvZGV7YXV0 b318QGNvZGV7c291cmNlLQ0KPiBsaW5lfXxAY29kZXtsb2NhdGlvbn18QGNvZGV7c291cmNlLWFu ZC1sb2NhdGlvbn18QGNvZGV7bG9jYXRpb24tYW5kLQ0KPiBhZGRyZXNzfXxAY29kZXtzaG9ydC1s b2NhdGlvbn0NCj4gIFNldCBwcmludGluZyBvZiBmcmFtZSBpbmZvcm1hdGlvbi4NCj4gIFJlbGF0 ZWQgc2V0dGluZzogQHJlZntzZXQgcHJpbnQgZnJhbWUtaW5mb30uDQo+ICsNCj4gK0BpdGVtIC1z aGFkb3cNCj4gK1ByaW50IHRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGluc3RlYWQgb2YgdGhl IG5vcm1hbCBiYWNrdHJhY2UuDQo+ICtTaW1pbGFyIHRvIHRoZSBub3JtYWwgYmFja3RyYWNlIEB2 YWx1ZXtHREJOfSBwcmludHMgb25lIGxpbmUgcGVyDQo+ICtlbGVtZW50IChzby1jYWxsZWQgc2hh ZG93IHN0YWNrIGZyYW1lcykgb24gdGhlIHNoYWRvdyBzdGFjay4NCj4gKw0KPiArQSBzaGFkb3cg c3RhY2sgaXMgc3VwcG9ydGVkLCBmb3IgaW5zdGFuY2UsIHdpdGggdGhlIEludGVsIENvbnRyb2wt Rmxvdw0KPiArRW5mb3JjZW1lbnQgVGVjaG5vbG9neSAoQHB4cmVme0NFVH0pIG9uIHg4NiBhbmQg dGhlIEd1YXJkZWQgQ29udHJvbA0KPiArU3RhY2sgZmVhdHVyZSAoQHB4cmVme0dDU30pIG9uIEFB cmNoNjQuDQo+ICsNCj4gK1RoaXMgb3B0aW9uIG1heSBiZSBjb21iaW5lZCB3aXRoIEBjb2Rley1m cmFtZS1pbmZvfSBhbmQgaW1wbGllcw0KPiArQGNvZGV7LW5vLWZpbHRlcnN9IGFuZCBAY29kZXst ZnJhbWUtYXJndW1lbnRzIG5vbmV9LiAgQWxzbyB0aGUgb3B0aW9ucw0KPiArQHNhbXB7LXBhc3Qt ZW50cnl9IG9yIEBzYW1wey1oaWRlfSBhcmUgbm90IHN1cHBvcnRlZC4NCj4gKw0KPiArVGhpcyBp cyBob3cgYSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGxvb2tzIGxpa2Ugb24gYW1kNjQ6DQo+ICtA c21hbGxleGFtcGxlDQo+ICtAZ3JvdXANCj4gKyMwICAweDAwMDA1NTU1NTU1NTUxNGEgaW4gY2Fs bDEgYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjcNCj4gKyMxICAweDAwMDA1NTU1NTU1NTUxNWYg aW4gbWFpbiBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzozOCBAZW5kDQo+IGdyb3VwDQo+ICtAZW5k IHNtYWxsZXhhbXBsZQ0KPiArDQo+ICtUaGVyZSBjYW4gYmUgZWxlbWVudHMgb24gdGhlIHNoYWRv dyBzdGFjayB3aGljaCBhcmUgbm90IHJldHVybg0KPiArYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBv biB4ODYgd2l0aCB0aGUgSW50ZWwgQ29udHJvbC1GbG93IEVuZm9yY2VtZW50DQo+ICtUZWNobm9s b2d5IChAeHJlZntDRVR9KS4gIEluIGNhc2Ugb2Ygc2lnbmFscywgdGhlIG9sZCBzaGFkb3cgc3Rh Y2sNCj4gK3BvaW50ZXIgaXMgcHVzaGVkIGluIGEgc3BlY2lhbCBmb3JtYXQgd2l0aCBiaXQgNjMg c2V0LiAgU2VlDQo+ICtAdXJse2h0dHBzOi8vZG9jcy5rZXJuZWwub3JnL2FyY2gveDg2L3Noc3Rr Lmh0bWx9DQo+ICtmb3IgbW9yZSBkZXRhaWxzLiAgRm9yIHN1Y2ggc2hhZG93IHN0YWNrIGVsZW1l bnRzLCB0aGUgc2hhZG93IHN0YWNrDQo+ICtmcmFtZSBqdXN0IGNvbnRhaW5zIHRoZSBsZXZlbCBh bmQgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgc2hhZG93IHN0YWNrDQo+ICtlbGVtZW50Og0KPiAr DQo+ICtAc21hbGxleGFtcGxlDQo+ICtAZ3JvdXANCj4gKyhnZGIpIGJ0IC1zaGFkb3cgNA0KPiAr IzAgIDB4MDAwMDdmZmZmN2M0NTMzMCBpbiBfX3Jlc3RvcmVfcnQgZnJvbQ0KPiArL2xpYi94ODZf NjQtbGludXgtZ251L2xpYmMuc28uNg0KPiArIzEgIDxzaWdmcmFtZSB0b2tlbj4NCj4gKyMyICAw eDAwMDA3ZmZmZjdjNDUyN2UgaW4gX19HSV9yYWlzZSBhdCAuLi9zeXNkZXBzL3Bvc2l4L3JhaXNl LmM6MjYNCj4gKyMzICAweDAwMDA1NTU1NTU1NTUxOWQgaW4gbWFpbiBhdCB0bXAvYW1kNjQtc2hh ZG93LXN0YWNrLXNpZ25hbC5jOjI5DQo+ICsoTW9yZSBzaGFkb3cgc3RhY2sgZnJhbWVzIGZvbGxv dy4uLikNCj4gK0BlbmQgZ3JvdXANCj4gK0BlbmQgc21hbGxleGFtcGxlDQo+ICsNCj4gIEBlbmQg dGFibGUNCj4gDQo+ICBUaGUgb3B0aW9uYWwgQHZhcntxdWFsaWZpZXJ9IGlzIG1haW50YWluZWQg Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuDQo+IEBAIC0yNzIxOSw2ICsyNzI2MCw3IEBAIGlu Zm9ybWF0aW9uIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgY29yZSBmaWxlLA0KPiBhbmQgd2lsbCBz aG93IG9uZSBvZiB0aGUgYWJvdmUgIG1lc3NhZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQ0K PiBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgbW9kZSBpcyBzZWxlY3RlZC4NCj4gIEB4cmVm e01lbW9yeSBUYWdnaW5nfS4gQHhyZWZ7TWVtb3J5fS4NCj4gDQo+ICtAYW5jaG9ye0dDU30NCj4g IEBzdWJzdWJzZWN0aW9uIEFBcmNoNjQgR3VhcmRlZCBDb250cm9sIFN0YWNrICBAY2luZGV4IEd1 YXJkZWQgQ29udHJvbA0KPiBTdGFjaywgQUFyY2g2NCAgQGNpbmRleCBHQ1MsIEFBcmNoNjQgQEAg LTI3MzA3LDYgKzI3MzQ5LDcgQEANCj4gcmVnaXN0ZXJzDQo+IA0KPiAgQGVuZCBpdGVtaXplDQo+ IA0KPiArQGFuY2hvcntDRVR9DQo+ICBAc3Vic3Vic2VjdGlvbiBJbnRlbCBDb250cm9sLUZsb3cg RW5mb3JjZW1lbnQgVGVjaG5vbG9neS4NCj4gIEBjaW5kZXggSW50ZWwgQ29udHJvbC1GbG93IEVu Zm9yY2VtZW50IFRlY2hub2xvZ3kuDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2Vu LmMgYi9nZGIvZ2RiYXJjaC1nZW4uYyBpbmRleA0KPiAwMjJhZDQ5NjAyNi4uZTkzYWZmZjM0YjEg MTAwNjQ0DQo+IC0tLSBhL2dkYi9nZGJhcmNoLWdlbi5jDQo+ICsrKyBiL2dkYi9nZGJhcmNoLWdl bi5jDQo+IEBAIC0yNTYsNiArMjU2LDcgQEAgc3RydWN0IGdkYmFyY2gNCj4gICAgZ2RiYXJjaF9h ZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2VfZnR5cGUNCj4gKmFkZHJlc3NfaW5f c2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSA9IG51bGxwdHI7DQo+ICAgIGdkYmFyY2hfdG9wX2Fk ZHJfZW1wdHlfc2hhZG93X3N0YWNrX2Z0eXBlDQo+ICp0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3Rh Y2sgPSBudWxscHRyOw0KPiAgICBpbnQgc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVk ID0gODsNCj4gKyAgZ2RiYXJjaF9pc19ub19yZXR1cm5fc2hhZG93X3N0YWNrX2FkZHJlc3NfZnR5 cGUNCj4gKyAqaXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzID0gbnVsbHB0cjsNCj4g IH07DQo+IA0KPiAgLyogQ3JlYXRlIGEgbmV3IGBgc3RydWN0IGdkYmFyY2gnJyBiYXNlZCBvbiBp bmZvcm1hdGlvbiBwcm92aWRlZCBieSBAQCAtDQo+IDUxOSw2ICs1MjAsNyBAQCB2ZXJpZnlfZ2Ri YXJjaCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIGFk ZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSwgaGFzIHByZWRpY2F0ZS4NCj4gKi8N Cj4gICAgLyogU2tpcCB2ZXJpZnkgb2YgdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrLCBoYXMg cHJlZGljYXRlLiAgKi8NCj4gICAgLyogU2tpcCB2ZXJpZnkgb2Ygc2hhZG93X3N0YWNrX2VsZW1l bnRfc2l6ZV9hbGlnbmVkLCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ICsgIC8qIFNraXAgdmVyaWZ5 IG9mIGlzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzcywgaGFzIHByZWRpY2F0ZS4NCj4g KyAqLw0KPiAgICBpZiAoIWxvZy5lbXB0eSAoKSkNCj4gICAgICBpbnRlcm5hbF9lcnJvciAoXygi dmVyaWZ5X2dkYmFyY2g6IHRoZSBmb2xsb3dpbmcgYXJlIGludmFsaWQgLi4uJXMiKSwNCj4gIAkJ ICAgIGxvZy5jX3N0ciAoKSk7DQo+IEBAIC0xMzU3LDYgKzEzNTksMTIgQEAgZ2RiYXJjaF9kdW1w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0DQo+IHVpX2ZpbGUgKmZpbGUpDQo+ICAg IGdkYl9wcmludGYgKGZpbGUsDQo+ICAJICAgICAgImdkYmFyY2hfZHVtcDogc2hhZG93X3N0YWNr X2VsZW1lbnRfc2l6ZV9hbGlnbmVkID0gJXNcbiIsDQo+ICAJICAgICAgcGxvbmdlc3QgKGdkYmFy Y2gtPnNoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCkpOw0KPiArICBnZGJfcHJpbnRm IChmaWxlLA0KPiArCSAgICAgICJnZGJhcmNoX2R1bXA6DQo+IGdkYmFyY2hfaXNfbm9fcmV0dXJu X3NoYWRvd19zdGFja19hZGRyZXNzX3AoKSA9ICVkXG4iLA0KPiArCSAgICAgIGdkYmFyY2hfaXNf bm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzX3AgKGdkYmFyY2gpKTsNCj4gKyAgZ2RiX3By aW50ZiAoZmlsZSwNCj4gKwkgICAgICAiZ2RiYXJjaF9kdW1wOiBpc19ub19yZXR1cm5fc2hhZG93 X3N0YWNrX2FkZHJlc3MgPSA8JXM+XG4iLA0KPiArCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJp bmcNCj4gKyhnZGJhcmNoLT5pc19ub19yZXR1cm5fc2hhZG93X3N0YWNrX2FkZHJlc3MpKTsNCj4g ICAgaWYgKGdkYmFyY2gtPmR1bXBfdGRlcCAhPSBudWxscHRyKQ0KPiAgICAgIGdkYmFyY2gtPmR1 bXBfdGRlcCAoZ2RiYXJjaCwgZmlsZSk7ICB9IEBAIC01MzYyLDMgKzUzNzAsMjcgQEANCj4gc2V0 X2dkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwNCj4gew0KPiAgICBnZGJhcmNoLT5zaGFkb3dfc3RhY2tfZWxlbWVudF9zaXpl X2FsaWduZWQgPQ0KPiBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQ7DQo+ICB9DQo+ ICsNCj4gK2Jvb2wNCj4gK2dkYmFyY2hfaXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNz X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKSB7DQo+ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2gg IT0gbnVsbHB0cik7DQo+ICsgIHJldHVybiBnZGJhcmNoLT5pc19ub19yZXR1cm5fc2hhZG93X3N0 YWNrX2FkZHJlc3MgIT0gbnVsbHB0cjsgfQ0KPiArDQo+ICtzdGQ6Om9wdGlvbmFsPHNoYWRvd19z dGFja19mcmFtZV9pbmZvPg0KPiArZ2RiYXJjaF9pc19ub19yZXR1cm5fc2hhZG93X3N0YWNrX2Fk ZHJlc3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiArY29uc3QgQ09SRV9BRERSIHNzcCwg Y29uc3QgQ09SRV9BRERSIHZhbHVlLCBjb25zdCB1bnNpZ25lZCBsb25nIGxldmVsKQ0KPiArew0K PiArICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IG51bGxwdHIpOw0KPiArICBnZGJfYXNzZXJ0IChn ZGJhcmNoLT5pc19ub19yZXR1cm5fc2hhZG93X3N0YWNrX2FkZHJlc3MgIT0gbnVsbHB0cik7DQo+ ICsgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpDQo+ICsgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxv ZywgImdkYmFyY2hfaXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzDQo+ICtjYWxsZWRc biIpOw0KPiArICByZXR1cm4gZ2RiYXJjaC0+aXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRy ZXNzIChnZGJhcmNoLCBzc3AsDQo+ICt2YWx1ZSwgbGV2ZWwpOyB9DQo+ICsNCj4gK3ZvaWQNCj4g K3NldF9nZGJhcmNoX2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzcyAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsDQo+ICsNCj4gZ2RiYXJjaF9pc19ub19yZXR1cm5fc2hhZG93X3N0YWNr X2FkZHJlc3NfZnR5cGUNCj4gK2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzcykNCj4g K3sNCj4gKyAgZ2RiYXJjaC0+aXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzID0NCj4g K2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzczsNCj4gK30NCj4gZGlmZiAtLWdpdCBh L2dkYi9nZGJhcmNoLWdlbi5oIGIvZ2RiL2dkYmFyY2gtZ2VuLmggaW5kZXgNCj4gYzA1NTY0ZmUw NWYuLjc5MTMyNDc3N2RkIDEwMDY0NA0KPiAtLS0gYS9nZGIvZ2RiYXJjaC1nZW4uaA0KPiArKysg Yi9nZGIvZ2RiYXJjaC1nZW4uaA0KPiBAQCAtMTc0NSw2ICsxNzQ1LDggQEAgdm9pZCBzZXRfZ2Ri YXJjaF9jb3JlX3BhcnNlX2V4ZWNfY29udGV4dA0KPiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGdkYmFyY2hfY29yZV8NCj4gDQo+ICAgICBJZiB0aGUgc2hhZG93IHN0YWNrIGFsaWdubWVudCBp cyBub3QgdGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywgY29uZmlndXJlDQo+ICAgICB0aGUgZ2Ri YXJjaCB2YWx1ZSBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQuDQo+ICsgICBUbyBz dXBwb3J0IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICdiYWNrdHJhY2UgLXNoYWRvdycgZWFjaCB2 YWx1ZSBhbmQNCj4gaG9vaw0KPiArICAgbGlzdGVkIGFib3ZlIGhhcyB0byBiZSBwcm92aWRlZC4N Cj4gDQo+ICAgICBJZiBwb3NzaWJsZSwgcmV0dXJuIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlci4g IElmIHRoZSBzaGFkb3cgc3RhY2sNCj4gICAgIGZlYXR1cmUgaXMgZW5hYmxlZCB0aGVuIHNldCBT SEFET1dfU1RBQ0tfRU5BQkxFRCB0byB0cnVlLCBvdGhlcndpc2UNCj4gQEAgLTE3ODcsMyArMTc4 OSwyMiBAQCB2b2lkDQo+IHNldF9nZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IGdkYmFyY2hfdA0KPiANCj4gIGludCBnZGJhcmNo X3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gpOw0KPiB2b2lkIHNldF9nZGJhcmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25l ZCAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsIGludCBzaGFkb3dfc3RhY2tfZWxlbWVudF9z aXplX2FsaWduZWQpOw0KPiArDQo+ICsvKiBUaGVyZSBjYW4gYmUgZWxlbWVudHMgb24gdGhlIHNo YWRvdyBzdGFjayB3aGljaCBhcmUgbm90IHJldHVybg0KPiBhZGRyZXNzZXMuDQo+ICsgICBUaGlz IGhhcHBlbnMgZm9yIGV4YW1wbGUgb24geDg2IHdpdGggQ0VUIGluIGNhc2Ugb2Ygc2lnbmFscy4N Cj4gKyAgIElmIGFuIGFyY2hpdGVjdHVyZSBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIG9wdGlvbiAn YmFja3RyYWNlIC1zaGFkb3cnDQo+IGFuZA0KPiArICAgdGhlIHNoYWRvdyBzdGFjayBjYW4gY29u dGFpbiBlbGVtZW50cyB3aGljaCBhcmUgbm90IHJldHVybiBhZGRyZXNzZXMsDQo+IHRoaXMNCj4g KyAgIGZ1bmN0aW9uIGhhcyB0byBiZSBwcm92aWRlZC4NCj4gKyAgIFJldHVybiBhIHNoYWRvdyBz dGFjayBmcmFtZSBpbmZvIHdpdGggZnJhbWUgdHlwZQ0KPiArICAgc3NwX2ZyYW1lX3R5cGU6Om5v bl9yZXR1cm5fZnJhbWUsIGlmIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciBTU1ANCj4gYmVsb25n cw0KPiArICAgdG8gYSB2YWxpZCBzaGFkb3cgc3RhY2sgZnJhbWUgd2hpbGUgdGhlIGVsZW1lbnQg b24gdGhlIHNoYWRvdyBzdGFjaw0KPiArICAgVkFMVUUgZG9lcyBub3QgcmVmZXIgdG8gYSByZXR1 cm4gYWRkcmVzcy4gIEluIHRoYXQgY2FzZSwgYWxzbyB0aGUgZnJhbWUncw0KPiArICAgYXR0cmli dXRlIG5vbl9yZXR1cm5fZGVzY3JpcHRpb24gaGFzIHRvIGJlIHNldCB0byBhIHN0cmluZyB3aGlj aCBpcw0KPiArICAgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgb24gdGhlIHNoYWRv dyBzdGFjayBpbiB0aGUgc2hhZG93IHN0YWNrDQo+ICsgICBiYWNrdHJhY2UuICBPdGhlcndpc2Us IHJldHVybiBhbiBlbXB0eSBvcHRpb25hbC4gKi8NCj4gKw0KPiArYm9vbCBnZGJhcmNoX2lzX25v X3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzc19wIChzdHJ1Y3QgZ2RiYXJjaA0KPiArKmdkYmFy Y2gpOw0KPiArDQo+ICt1c2luZyBnZGJhcmNoX2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRk cmVzc19mdHlwZSA9DQo+ICtzdGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0DQo+ICtDT1JFX0FERFIgc3NwLCBjb25zdCBD T1JFX0FERFIgdmFsdWUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbGV2ZWwpOw0KPiArc3RkOjpvcHRp b25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4NCj4gK2dkYmFyY2hfaXNfbm9fcmV0dXJuX3No YWRvd19zdGFja19hZGRyZXNzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gK2NvbnN0IENP UkVfQUREUiBzc3AsIGNvbnN0IENPUkVfQUREUiB2YWx1ZSwgY29uc3QgdW5zaWduZWQgbG9uZyBs ZXZlbCk7DQo+ICt2b2lkIHNldF9nZGJhcmNoX2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRk cmVzcyAoc3RydWN0IGdkYmFyY2gNCj4gKypnZGJhcmNoLCBnZGJhcmNoX2lzX25vX3JldHVybl9z aGFkb3dfc3RhY2tfYWRkcmVzc19mdHlwZQ0KPiArKmlzX25vX3JldHVybl9zaGFkb3dfc3RhY2tf YWRkcmVzcyk7DQo+IGRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5oIGIvZ2RiL2dkYmFyY2guaCBp bmRleA0KPiA3MDc3ZjkyNjJlOS4uYjU4N2E4NjJlOTAgMTAwNjQ0DQo+IC0tLSBhL2dkYi9nZGJh cmNoLmgNCj4gKysrIGIvZ2RiL2dkYmFyY2guaA0KPiBAQCAtMzIsNiArMzIsNyBAQA0KPiAgI2lu Y2x1ZGUgInJlZ2lzdHJ5LmgiDQo+ICAjaW5jbHVkZSAic29saWIuaCINCj4gICNpbmNsdWRlICJm aW5kLW1lbW9yeS1yZWdpb24uaCINCj4gKyNpbmNsdWRlICJzaGFkb3ctc3RhY2suaCINCj4gDQo+ ICBzdHJ1Y3QgZmxvYXRmb3JtYXQ7DQo+ICBzdHJ1Y3QgdWlfZmlsZTsNCj4gZGlmZiAtLWdpdCBh L2dkYi9nZGJhcmNoX2NvbXBvbmVudHMucHkgYi9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5DQo+ IGluZGV4IDUzMWQ3ZTIxMmQ4Li4wNDM1YjFiNWVjYSAxMDA2NDQNCj4gLS0tIGEvZ2RiL2dkYmFy Y2hfY29tcG9uZW50cy5weQ0KPiArKysgYi9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5DQo+IEBA IC0yNzc0LDYgKzI3NzQsOCBAQCBwcm92aWRlZDoNCj4gDQo+ICBJZiB0aGUgc2hhZG93IHN0YWNr IGFsaWdubWVudCBpcyBub3QgdGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywgY29uZmlndXJlICB0 aGUNCj4gZ2RiYXJjaCB2YWx1ZSBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQuDQo+ ICtUbyBzdXBwb3J0IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICdiYWNrdHJhY2UgLXNoYWRvdycg ZWFjaCB2YWx1ZSBhbmQNCj4gK2hvb2sgbGlzdGVkIGFib3ZlIGhhcyB0byBiZSBwcm92aWRlZC4N Cj4gDQo+ICBJZiBwb3NzaWJsZSwgcmV0dXJuIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlci4gIElm IHRoZSBzaGFkb3cgc3RhY2sgIGZlYXR1cmUgaXMNCj4gZW5hYmxlZCB0aGVuIHNldCBTSEFET1df U1RBQ0tfRU5BQkxFRCB0byB0cnVlLCBvdGhlcndpc2UgQEAgLTI4MzcsMw0KPiArMjgzOSwyOCBA QCB0aGlzIHZhbHVlLg0KPiAgICAgICMgbGludXggc3RhcnRpbmcgd2l0aCBMaW51eCBrZXJuZWwg djYuNi4NCj4gICAgICB1bnVzZWQ9VHJ1ZSwNCj4gICkNCj4gKw0KPiArTWV0aG9kKA0KPiArICAg IGNvbW1lbnQ9IiIiDQo+ICtUaGVyZSBjYW4gYmUgZWxlbWVudHMgb24gdGhlIHNoYWRvdyBzdGFj ayB3aGljaCBhcmUgbm90IHJldHVybiBhZGRyZXNzZXMuDQo+ICtUaGlzIGhhcHBlbnMgZm9yIGV4 YW1wbGUgb24geDg2IHdpdGggQ0VUIGluIGNhc2Ugb2Ygc2lnbmFscy4NCj4gK0lmIGFuIGFyY2hp dGVjdHVyZSBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIG9wdGlvbiAnYmFja3RyYWNlIC1zaGFkb3cn DQo+ICthbmQgdGhlIHNoYWRvdyBzdGFjayBjYW4gY29udGFpbiBlbGVtZW50cyB3aGljaCBhcmUg bm90IHJldHVybg0KPiArYWRkcmVzc2VzLCB0aGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBwcm92aWRl ZC4NCj4gK1JldHVybiBhIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIHdpdGggZnJhbWUgdHlwZQ0K PiArc3NwX2ZyYW1lX3R5cGU6Om5vbl9yZXR1cm5fZnJhbWUsIGlmIHRoZSBzaGFkb3cgc3RhY2sg cG9pbnRlciBTU1ANCj4gK2JlbG9uZ3MgdG8gYSB2YWxpZCBzaGFkb3cgc3RhY2sgZnJhbWUgd2hp bGUgdGhlIGVsZW1lbnQgb24gdGhlIHNoYWRvdw0KPiArc3RhY2sgVkFMVUUgZG9lcyBub3QgcmVm ZXIgdG8gYSByZXR1cm4gYWRkcmVzcy4gIEluIHRoYXQgY2FzZSwgYWxzbyB0aGUNCj4gK2ZyYW1l J3MgYXR0cmlidXRlIG5vbl9yZXR1cm5fZGVzY3JpcHRpb24gaGFzIHRvIGJlIHNldCB0byBhIHN0 cmluZw0KPiArd2hpY2ggaXMgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgb24gdGhl IHNoYWRvdyBzdGFjayBpbiB0aGUNCj4gK3NoYWRvdyBzdGFjayBiYWNrdHJhY2UuICBPdGhlcndp c2UsIHJldHVybiBhbiBlbXB0eSBvcHRpb25hbC4NCj4gKyIiIiwNCj4gKyAgICB0eXBlPSJzdGQ6 Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiIsDQo+ICsgICAgbmFtZT0iaXNfbm9f cmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzIiwNCj4gKyAgICBwYXJhbXM9Ww0KPiArICAgICAg ICAoImNvbnN0IENPUkVfQUREUiIsICJzc3AiKSwNCj4gKyAgICAgICAgKCJjb25zdCBDT1JFX0FE RFIiLCAidmFsdWUiKSwNCj4gKyAgICAgICAgKCJjb25zdCB1bnNpZ25lZCBsb25nIiwgImxldmVs IiksDQo+ICsgICAgXSwNCj4gKyAgICBwcmVkaWNhdGU9VHJ1ZSwNCj4gKykNCj4gZGlmZiAtLWdp dCBhL2dkYi9zaGFkb3ctc3RhY2suYyBiL2dkYi9zaGFkb3ctc3RhY2suYyBpbmRleA0KPiAxNjBk MzBlMGJmYi4uZGJkODk1OTc1M2QgMTAwNjQ0DQo+IC0tLSBhL2dkYi9zaGFkb3ctc3RhY2suYw0K PiArKysgYi9nZGIvc2hhZG93LXN0YWNrLmMNCj4gQEAgLTIyLDYgKzIyLDEyIEBADQo+ICAjaW5j bHVkZSAiZnJhbWUuaCINCj4gICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCINCj4gICNpbmNsdWRl ICJzaGFkb3ctc3RhY2suaCINCj4gKyNpbmNsdWRlICJzdGFjay5oIg0KPiArI2luY2x1ZGUgInNv bGliLmgiDQo+ICsjaW5jbHVkZSAiZXZlbnQtdG9wLmgiDQo+ICsjaW5jbHVkZSAiY2xpL2NsaS1z dHlsZS5oIg0KPiArI2luY2x1ZGUgImJ1ZmZlcmVkLXN0cmVhbXMuaCINCj4gKyNpbmNsdWRlICJp bmZlcmlvci5oIg0KPiANCj4gIGVudW0gY2xhc3Mgc3NwX3VwZGF0ZV9kaXJlY3Rpb24NCj4gIHsN Cj4gQEAgLTE2MiwzICsxNjgsNTA2IEBAIGR3YXJmMl9wcmV2X3NzcCAoY29uc3QgZnJhbWVfaW5m b19wdHINCj4gJnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLA0KPiAgICByZXR2YWwtPm1h cmtfYnl0ZXNfdW5hdmFpbGFibGUgKDAsIHJldHZhbC0+dHlwZSAoKS0+bGVuZ3RoICgpKTsNCj4g ICAgcmV0dXJuIHJldHZhbDsNCj4gIH0NCj4gKw0KPiArLyogUmV0dXJuIHRydWUsIGlmIFBDIGlz IGluIHRoZSBtaWRkbGUgb2YgYSBzdGF0ZW1lbnQuICBOb3RlIHRoYXQgaW4gdGhlDQo+ICsgICBt aWRkbGUgb2YgYSBzdGF0ZW1lbnQgUEMgcmFuZ2UgaW5jbHVkZXMgc2FsLmVuZCAoU0FMLlBDLCBT QUwuRU5EXS4NCj4gKyAgIFJldHVybiBmYWxzZSwgaWYNCj4gKyAgIC0gU0FMLklTX1NUTVQgaXMg ZmFsc2UNCj4gKyAgIC0gdGhlcmUgaXMgbm8gbG9jYXRpb24gaW5mb3JtYXRpb24gYXNzb2NpYXRl ZCB3aXRoIHRoaXMgU0FMLCB3aGljaA0KPiArICAgY291bGQgaGFwcGVuIGluIGNhc2Ugb2YgaW5s aW5lZCBmdW5jdGlvbnMNCj4gKyAgIC0gUEMgaXMgbm90IGluIHRoZSByYW5nZSAoU0FMLlBDLCBT QUwuRU5EXS4NCj4gKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBzdGFjay5jOmZyYW1l X3Nob3dfYWRkcmVzcyBidXQgaXMgdXNlZA0KPiArICAgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBp biB0aGUgbWlkZGxlIG9mIGEgc3RhdGVtZW50IG9ubHksIG5vdCB0byBkZWNpZGUNCj4gKyAgIGlm IHdlIHNob3VsZCBwcmludCBhIGZyYW1lJ3MgYWRkcmVzcy4gICovDQo+ICsNCj4gK3N0YXRpYyBi b29sDQo+ICtwY19pbl9taWRkbGVfb2Zfc3RhdGVtZW50IChDT1JFX0FERFIgcGMsIHN5bXRhYl9h bmRfbGluZSBzYWwpIHsNCj4gKyAgaWYgKHNhbC5pc19zdG10ID09IGZhbHNlKQ0KPiArICAgIHJl dHVybiBmYWxzZTsNCj4gKw0KPiArICAvKiBJZiB0aGVyZSBpcyBhIGxpbmUgbnVtYmVyLCBidXQg bm8gUEMsIHRoZW4gdGhlcmUgaXMgbm8gbG9jYXRpb24NCj4gKyAgICAgaW5mb3JtYXRpb24gYXNz b2NpYXRlZCB3aXRoIHRoaXMgc2FsLiAgVGhlIG9ubHkgd2F5IHRoYXQgc2hvdWxkDQo+ICsgICAg IGhhcHBlbiBpcyBmb3IgdGhlIGNhbGwgc2l0ZXMgb2YgaW5saW5lZCBmdW5jdGlvbnMgKFNBTCBj b21lcyBmcm9tDQo+ICsgICAgIGZpbmRfc2FsX2Zvcl9wYykuICBPdGhlcndpc2UsIHdlIHdvdWxk IGhhdmUgc29tZSBQQyByYW5nZSBpZiB0aGUgU0FMDQo+ICsgICAgIGNhbWUgZnJvbSBhIGxpbmUg dGFibGUuICBIb3dldmVyLCBhcyB3ZSBkb24ndCBoYXZlIGEgZnJhbWUgZm9yIHRoaXMNCj4gKyAg ICAgZnVuY3Rpb24gd2UgY2Fubm90IGFzc2VydCAoaW4gY29udHJhc3QgdG8gZnJhbWVfc2hvd19h ZGRyZXNzKS4gICovDQo+ICsgaWYgKHNhbC5saW5lICE9IDAgJiYgc2FsLnBjID09IDAgJiYgc2Fs LmVuZCA9PSAwKQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICByZXR1cm4gcGMgPiBz YWwucGMgJiYgcGMgPD0gc2FsLmVuZDsNCj4gK30NCj4gKw0KPiArLyogQXR0ZW1wdCB0byBvYnRh aW4gdGhlIGZ1bmN0aW9uIG5hbWUgYmFzZWQgb24gdGhlIHN5bWJvbCBvZiBQQy4gICovDQo+ICsN Cj4gK3N0YXRpYyBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPg0KPiArZmluZF9wY19mdW5u YW1lIChDT1JFX0FERFIgcGMpDQo+ICt7DQo+ICsgIHN5bWJvbCAqZnVuYyA9IGZpbmRfc3ltYm9s X2Zvcl9wYyAocGMpOw0KPiArICBpZiAoZnVuYyAhPSBudWxscHRyKQ0KPiArICAgIHJldHVybiBm aW5kX3N5bWJvbF9mdW5uYW1lIChmdW5jKTsNCj4gKw0KPiArICBnZGI6OnVuaXF1ZV94bWFsbG9j X3B0cjxjaGFyPiBmdW5uYW1lOyAgYm91bmRfbWluaW1hbF9zeW1ib2wNCj4gbXN5bWJvbA0KPiAr ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7ICBpZiAobXN5bWJvbC5taW5zeW0g IT0gbnVsbHB0cikNCj4gKyAgICBmdW5uYW1lID0gbWFrZV91bmlxdWVfeHN0cmR1cCAobXN5bWJv bC5taW5zeW0tPnByaW50X25hbWUgKCkpOw0KPiArDQo+ICsgIHJldHVybiBmdW5uYW1lOw0KPiAr fQ0KPiArDQo+ICsvKiBQcmludCBpbmZvcm1hdGlvbiBvZiBzaGFkb3cgc3RhY2sgZnJhbWUgaW5m byBGUkFNRS4gIFRoZSBvdXRwdXQgaXMNCj4gKyAgIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gUFJJ TlRfV0hBVC4gIEZvciB0aGUgbWVhbmluZyBvZiBQUklOVF9XSEFULA0KPiBzZWUNCj4gKyAgIGVu dW0gcHJpbnRfd2hhdCBjb21tZW50cyBpbiBmcmFtZS5oLiAgTm90ZSB0aGF0IFBSSU5UX1dIQVQg aXMNCj4gb3ZlcnJpZGRlbiwNCj4gKyAgIGlmIFBSSU5UX09QVElPTlMucHJpbnRfZnJhbWVfaW5m byAhPSBwcmludF9mcmFtZV9pbmZvX2F1dG8uICAqLw0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiAr ZG9fcHJpbnRfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gKyAgKHVpX291dCAqdWlvdXQsIGNv bnN0IGZyYW1lX3ByaW50X29wdGlvbnMgJmZwX29wdHMsDQo+ICsgICBjb25zdCBzaGFkb3dfc3Rh Y2tfZnJhbWVfaW5mbyAmZnJhbWUsIHByaW50X3doYXQgcHJpbnRfd2hhdCkgew0KPiArICAvKiBP biB4ODYgdGhlcmUgY2FuIGJlIGEgc2hhZG93IHN0YWNrIHRva2VuIGF0IGJpdCA2My4gIEZvciB4 MzIsDQo+ICsgICAgIHRoZSBhZGRyZXNzIHNpemUgaXMgb25seSAzMiBiaXQuICBUaHVzLCB3ZSBz dGlsbCBtdXN0IHVzZQ0KPiArICAgICBnZGJhcmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVf YWxpZ25lZCAoYW5kIG5vdA0KPiArICAgICBnZGJhcmNoX2FkZHJfYml0KSB0byBkZXRlcm1pbmUg dGhlIHdpZHRoIG9mIHRoZSBhZGRyZXNzIHRvIGJlDQo+ICsgICAgIHByaW50ZWQuICAqLw0KPiAr ICBjb25zdCBpbnQgZWxlbWVudF9zaXplDQo+ICsgICAgPSBnZGJhcmNoX3NoYWRvd19zdGFja19l bGVtZW50X3NpemVfYWxpZ25lZCAoZnJhbWUuYXJjaCk7DQo+ICsNCj4gKyAgaWYgKGZyYW1lLnR5 cGUgIT0gc3NwX2ZyYW1lX3R5cGU6Om5vcm1hbF9mcmFtZSkNCj4gKyAgICB7DQo+ICsgICAgICBz dGQ6OnN0cmluZyBzdHI7DQo+ICsgICAgICBpZiAoZnJhbWUudHlwZSA9PSBzc3BfZnJhbWVfdHlw ZTo6bm9uX3JldHVybl9mcmFtZSkNCj4gKwl7DQo+ICsJICAvKiBGb3Igbm9uLXJldHVybiBmcmFt ZXMsIHRoZSBzdHJpbmcgbXVzdCBoYXZlIGEgdmFsdWUuICAqLw0KPiArCSAgIGdkYl9hc3NlcnQg KGZyYW1lLm5vbl9yZXR1cm5fZGVzY3JpcHRpb24uaGFzX3ZhbHVlICgpKTsNCj4gKwkgICBzdHIg PSBmcmFtZS5ub25fcmV0dXJuX2Rlc2NyaXB0aW9uLnZhbHVlICgpOw0KPiArCX0NCj4gKyAgICAg IGVsc2UNCj4gKwlnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgiSW52YWxpZCBzaGFkb3cgc3RhY2sg ZnJhbWUgdHlwZS4iKTsNCj4gKw0KPiArICAgICAgdWlfb3V0X2VtaXRfdHVwbGUgdHVwbGVfZW1p dHRlciAodWlvdXQsICJzaGFkb3ctc3RhY2stZnJhbWUiKTsNCj4gKyAgICAgIHVpb3V0LT50ZXh0 ICgiIyIpOw0KPiArICAgICAgdWlvdXQtPmZpZWxkX2ZtdF9zaWduZWQgKDIsIHVpX2xlZnQsICJs ZXZlbCIsIGZyYW1lLmxldmVsKTsNCj4gKw0KPiArICAgICAgdWlvdXQtPmZpZWxkX3N0cmluZyAo ImZ1bmMiLCBzdHIsIG1ldGFkYXRhX3N0eWxlLnN0eWxlICgpKTsNCj4gKw0KPiArICAgICAgdWlv dXQtPnRleHQgKCJcbiIpOw0KPiArICAgICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsNCj4gKyAg ICAgIHJldHVybjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgaWYgKGZwX29wdHMucHJpbnRfZnJhbWVf aW5mbyAhPSBwcmludF9mcmFtZV9pbmZvX2F1dG8pDQo+ICsgICAgew0KPiArICAgICAgLyogVXNl IHRoZSBzcGVjaWZpYyBmcmFtZSBpbmZvcm1hdGlvbiBkZXNpcmVkIGJ5IHRoZSB1c2VyLiAgKi8N Cj4gKyAgICAgIHByaW50X3doYXQNCj4gKwk9ICpwcmludF9mcmFtZV9pbmZvX3RvX3ByaW50X3do YXQgKGZwX29wdHMucHJpbnRfZnJhbWVfaW5mbyk7DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIEF0 IHRoaXMgcG9pbnQsIHNpbmNlIEZSQU1FIGlzIGEgc2hhZG93IHN0YWNrIGZyYW1lIHdoaWNoIGJl bG9uZ3MgdG8gYQ0KPiArICAgICByZXR1cm4gYWRkcmVzcywgd2Ugc2hvdWxkIGFsd2F5cyBoYXZl IGEgdmFsaWQgc3ltdGFiX2FuZF9saW5lDQo+ICsgb2JqZWN0LiAgKi8gIGdkYl9hc3NlcnQgKGZy YW1lLnNhbC5oYXNfdmFsdWUgKCkpOw0KPiArDQo+ICsgIGNvbnN0IHN5bXRhYl9hbmRfbGluZSAm c2FsID0gZnJhbWUuc2FsLnZhbHVlICgpOyAgaWYNCj4gKyAoc2hvdWxkX3ByaW50X2xvY2F0aW9u IChwcmludF93aGF0KSB8fCBzYWwuc3ltdGFiID09IG51bGxwdHIpDQo+ICsgICAgew0KPiArICAg ICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZnVubmFtZSA9IGZpbmRfcGNfZnVubmFt ZQ0KPiArIChmcmFtZS52YWx1ZSk7DQo+ICsNCj4gKyAgICAgIHVpX291dF9lbWl0X3R1cGxlIHR1 cGxlX2VtaXR0ZXIgKHVpb3V0LCAic2hhZG93LXN0YWNrLWZyYW1lIik7DQo+ICsgICAgICB1aW91 dC0+dGV4dCAoIiMiKTsNCj4gKyAgICAgIHVpb3V0LT5maWVsZF9mbXRfc2lnbmVkICgyLCB1aV9s ZWZ0LCAibGV2ZWwiLCBmcmFtZS5sZXZlbCk7DQo+ICsNCj4gKyAgICAgIHVpb3V0LT5maWVsZF9z dHJpbmcNCj4gKwkoImFkZHIiLCBoZXhfc3RyaW5nX2N1c3RvbSAoZnJhbWUudmFsdWUsIGVsZW1l bnRfc2l6ZSAqIDIpLA0KPiArCSBhZGRyZXNzX3N0eWxlLnN0eWxlICgpKTsNCj4gKw0KPiArICAg ICAgdWlvdXQtPnRleHQgKCIgaW4gIik7DQo+ICsgICAgICBwcmludF9mdW5uYW1lICh1aW91dCwg ZnVubmFtZSk7DQo+ICsNCj4gKyAgICAgIGlmIChwcmludF93aGF0ICE9IFNIT1JUX0xPQ0FUSU9O ICYmIHNhbC5zeW10YWIgIT0gbnVsbHB0cikNCj4gKwlwcmludF9maWxlbmFtZSAodWlvdXQsIHNh bCk7DQo+ICsNCj4gKyAgICAgIGlmIChwcmludF93aGF0ICE9IFNIT1JUX0xPQ0FUSU9ODQo+ICsJ ICAmJiAoZnVubmFtZSA9PSBudWxscHRyIHx8IHNhbC5zeW10YWIgPT0gbnVsbHB0cikNCj4gKwkg ICYmIHNhbC5wc3BhY2UgIT0gbnVsbHB0cikNCj4gKwl7DQo+ICsJICBjb25zdCBjaGFyICpsaWIg PSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAoc2FsLnBzcGFjZSwNCj4gKwkJCQkJCSAgICAgZnJh bWUudmFsdWUpOw0KPiArCSAgaWYgKGxpYiAhPSBudWxscHRyKQ0KPiArCSAgICBwcmludF9saWIg KHVpb3V0LCBsaWIpOw0KPiArCX0NCj4gKw0KPiArICAgICAgdWlvdXQtPnRleHQgKCJcbiIpOw0K PiArICAgIH0NCj4gKw0KPiArICBpZiAocHJpbnRfd2hhdCA9PSBTUkNfTElORSB8fCBwcmludF93 aGF0ID09IFNSQ19BTkRfTE9DKQ0KPiArICAgIHsNCj4gKyAgICAgIGJvb2wgbWlkX3N0YXRlbWVu dCA9IHBjX2luX21pZGRsZV9vZl9zdGF0ZW1lbnQgKGZyYW1lLnZhbHVlLA0KPiArIHNhbCk7DQo+ ICsNCj4gKyAgICAgIC8qIFdoaWxlIGZvciB0aGUgb3JkaW5hcnkgYmFja3RyYWNlIHByaW50aW5n IG9mIHBjIGlzIGJhc2VkIG9uDQo+ICsJIE1JRF9TVEFURU1FTlQgZGV0ZXJtaW5lZCBieSBzdGFj ay5jOmZyYW1lX3Nob3dfYWRkcmVzcyBhbmQNCj4gdGhlDQo+ICsJIHByaW50IGNvbmZpZ3VyYXRp b24sIGZvciBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIHdlIGFsd2F5cyBwcmludA0KPiArCSB0aGUg cGMvYWRkcmVzcyBvbiB0aGUgc2hhZG93IHN0YWNrLiAgKi8NCj4gKyAgICAgIGJvb2wgcHJpbnRf YWRkcmVzcyA9IHRydWU7DQo+ICsgICAgICBwcmludF9zb3VyY2UgKHVpb3V0LCBmcmFtZS5hcmNo LCBmcmFtZS52YWx1ZSwgc2FsLCBwcmludF9hZGRyZXNzLA0KPiArCQkgICAgbWlkX3N0YXRlbWVu dCwgIiIpOw0KPiArICAgIH0NCj4gKw0KPiArICBnZGJfZmx1c2ggKGdkYl9zdGRvdXQpOw0KPiAr fQ0KPiArDQo+ICsvKiBSZWRpcmVjdCBvdXRwdXQgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyIGZvciB0 aGUgZHVyYXRpb24gb2YNCj4gKyAgIGRvX3ByaW50X3NoYWRvd19zdGFja19mcmFtZV9pbmZvLiAg Ki8NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK3ByaW50X3NoYWRvd19zdGFja19mcmFtZV9pbmZv DQo+ICsgIChjb25zdCBmcmFtZV9wcmludF9vcHRpb25zICZmcF9vcHRzLA0KPiArICAgY29uc3Qg c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8gJmZyYW1lLA0KPiArICAgcHJpbnRfd2hhdCBwcmludF93 aGF0KQ0KPiArew0KPiArICBkb193aXRoX2J1ZmZlcmVkX291dHB1dA0KPiArICAgIChkb19wcmlu dF9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbywgY3VycmVudF91aW91dCwNCj4gKyAgICAgZnBfb3B0 cywgZnJhbWUsIHByaW50X3doYXQpOw0KPiArfQ0KPiArDQo+ICsvKiBFeHRyYWN0IGEgY2hhciBh cnJheSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgcHJpbnRpbmcgYSByZWFzb25hYmxlDQo+ICsgICBl cnJvciBtZXNzYWdlIGZvciBSRUFTT04uICBSRUFTT04gbXVzdCBub3QgYmUgTk9fRVJST1IgaWYg cGFzc2VkDQo+ICsgICB0byB0aGlzIGZ1bmN0aW9uLiAgKi8NCj4gKw0KPiArc3RhdGljIGNvbnN0 IGNoYXIgKg0KPiArc3NwX3Vud2luZF9zdG9wX3JlYXNvbl90b19lcnJfc3RyaW5nIChzc3BfdW53 aW5kX3N0b3BfcmVhc29uIHJlYXNvbikgew0KPiArICBzd2l0Y2ggKHJlYXNvbikNCj4gKyAgICB7 DQo+ICsgICAgY2FzZSBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjptZW1vcnlfcmVhZF9lcnJvcjoN Cj4gKyAgICAgIHJldHVybiBfKCJzaGFkb3cgc3RhY2sgbWVtb3J5IHJlYWQgZmFpbHVyZSIpOw0K PiArICAgIH0NCj4gKw0KPiArICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgiaW52YWxpZCB1bndp bmQgc3RvcCByZWFzb24uIik7IH0NCj4gKw0KPiArLyogUmVhZCB0aGUgbWVtb3J5IGF0IHNoYWRv dyBzdGFjayBwb2ludGVyIFNTUCBhbmQgYXNzaWduIGl0IHRvDQo+ICsgICBSRVRVUk5fVkFMVUUu ICBJbiBjYXNlIG9mIHN1Y2Nlc3MsIHJldHVybiB0cnVlLiAgT3RoZXJ3aXNlLA0KPiArICAgcmV0 dXJuIGZhbHNlLiAgKi8NCj4gKw0KPiArc3RhdGljIGJvb2wNCj4gK3JlYWRfc2hhZG93X3N0YWNr X21lbW9yeSAoZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHNzcCwNCj4gKwkJCSAgQ09SRV9B RERSICZyZXR1cm5fdmFsdWUpDQo+ICt7DQo+ICsgIC8qIE9uIHg4NiB0aGVyZSBjYW4gYmUgYSBz aGFkb3cgc3RhY2sgdG9rZW4gYXQgYml0IDYzLiAgRm9yIHgzMiwgdGhlDQo+ICsgICAgIGFkZHJl c3Mgc2l6ZSBpcyBvbmx5IDMyIGJpdC4gIFRodXMsIHdlIHN0aWxsIG11c3QgdXNlDQo+ICsgICAg IGdkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChhbmQgbm90DQo+IGdk YmFyY2hfYWRkcl9iaXQpDQo+ICsgICAgIHRvIHJlYWQgdGhlIGZ1bGwgZWxlbWVudCBmb3IgeDMy IGFzIHdlbGwuICAqLw0KPiArICBjb25zdCBpbnQgZWxlbWVudF9zaXplDQo+ICsgICAgPSBnZGJh cmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoZ2RiYXJjaCk7DQo+ICsNCj4g KyAgY29uc3QgYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJh cmNoKTsNCj4gKyAgcmV0dXJuIHNhZmVfcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoc3Nw LA0KPiArCQkJCQkgICAgZWxlbWVudF9zaXplLA0KPiArCQkJCQkgICAgYnl0ZV9vcmRlciwNCj4g KwkJCQkJICAgICZyZXR1cm5fdmFsdWUpOw0KPiArfQ0KPiArDQo+ICsvKiAgSWYgcG9zc2libGUs IHJldHVybiB0aGUgc3RhcnRpbmcgc2hhZG93IHN0YWNrIGZyYW1lIGluZm8gbmVlZGVkIHRvIGhh bmRsZQ0KPiArICAgIENPVU5UIG91dGVybW9zdCBmcmFtZXMuICBUaGlzIGlzIHRoZSBlcXVpdmFs ZW50IGZ1bmN0aW9uIHRvDQo+ICsgICAgc3RhY2suYzp0cmFpbGluZ19vdXRlcm1vc3RfZnJhbWUg d2hpY2ggaXMgdXNlZCB0byBwcmludCB0aGUgbm9ybWFsDQo+IGJhY2t0cmFjZS4NCj4gKyAgICBG UkFNRSBzaG91bGQgcG9pbnQgdG8gdGhlIGlubmVybW9zdCAobmV3ZXN0KSBlbGVtZW50IG9mIHRo ZSBzaGFkb3cNCj4gc3RhY2suDQo+ICsgICAgUkFOR0UgaXMgdGhlIHNoYWRvdyBzdGFjayBtZW1v cnkgcmFuZ2UgW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNzKQ0KPiArICAgIGNvcnJlc3BvbmRp bmcgdG8gRlJBTUUncyBzaGFkb3cgc3RhY2sgcG9pbnRlci4gIElmIENPVU5UIGlzIGJpZ2dlciB0 aGFuDQo+IHRoZQ0KPiArICAgIG51bWJlciBvZiBlbGVtZW50cyBvbiB0aGUgc2hhZG93IHN0YWNr LCByZXR1cm4gRlJBTUUuICBJbiBjYXNlIG9mDQo+IGZhaWx1cmUsDQo+ICsgICAgYXNzaWduIGFu IGFwcHJvcHJpYXRlIHNzcF91bndpbmRfc3RvcF9yZWFzb24gaW4NCj4gK0ZSQU1FLT5VTldJTkRf U1RPUF9SRUFTT04uICAqLw0KPiArDQo+ICtzdGF0aWMgc3RkOjpvcHRpb25hbDxzaGFkb3dfc3Rh Y2tfZnJhbWVfaW5mbz4NCj4gK2dldF90cmFpbGluZ19vdXRlcm1vc3Rfc2hhZG93X3N0YWNrX2Zy YW1lX2luZm8NCj4gKyAgKGNvbnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4gcmFu Z2UsDQo+ICsgICBMT05HRVNUIGNvdW50LCBzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbyAmZnJhbWUp IHsNCj4gKyAgZ2RiX2Fzc2VydCAoY291bnQgPiAwKTsNCj4gKw0KPiArICBzdGQ6Om9wdGlvbmFs PHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiB0cmFpbGluZw0KPiArICAgID0gc3RkOjpvcHRpb25h bDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4gKGZyYW1lKTsNCj4gKw0KPiArICBzdGQ6Om9wdGlv bmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiBjdXJyZW50ID0gdHJhaWxpbmc7ICB3aGlsZQ0K PiArIChjdXJyZW50Lmhhc192YWx1ZSAoKSAmJiBjb3VudC0tKQ0KPiArICAgIHsNCj4gKyAgICAg IFFVSVQ7DQo+ICsgICAgICBjdXJyZW50ID0gY3VycmVudC0+dW53aW5kX3ByZXZfc2hhZG93X3N0 YWNrX2ZyYW1lX2luZm8gKHJhbmdlKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgLyogV2lsbCBzdG9w IHdoZW4gQ1VSUkVOVCByZWFjaGVzIHRoZSBvdXRlcm1vc3QgKG9sZGVzdCkgZWxlbWVudCBvZiB0 aGUNCj4gKyAgICAgc2hhZG93IHN0YWNrLiAgVFJBSUxJTkcgd2lsbCBiZSBDT1VOVCBiZWxvdyBp dC4gICovDQo+ICsgIHdoaWxlIChjdXJyZW50Lmhhc192YWx1ZSAoKSkNCj4gKyAgICB7DQo+ICsg ICAgICBRVUlUOw0KPiArICAgICAgdHJhaWxpbmcgPSB0cmFpbGluZy0+dW53aW5kX3ByZXZfc2hh ZG93X3N0YWNrX2ZyYW1lX2luZm8gKHJhbmdlKTsNCj4gKyAgICAgIC8qIFNpbmNlIGN1cnJlbnQg aGFzIGEgdmFsdWUgdW50aWwgdGhpcyBwb2ludCB3ZSBjYW4gYXNzdW1lIHRoYXQNCj4gKwkgdHJh aWxpbmcgYWxzbyBoYXMgYSB2YWx1ZS4gICovDQo+ICsgICAgICBnZGJfYXNzZXJ0ICh0cmFpbGlu Zy5oYXNfdmFsdWUgKCkpOw0KPiArICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnVud2luZF9wcmV2 X3NoYWRvd19zdGFja19mcmFtZV9pbmZvIChyYW5nZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgIHJl dHVybiB0cmFpbGluZzsNCj4gK30NCj4gKw0KPiArLyogSWYgcG9zc2libGUsIGdldCBzaGFkb3cg c3RhY2sgZnJhbWUgaW5mbyBmb3IgdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyDQo+ICsgICBTU1Ag YW5kIGl0cyBjdXJyZW50IGZyYW1lIExFVkVMLiAgUGFzcyBGQUxMQkFDS19BUkNIIHdoaWNoIGNh biBiZSB1c2VkDQo+ICsgICBhcyBmYWxsYmFjayBnZGJhcmNoIGluIGNhc2UgdGhlIGdkYmFyY2gg Y2Fubm90IGJlIGV4dHJhY3RlZCBmcm9tIHRoZQ0KPiArICAgU0FMLiAgVXN1YWxseSB0aGlzIGlz IHRoZSBnZGJhcmNoIG9mIHRoZSBwcmV2aW91cyBmcmFtZS4gICovDQo+ICsNCj4gK3N0YXRpYyBz dGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPg0KPiArZ2V0X3NoYWRvd19zdGFj a19mcmFtZV9pbmZvDQo+ICsgIChnZGJhcmNoICpmYWxsYmFja19hcmNoLCBjb25zdCBDT1JFX0FE RFIgc3NwLCB1bnNpZ25lZCBsb25nIGxldmVsKSB7DQo+ICsgIENPUkVfQUREUiB2YWx1ZTsNCj4g KyAgaWYgKCFyZWFkX3NoYWRvd19zdGFja19tZW1vcnkgKGZhbGxiYWNrX2FyY2gsIHNzcCwgdmFs dWUpKQ0KPiArICAgIHJldHVybiB7fTsNCj4gKw0KPiArICBpZiAoZ2RiYXJjaF9pc19ub19yZXR1 cm5fc2hhZG93X3N0YWNrX2FkZHJlc3NfcCAoZmFsbGJhY2tfYXJjaCkpDQo+ICsgICAgew0KPiAr ICAgICAgc3RkOjpvcHRpb25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4gbm9fcmV0dXJuX2Zy YW1lDQo+ICsJPSBnZGJhcmNoX2lzX25vX3JldHVybl9zaGFkb3dfc3RhY2tfYWRkcmVzcyAoZmFs bGJhY2tfYXJjaCwgc3NwLA0KPiArCQkJCQkJICAgICB2YWx1ZSwgbGV2ZWwpOw0KPiArICAgICAg aWYgKG5vX3JldHVybl9mcmFtZS5oYXNfdmFsdWUgKCkpDQo+ICsJcmV0dXJuICpub19yZXR1cm5f ZnJhbWU7DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhh dCBTU1AgcG9pbnRzIHRvIFZBTFVFIHdoaWNoIGlzIGEgcmV0dXJuDQo+ICsgICAgIGFkZHJlc3Mu ICBJbiBjb250cmFzdCB0byBmaW5kX2ZyYW1lX3NhbCB3aGljaCBpcyB1c2VkIGZvciB0aGUgbm9y bWFsDQo+ICsgICAgIGJhY2t0cmFjZSBjb21tYW5kLCBWQUxVRSBhbHdheXMgcG9pbnRzIGF0IHRo ZSByZXR1cm4gaW5zdHJ1Y3Rpb24NCj4gKyAgICAgKHdoaWNoIGlzICphZnRlciogdGhlIGNhbGwg aW5zdHJ1Y3Rpb24pLiAgU2luY2Ugd2Ugd2FudCB0byBnZXQgdGhlDQo+ICsgICAgIGxpbmUgY29u dGFpbmluZyB0aGUgY2FsbCAoYmVjYXVzZSB0aGUgY2FsbCBpcyB3aGVyZSB0aGUgdXNlciB0aGlu a3MNCj4gKyAgICAgdGhlIHByb2dyYW0gaXMpLCB3ZSBwYXNzIDEgaGVyZSBhcyBzZWNvbmQgYXJn dW1lbnQuICAqLw0KPiArIHN5bXRhYl9hbmRfbGluZSBzYWwgPSBmaW5kX3NhbF9mb3JfcGMgKHZh bHVlLCAxKTsgIHN0cnVjdCBnZGJhcmNoDQo+ICsgKnNhbF9hcmNoID0gZ2V0X3NhbF9hcmNoIChz YWwpOw0KPiArDQo+ICsgIC8qIEZhbGwgYmFjayB0byB0aGUgcHJldmlvdXMgZ2RiYXJjaCBpbiBj YXNlIHdlIGNhbm5vdCBleHRyYWN0IGl0IGZyb20NCj4gKyAgICAgU0FMLiAgKi8NCj4gKyAgaWYg KHNhbF9hcmNoID09IG51bGxwdHIpDQo+ICsgICAgc2FsX2FyY2ggPSBmYWxsYmFja19hcmNoOw0K PiArDQo+ICsgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZvPg0K PiArICAgICh7c3NwLCB2YWx1ZSwgbGV2ZWwsIHNhbF9hcmNoLCBzYWwsDQo+ICsgICAgICBzc3Bf ZnJhbWVfdHlwZTo6bm9ybWFsX2ZyYW1lLCB7fSwNCj4gKyAgICAgIHNzcF91bndpbmRfc3RvcF9y ZWFzb246Om5vX2Vycm9yfSk7DQo+ICt9DQo+ICsNCj4gK3N0ZDo6b3B0aW9uYWw8c2hhZG93X3N0 YWNrX2ZyYW1lX2luZm8+DQo+ICtzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbzo6dW53aW5kX3ByZXZf c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gKyAgKHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVf QUREUj4gcmFuZ2UpIHsNCj4gKyAgaWYgKHRoaXMtPnR5cGUgPT0gc3NwX2ZyYW1lX3R5cGU6Om5v cm1hbF9mcmFtZQ0KPiArICAgICAgJiYgIXVzZXJfc2V0X2JhY2t0cmFjZV9vcHRpb25zLmJhY2t0 cmFjZV9wYXN0X21haW4NCj4gKyAgICAgICYmIHRoaXMtPmluc2lkZV9tYWluX2Z1bmMgKCkpDQo+ ICsgICAgew0KPiArICAgICAgLyogRG9uJ3QgdW53aW5kIHBhc3QgbWFpbigpLiAgKi8NCj4gKyAg ICAgIHJldHVybiB7fTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgLyogSWYgdGhlIHVzZXIncyBiYWNr dHJhY2UgbGltaXQgaGFzIGJlZW4gZXhjZWVkZWQsIHN0b3AuICBXZSBtdXN0DQo+ICsgICAgIGFk ZCB0d28gdG8gdGhlIGN1cnJlbnQgbGV2ZWw7IG9uZSBvZiB0aG9zZSBhY2NvdW50cyBmb3INCj4g KyAgICAgYmFja3RyYWNlX2xpbWl0IGJlaW5nIDEtYmFzZWQgYW5kIHRoZSBsZXZlbCBiZWluZyAw LWJhc2VkLCBhbmQgdGhlDQo+ICsgICAgIG90aGVyIGFjY291bnRzIGZvciB0aGUgbGV2ZWwgb2Yg dGhlIG5ldyBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBsZXZlbA0KPiArICAgICBvZiB0aGUgY3VycmVu dCBmcmFtZS4gICovDQo+ICsgIGlmICh0aGlzLT5sZXZlbCArIDIgPiB1c2VyX3NldF9iYWNrdHJh Y2Vfb3B0aW9ucy5iYWNrdHJhY2VfbGltaXQpDQo+ICsgICAgcmV0dXJuIHt9Ow0KPiArDQo+ICsg IENPUkVfQUREUiBuZXdfc3NwDQo+ICsgICAgPSB1cGRhdGVfc2hhZG93X3N0YWNrX3BvaW50ZXIg KHRoaXMtPmFyY2gsIHRoaXMtPnNzcCwNCj4gKwkJCQkgICBzc3BfdXBkYXRlX2RpcmVjdGlvbjo6 b3V0ZXIpOw0KPiArDQo+ICsgIGlmIChnZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFj a19wICh0aGlzLT5hcmNoKQ0KPiArICAgICAgJiYgZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFk b3dfc3RhY2sgKHRoaXMtPmFyY2gsIG5ld19zc3AsDQo+IHJhbmdlKSkNCj4gKyAgICByZXR1cm4g e307DQo+ICsgIGVsc2UgaWYgKGdkYmFyY2hfc3RhY2tfZ3Jvd3NfZG93biAodGhpcy0+YXJjaCkp DQo+ICsgICAgew0KPiArICAgICAgLyogVGhlIHNoYWRvdyBzdGFjayBncm93cyBkb3dud2FyZHMu ICAqLw0KPiArICAgICAgaWYgKG5ld19zc3AgPj0gcmFuZ2Uuc2Vjb25kKQ0KPiArCXsNCj4gKwkg IC8qIFdlIHJlYWNoZWQgdGhlIG91dGVybW9zdCBlbGVtZW50IG9mIHRoZSBzaGFkb3cgc3RhY2su ICAqLw0KPiArCSAgcmV0dXJuIHt9Ow0KPiArCX0NCj4gKyAgICAgIC8qIFdlIHVwZGF0ZWQgbmV3 X3NzcCB0b3dhcmRzIHRoZSBvdXRlcm1vc3QgZWxlbWVudCBvZiB0aGUgc2hhZG93DQo+ICsJIHN0 YWNrIGJlZm9yZSwgYW5kIG5ld19zc3AgbXVzdCBiZSBwb2ludGluZyB0byBzaGFkb3cgc3RhY2sN Cj4gKwkgbWVtb3J5LiAgKi8NCj4gKyAgICAgIGdkYl9hc3NlcnQgKG5ld19zc3AgPiByYW5nZS5m aXJzdCk7DQo+ICsgICAgfQ0KPiArICBlbHNlDQo+ICsgICAgew0KPiArICAgICAgLyogVGhlIHNo YWRvdyBzdGFjayBncm93cyB1cHdhcmRzLiAgKi8NCj4gKyAgICAgIGlmIChuZXdfc3NwIDwgcmFu Z2UuZmlyc3QpDQo+ICsJew0KPiArCSAgLyogV2UgcmVhY2hlZCB0aGUgb3V0ZXJtb3N0IGVsZW1l bnQgb2YgdGhlIHNoYWRvdyBzdGFjay4gICovDQo+ICsJICByZXR1cm4ge307DQo+ICsJfQ0KPiAr ICAgICAgLyogV2UgdXBkYXRlZCBuZXdfc3NwIHRvd2FyZHMgdGhlIG91dGVybW9zdCBlbGVtZW50 IG9mIHRoZSBzaGFkb3cNCj4gKwkgc3RhY2sgYmVmb3JlLCBhbmQgbmV3X3NzcCBtdXN0IGJlIHBv aW50aW5nIHRvIHNoYWRvdyBzdGFjaw0KPiArCSBtZW1vcnkuICAqLw0KPiArICAgICAgZ2RiX2Fz c2VydCAobmV3X3NzcCA8PSByYW5nZS5zZWNvbmQpOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBF eHRyYWN0IHRoZSBwcmV2aW91cyBzaGFkb3cgc3RhY2sgZnJhbWUgaW5mbyAobGV2ZWwgKyAxKS4g ICovDQo+ICsgc3RkOjpvcHRpb25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4gbmV3X2ZyYW1l DQo+ICsgICAgPSBnZXRfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8gKHRoaXMtPmFyY2gsIG5ld19z c3AsIHRoaXMtPmxldmVsICsNCj4gKyAxKTsNCj4gKw0KPiArICBpZiAoIW5ld19mcmFtZS5oYXNf dmFsdWUgKCkpDQo+ICsgICAgdGhpcy0+dW53aW5kX3N0b3BfcmVhc29uID0NCj4gKyBzc3BfdW53 aW5kX3N0b3BfcmVhc29uOjptZW1vcnlfcmVhZF9lcnJvcjsNCj4gKw0KPiArICByZXR1cm4gbmV3 X2ZyYW1lOw0KPiArfQ0KPiArDQo+ICtib29sDQo+ICtzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbzo6 aW5zaWRlX21haW5fZnVuYyAoKSBjb25zdCB7DQo+ICsgIGxhbmd1YWdlIGxhbmc7DQo+ICsgIHN5 bWJvbCAqc3ltID0gZmluZF9zeW1ib2xfZm9yX3BjICh0aGlzLT52YWx1ZSk7DQo+ICsgIGlmIChz eW0gIT0gbnVsbHB0cikNCj4gKyAgICBsYW5nID0gc3ltLT5sYW5ndWFnZSAoKTsNCj4gKyAgZWxz ZQ0KPiArICAgIHsNCj4gKyAgICAgIGJvdW5kX21pbmltYWxfc3ltYm9sIG1zeW1ib2wNCj4gKwk9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAodGhpcy0+dmFsdWUpOw0KPiArDQo+ICsgICAg ICBpZiAobXN5bWJvbC5taW5zeW0gIT0gbnVsbHB0cikNCj4gKwlsYW5nID0gbXN5bWJvbC5taW5z eW0tPmxhbmd1YWdlICgpOw0KPiArICAgICAgZWxzZQ0KPiArCXsNCj4gKwkgIC8qIElmIHdlIGNh bm5vdCBleHRyYWN0IHRoZSBzeW1ib2wsIHdlIGNhbm5vdCB1c2UgdGhlIGFkZHJlc3MgdG8NCj4g KwkgICAgIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbnNpZGUgbWFpbiBhbmQgd2UgYmV0 dGVyIHByaW50DQo+ICsJICAgICB0aGlzIGZyYW1lLCB0b28uICAqLw0KPiArCSAgcmV0dXJuIGZh bHNlOw0KPiArCX0NCj4gKyAgICB9DQo+ICsNCj4gKyAgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+ IHN5bV9hZGRyDQo+ICsgICAgPSBnZXRfbWFpbl9mdW5jX3N0YXJ0X3BjICh0aGlzLT5hcmNoLCBs YW5nKTsgIGlmDQo+ICsgKCFzeW1fYWRkci5oYXNfdmFsdWUgKCkgfHwgKnN5bV9hZGRyID09IDAp DQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIENPUkVfQUREUiBwY19mdW5jX3N0YXJ0 ID0gZ2V0X3BjX2Z1bmN0aW9uX3N0YXJ0ICh0aGlzLT52YWx1ZSk7ICBpZg0KPiArICgqc3ltX2Fk ZHIgPT0gcGNfZnVuY19zdGFydCkNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gKw0KPiArICByZXR1 cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gKy8qIFByaW50IGFsbCBlbGVtZW50cyBvbiB0aGUgc2hh ZG93IHN0YWNrIG9yIGp1c3QgdGhlIGlubmVybW9zdCBDT1VOVF9FWFANCj4gKyAgIGZyYW1lcy4g ICovDQo+ICsNCj4gK3ZvaWQNCj4gK2JhY2t0cmFjZV9zaGFkb3dfY29tbWFuZCAoY29uc3QgZnJh bWVfcHJpbnRfb3B0aW9ucyAmZnBfb3B0cywNCj4gKwkJCSAgY29uc3QgY2hhciAqY291bnRfZXhw LCBpbnQgZnJvbV90dHkpIHsNCj4gKyAgaWYgKCF0YXJnZXRfaGFzX3N0YWNrICgpKQ0KPiArICAg IGVycm9yIChfKCJObyBzaGFkb3cgc3RhY2suIikpOw0KPiArDQo+ICsgIGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfY3VycmVudF9hcmNoICgpOw0KPiArICBpZiAoIWdkYmFyY2hfYWRkcmVzc19pbl9z aGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlX3AgKGdkYmFyY2gpDQo+ICsgICAgICB8fCAhZ2RiYXJj aF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfcCAoZ2RiYXJjaCkNCj4gKyAgICAgIHx8IGdk YmFyY2hfc3NwX3JlZ251bSAoZ2RiYXJjaCkgPT0gLTEpDQo+ICsgICAgZXJyb3IgKF8oIlByaW50 aW5nIG9mIHRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIg0K PiArCSAgICAgIiB0aGUgY3VycmVudCB0YXJnZXQuIikpOw0KPiArDQo+ICsgIHJlZ2NhY2hlICpy ZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGluZmVyaW9yX3RocmVhZCAoKSk7ICBib29s DQo+ICsgc2hhZG93X3N0YWNrX2VuYWJsZWQgPSBmYWxzZTsNCj4gKw0KPiArICBzdGQ6Om9wdGlv bmFsPENPUkVfQUREUj4gc3RhcnRfc3NwDQo+ICsgICAgPSBnZGJhcmNoX2dldF9zaGFkb3dfc3Rh Y2tfcG9pbnRlciAoZ2RiYXJjaCwgcmVnY2FjaGUsDQo+ICsJCQkJCXNoYWRvd19zdGFja19lbmFi bGVkKTsNCj4gKw0KPiArICBpZiAoIXN0YXJ0X3NzcC5oYXNfdmFsdWUgKCkgfHwgIXNoYWRvd19z dGFja19lbmFibGVkKQ0KPiArICAgIGVycm9yIChfKCJTaGFkb3cgc3RhY2sgaXMgbm90IGVuYWJs ZWQgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4iKSk7DQo+ICsNCj4gKyAgLyogQ2hlY2sgaWYgU1RB UlRfU1NQIHBvaW50cyB0byBhIHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UgYW5kIHVzZQ0KPiAr ICAgICB0aGUgcmV0dXJuZWQgcmFuZ2UgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc3RvcCB1bndpbmRp bmcuDQo+ICsgICAgIE5vdGUgdGhhdCBhIHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UgY2FuIGNo YW5nZSwgZHVlIHRvIHNoYWRvdw0KPiBzdGFjaw0KPiArICAgICBzd2l0Y2hlcyBmb3IgaW5zdGFu Y2Ugb24geDg2IGZvciBhbiBpbnRlci1wcml2aWxlZ2UgZmFyIGNhbGwgb3Igd2hlbg0KPiArICAg ICBjYWxsaW5nIGFuIGludGVycnVwdC9leGNlcHRpb24gaGFuZGxlciBhdCBhIGhpZ2hlciBwcml2 aWxlZ2UgbGV2ZWwuDQo+ICsgICAgIFNoYWRvdyBzdGFjayBmb3IgdXNlcnNwYWNlIGlzIHN1cHBv cnRlZCBmb3IgYW1kNjQgbGludXggc3RhcnRpbmcgd2l0aA0KPiArICAgICBMaW51eCBrZXJuZWwg djYuNi4gIEhvd2V2ZXIsIHNoYWRvdyBzdGFjayBzd2l0Y2hlcyBhcmUgbm90IHN1cHBvcnRlZA0K PiArICAgICBkdWUgdG8gbWlzc2luZyBrZXJuZWwgc3BhY2Ugc3VwcG9ydC4gIFdlIHRoZXJlZm9y ZSBpbXBsZW1lbnQgdGhpcw0KPiArICAgICBjb21tYW5kIHdpdGhvdXQgc3VwcG9ydCBmb3Igc2hh ZG93IHN0YWNrIHN3aXRjaGVzIGZvciBub3cuICAqLw0KPiArICBib29sIGlzX3RvcF9hZGRyX2Vt cHR5X3NoYWRvd19zdGFjayA9IGZhbHNlOw0KPiArICBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JF X0FERFI+IHJhbmdlOw0KPiArICBpZiAoIWdkYmFyY2hfYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tf bWVtb3J5X3JhbmdlIChnZGJhcmNoLA0KPiAqc3RhcnRfc3NwLA0KPiArCQkJCQkJICAgICAmcmFu Z2UpKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIEZvciB4ODYsIGlmIHRoZSBjdXJyZW50IHNoYWRv dyBzdGFjayBwb2ludGVyIGRvZXMgbm90IHBvaW50IHRvDQo+ICsJIHNoYWRvdyBzdGFjayBtZW1v cnkgYnV0IGlzIHZhbGlkLCB0aGUgc2hhZG93IHN0YWNrIGlzIGVtcHR5LiAgKi8NCj4gKyAgICAg IGlzX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayA9IHRydWU7DQo+ICsgICAgfQ0KPiArDQo+ ICsgIGlmICghaXNfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrKQ0KPiArICAgIHsNCj4gKyAg ICAgIC8qIEZvciBBUk0ncyBHdWFyZGVkIENvbnRyb2wgU3RhY2ssIHRoZSBzaGFkb3cgc3RhY2sg Y2FuIGJlIGVtcHR5DQo+ICsJIGV2ZW4gdGhvdWdoIFNUQVJUX1NTUCBwb2ludHMgdG8gc2hhZG93 IHN0YWNrIG1lbW9yeSByYW5nZS4gICovDQo+ICsgICAgICBpc190b3BfYWRkcl9lbXB0eV9zaGFk b3dfc3RhY2sNCj4gKwk9IGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrX3AgKGdk YmFyY2gpDQo+ICsJICAmJiBnZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayAoZ2Ri YXJjaCwgKnN0YXJ0X3NzcCwNCj4gcmFuZ2UpOw0KPiArICAgIH0NCj4gKw0KPiArICBpZiAoaXNf dG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrKQ0KPiArICAgIHsNCj4gKyAgICAgIGdkYl9wcmlu dGYgKF8oIlRoZSBzaGFkb3cgc3RhY2sgaXMgZW1wdHkuXG4iKSk7DQo+ICsgICAgICByZXR1cm47 DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIEV4dHJhY3QgdGhlIGZpcnN0IHNoYWRvdyBzdGFjayBm cmFtZSBpbmZvIChsZXZlbCAwKS4gICovDQo+ICsgc3NwX3Vud2luZF9zdG9wX3JlYXNvbiByZWFz b24gPSBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpub19lcnJvcjsNCj4gKyBzdGQ6Om9wdGlvbmFs PHNoYWRvd19zdGFja19mcmFtZV9pbmZvPiBjdXJyZW50DQo+ICsgICAgPSBnZXRfc2hhZG93X3N0 YWNrX2ZyYW1lX2luZm8gKGdkYmFyY2gsICpzdGFydF9zc3AsIDApOw0KPiArDQo+ICsgIGlmICgh Y3VycmVudC5oYXNfdmFsdWUgKCkpDQo+ICsgICAgcmVhc29uID0gc3NwX3Vud2luZF9zdG9wX3Jl YXNvbjo6bWVtb3J5X3JlYWRfZXJyb3I7DQo+ICsNCj4gKyAgc3RkOjpvcHRpb25hbDxzaGFkb3df c3RhY2tfZnJhbWVfaW5mbz4gdHJhaWxpbmcgPSBjdXJyZW50Ow0KPiArDQo+ICsgIExPTkdFU1Qg Y291bnQgPSAtMTsNCj4gKyAgaWYgKGN1cnJlbnQuaGFzX3ZhbHVlICgpICYmIGNvdW50X2V4cCAh PSBudWxscHRyKQ0KPiArICAgIHsNCj4gKyAgICAgIGNvdW50ID0gcGFyc2VfYW5kX2V2YWxfbG9u ZyAoY291bnRfZXhwKTsNCj4gKyAgICAgIC8qIElmIGNvdW50IGlzIG5lZ2F0aXZlLCB1cGRhdGUg dHJhaWxpbmcgd2l0aCB0aGUgc2hhZG93IHN0YWNrIGZyYW1lDQo+ICsJIGluZm8gZnJvbSB3aGlj aCB3ZSBzaG91bGQgc3RhcnQgcHJpbnRpbmcuICAqLw0KPiArICAgICAgaWYgKGNvdW50IDwgMCkN Cj4gKwl7DQo+ICsJICB0cmFpbGluZyA9IGdldF90cmFpbGluZ19vdXRlcm1vc3Rfc2hhZG93X3N0 YWNrX2ZyYW1lX2luZm8NCj4gKwkJICAgICAgIChyYW5nZSwgc3RkOjphYnMgKGNvdW50KSwgKmN1 cnJlbnQpOw0KPiArDQo+ICsJICBpZiAoIXRyYWlsaW5nLmhhc192YWx1ZSAoKSkNCj4gKwkgICAg cmVhc29uID0gY3VycmVudC0+dW53aW5kX3N0b3BfcmVhc29uOw0KPiArCX0NCj4gKyAgICB9DQo+ ICsNCj4gKyAgaWYgKCF0cmFpbGluZy5oYXNfdmFsdWUgKCkpDQo+ICsgICAgew0KPiArICAgICAg Z2RiX2Fzc2VydCAocmVhc29uICE9IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yKTsN Cj4gKw0KPiArICAgICAgZXJyb3IgKF8oIkNhbm5vdCBwcmludCBzaGFkb3cgc3RhY2sgYmFja3Ry YWNlOiAlcy5cbiIpLA0KPiArCSAgICAgc3NwX3Vud2luZF9zdG9wX3JlYXNvbl90b19lcnJfc3Ry aW5nIChyZWFzb24pKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgZm9yIChjdXJyZW50ID0gdHJhaWxp bmc7IGN1cnJlbnQuaGFzX3ZhbHVlICgpICYmIGNvdW50ICE9IDA7IGNvdW50LS0pDQo+ICsgICAg ew0KPiArICAgICAgUVVJVDsNCj4gKw0KPiArICAgICAgcHJpbnRfc2hhZG93X3N0YWNrX2ZyYW1l X2luZm8gKGZwX29wdHMsICpjdXJyZW50LCBMT0NBVElPTik7DQo+ICsNCj4gKyAgICAgIHRyYWls aW5nID0gY3VycmVudDsNCj4gKyAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT51bndpbmRfcHJldl9z aGFkb3dfc3RhY2tfZnJhbWVfaW5mbyAocmFuZ2UpOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBJ ZiB3ZSd2ZSBzdG9wcGVkIGJlZm9yZSB0aGUgZW5kLCBtZW50aW9uIHRoYXQuICAqLyAgaWYNCj4g KyAoY3VycmVudC5oYXNfdmFsdWUgKCkgJiYgZnJvbV90dHkpDQo+ICsgICAgZ2RiX3ByaW50ZiAo XygiKE1vcmUgc2hhZG93IHN0YWNrIGZyYW1lcyBmb2xsb3cuLi4pXG4iKSk7DQo+ICsNCj4gKyAg LyogRHVlIHRvIHRoZSBsb29wIGFib3ZlLCB0cmFpbGluZyBhbHdheXMgaGFzIGEgdmFsdWUgYXQg dGhpcyBwb2ludC4NCj4gKyAqLyAgZ2RiX2Fzc2VydCAodHJhaWxpbmcuaGFzX3ZhbHVlICgpKTsN Cj4gKw0KPiArICAvKiBJZiB3ZSd2ZSBydW4gb3V0IG9mIHNoYWRvdyBzdGFjayBmcmFtZXMsIGFu ZCB0aGUgcmVhc29uIGFwcGVhcnMgdG8NCj4gKyAgICAgYmUgYW4gZXJyb3IgY29uZGl0aW9uLCBw cmludCBpdC4gICovDQo+ICsgIGlmICghY3VycmVudC5oYXNfdmFsdWUgKCkNCj4gKyAgICAgICYm IHRyYWlsaW5nLT51bndpbmRfc3RvcF9yZWFzb24gPiBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpu b19lcnJvcikNCj4gKyAgICBnZGJfcHJpbnRmIChfKCJTaGFkb3cgc3RhY2sgYmFja3RyYWNlIHN0 b3BwZWQgYXQgc2hhZG93IHN0YWNrICIgXA0KPiArCQkgICJwb2ludGVyICVzIGR1ZSB0bzogJXMu XG4iKSwNCj4gKwkJcGFkZHJlc3MgKHRyYWlsaW5nLT5hcmNoLCB0cmFpbGluZy0+c3NwKSwNCj4g KwkJc3NwX3Vud2luZF9zdG9wX3JlYXNvbl90b19lcnJfc3RyaW5nDQo+ICsJCSAgKHRyYWlsaW5n LT51bndpbmRfc3RvcF9yZWFzb24pKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2dkYi9zaGFkb3ct c3RhY2suaCBiL2dkYi9zaGFkb3ctc3RhY2suaCBpbmRleA0KPiA1ZjU0MGZmN2Q2Mi4uNDI3ODYy MGM3MGMgMTAwNjQ0DQo+IC0tLSBhL2dkYi9zaGFkb3ctc3RhY2suaA0KPiArKysgYi9nZGIvc2hh ZG93LXN0YWNrLmgNCj4gQEAgLTIxLDkgKzIxLDE3IEBADQo+ICAjaWZuZGVmIEdEQl9TSEFET1df U1RBQ0tfSA0KPiAgI2RlZmluZSBHREJfU0hBRE9XX1NUQUNLX0gNCj4gDQo+ICsjaW5jbHVkZSA8 b3B0aW9uYWw+DQo+ICsjaW5jbHVkZSA8dXRpbGl0eT4NCj4gKyNpbmNsdWRlIDxzdHJpbmc+DQo+ ICsNCj4gKyNpbmNsdWRlICJzeW10YWIuaCINCj4gKw0KPiAgY2xhc3MgcmVnY2FjaGU7DQo+ICBj bGFzcyBmcmFtZV9pbmZvX3B0cjsNCj4gIHN0cnVjdCB2YWx1ZTsNCj4gK3N0cnVjdCBmcmFtZV9w cmludF9vcHRpb25zOw0KPiArc3RydWN0IGdkYmFyY2g7DQo+IA0KPiAgLyogSWYgc2hhZG93IHN0 YWNrIGlzIGVuYWJsZWQsIHB1c2ggdGhlIGFkZHJlc3MgTkVXX0FERFIgb24gdGhlIHNoYWRvdw0K PiAgICAgc3RhY2sgYW5kIHVwZGF0ZSB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIgYWNjb3JkaW5n bHkuICAqLyBAQCAtMzksNA0KPiArNDcsODcgQEAgdm9pZCBzaGFkb3dfc3RhY2tfcHVzaCAocmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdA0KPiBDT1JFX0FERFIgbmV3X2FkZHIpOyAgdmFsdWUgKmR3 YXJmMl9wcmV2X3NzcCAoY29uc3QgZnJhbWVfaW5mb19wdHINCj4gJnRoaXNfZnJhbWUsDQo+ICAJ CQl2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSk7DQo+IA0KPiArLyogSW1wbGVtZW50YXRp b24gb2YgImJhY2t0cmFjZSAtc2hhZG93IiBjb21tYW5kIGxpbmUgb3B0aW9uLiAgKi8NCj4gKw0K PiArdm9pZCBiYWNrdHJhY2Vfc2hhZG93X2NvbW1hbmQNCj4gKyAgKGNvbnN0IGZyYW1lX3ByaW50 X29wdGlvbnMgJmZwX29wdHMsDQo+ICsgICBjb25zdCBjaGFyICpjb3VudF9leHAsIGludCBmcm9t X3R0eSk7DQo+ICsNCj4gK2VudW0gY2xhc3Mgc3NwX3Vud2luZF9zdG9wX3JlYXNvbg0KPiArew0K PiArICAvKiBObyBwYXJ0aWN1bGFyIHJlYXNvbjsgZWl0aGVyIHdlIGhhdmVuJ3QgdHJpZWQgdW53 aW5kaW5nIHlldCwgb3Igd2UNCj4gKyAgICAgZGlkbid0IGZhaWwuICAqLw0KPiArICBub19lcnJv ciA9IDAsDQo+ICsNCj4gKyAgLyogV2UgY291bGQgbm90IHJlYWQgdGhlIG1lbW9yeSBvZiB0aGUg c2hhZG93IHN0YWNrIGVsZW1lbnQuICAqLw0KPiArICBtZW1vcnlfcmVhZF9lcnJvciwNCj4gK307 DQo+ICsNCj4gK2VudW0gY2xhc3Mgc3NwX2ZyYW1lX3R5cGUNCj4gK3sNCj4gKyAgLyogQSBub3Jt YWwgc2hhZG93IHN0YWNrIGZyYW1lIHdoaWNoIGJlbG9uZ3MgdG8gYSByZXR1cm4gYWRkcmVzcyBv ZiB0aGUNCj4gKyAgICAgcHJvZ3JhbSBleGVjdXRpb24gZmxvdy4gICovDQo+ICsgIG5vcm1hbF9m cmFtZSwNCj4gKw0KPiArICAvKiBBIHNoYWRvdyBzdGFjayBmcmFtZSB3aGljaCBkb2VzIG5vdCBi ZWxvbmcgdG8gYSByZXR1cm4gYWRkcmVzcy4NCj4gKyAgICAgSXQgaXMgcG9zc2libGUsIG9uIHg4 NiBmb3IgaW5zdGFuY2UsIHRoYXQgYW4gZWxlbWVudCBvbiB0aGUgc2hhZG93DQo+ICsgICAgIHN0 YWNrIGlzIG5vdCBhIHJldHVybiBhZGRyZXNzLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCB0aGUg YWRkcmVzcw0KPiArICAgICBpbiB0aGF0IGNhc2UgYnV0IG9ubHkgYSBzdHJpbmcgZGVzY3JpYmlu ZyB0aGF0IHNwZWNpZmljIGZyYW1lIHR5cGUuDQo+ICsgICAgIFRoaXMgZnJhbWUgdHlwZSBpcyBj b25maWd1cmVkIGluIHRoZSB0YXJnZXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24NCj4gKyAgICAg b2YgaXNfbm9fcmV0dXJuX3NoYWRvd19zdGFja19hZGRyZXNzLiAgKi8NCj4gKyAgbm9uX3JldHVy bl9mcmFtZSwNCj4gK307DQo+ICsNCj4gKy8qIEluZm9ybWF0aW9uIG9mIGEgc2hhZG93IHN0YWNr IGZyYW1lIGJlbG9uZ2luZyB0byBhIHNoYWRvdyBzdGFjaw0KPiBlbGVtZW50DQo+ICsgICBhdCBz aGFkb3cgc3RhY2sgcG9pbnRlciBTU1AuICAqLw0KPiArDQo+ICtjbGFzcyBzaGFkb3dfc3RhY2tf ZnJhbWVfaW5mbw0KPiArew0KPiArcHVibGljOg0KPiArICAvKiBJZiBwb3NzaWJsZSwgdW53aW5k IHRoZSBwcmV2aW91cyBzaGFkb3cgc3RhY2sgZnJhbWUgaW5mby4gIFJBTkdFIGlzDQo+ICsgICAg IHRoZSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlIFtzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVz cykgYmVsb25naW5nDQo+ICsgICAgIHRvIHRoaXMgZnJhbWUncyBzaGFkb3cgc3RhY2sgcG9pbnRl ci4gIElmIHdlIGNhbm5vdCB1bndpbmQgdGhlDQo+ICsgICAgIHByZXZpb3VzIGZyYW1lIGluZm8s IHNldCB0aGUgdW53aW5kX3N0b3BfcmVhc29uIGF0dHJpYnV0ZS4gIElmIHdlDQo+ICsgICAgIHJl YWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgc2hhZG93IHN0YWNrIGp1c3QgZG9uJ3QgcmV0dXJuIGEg dmFsdWUuDQo+ICsqLw0KPiArICBzdGQ6Om9wdGlvbmFsPHNoYWRvd19zdGFja19mcmFtZV9pbmZv Pg0KPiB1bndpbmRfcHJldl9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbw0KPiArICAgIChzdGQ6OnBh aXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlKTsNCj4gKw0KPiArICAvKiBUaGUgc2hhZG93 IHN0YWNrIHBvaW50ZXIuICAqLw0KPiArICBDT1JFX0FERFIgc3NwOw0KPiArDQo+ICsgIC8qIFRo ZSB2YWx1ZSBvZiB0aGUgc2hhZG93IHN0YWNrIGF0IFNTUC4gICovICBDT1JFX0FERFIgdmFsdWU7 DQo+ICsNCj4gKyAgLyogVGhlIGxldmVsIG9mIHRoZSBlbGVtZW50IG9uIHRoZSBzaGFkb3cgc3Rh Y2suICAqLyAgdW5zaWduZWQgbG9uZw0KPiArIGxldmVsOw0KPiArDQo+ICsgIC8qIEFyY2hpdGVj dHVyZSBvZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgZnJhbWUuICAqLyAgc3RydWN0DQo+ICsg Z2RiYXJjaCAqYXJjaDsNCj4gKw0KPiArICAvKiBPcHRpb25hbCBTQUwgb2JqZWN0IG9mIHRoZSBj dXJyZW50IHNoYWRvdyBzdGFjayBmcmFtZS4gICovDQo+ICsgc3RkOjpvcHRpb25hbDxzeW10YWJf YW5kX2xpbmU+IHNhbDsNCj4gKw0KPiArICAvKiBUaGUgc2hhZG93IHN0YWNrIGZyYW1lIHR5cGUu ICAqLw0KPiArICBzc3BfZnJhbWVfdHlwZSB0eXBlOw0KPiArDQo+ICsgIC8qIElmIHRoaXMgaXMg bm90IGEgbm9ybWFsIHNoYWRvdyBzdGFjayBmcmFtZSBiZWxvbmdpbmcgdG8gYSByZXR1cm4NCj4g KyAgICAgYWRkcmVzcyBvZiB0aGUgcHJvZ3JhbSBleGVjdXRpb24gZmxvdyB0aGVuIHRoZSBmcmFt ZSB3aWxsIGhhdmUgdGhlDQo+ICsgICAgIHR5cGUgc3NwX2ZyYW1lX3R5cGU6Om5vbl9yZXR1cm5f ZnJhbWUuICBJbiB0aGlzIGNhc2UsIHRoaXMgc3RyaW5nDQo+ICsgICAgIGlzIGNvbmZpZ3VyZWQg dG8gZGVzY3JpYmUgdGhpcyBzcGVjaWZpYyBmcmFtZSB0eXBlIGFuZCBpdCB3aWxsDQo+ICsgICAg IGJlIHByaW50ZWQgaW4gdGhlIHNoYWRvdyBzdGFjayBiYWNrdHJhY2UgaW5zdGVhZCBvZiB0aGUg ZWxlbWVudCBvbg0KPiArICAgICB0aGUgc2hhZG93IHN0YWNrLiAgKi8NCj4gKyAgc3RkOjpvcHRp b25hbDxzdGQ6OnN0cmluZz4gbm9uX3JldHVybl9kZXNjcmlwdGlvbjsNCj4gKw0KPiArICAvKiBJ ZiB1bndpbmRpbmcgb2YgdGhlIHByZXZpb3VzIGZyYW1lIGluZm8gZmFpbHMgYXNzaWduIHRoaXMg dmFsdWUgdG8gYQ0KPiArICAgICBtYXRjaGluZyBjb25kaXRpb24gc3NwX3Vud2luZF9zdG9wX3Jl YXNvbg0KPiArICAgICA+IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yLiAgKi8gIHNz cF91bndpbmRfc3RvcF9yZWFzb24NCj4gKyB1bndpbmRfc3RvcF9yZWFzb24NCj4gKyAgICA9IHNz cF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yOw0KPiArDQo+ICsgIC8qIFJldHVybiB0cnVl IGlmIHRoaXMgZnJhbWUgaXMgaW5zaWRlIHRoZSAibWFpbiIoKSBmdW5jdGlvbi4gIElmIHRoZSBm cmFtZQ0KPiArICAgICBpcyBvdXRzaWRlIHRoZSAibWFpbiIoKSBmdW5jdGlvbiwgZG9lcyBub3Qg aGF2ZSBhIFNBTCBvYmplY3Qgb3IgaWYgdGhlDQo+ICsgICAgIHN5bWJvbCBpbmZvcm1hdGlvbiBj YW5ub3QgYmUgZXh0cmFjdGVkLCByZXR1cm4gZmFsc2UuICAqLw0KPiArICBib29sIGluc2lkZV9t YWluX2Z1bmMgKCkgY29uc3Q7DQo+ICt9Ow0KPiArDQo+ICAjZW5kaWYgLyogR0RCX1NIQURPV19T VEFDS19IICovDQo+IGRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jDQo+IGlu ZGV4IDdkZjFkNmUzM2RhLi5lOTZmYmU3Mzk0NyAxMDA2NDQNCj4gLS0tIGEvZ2RiL3N0YWNrLmMN Cj4gKysrIGIvZ2RiL3N0YWNrLmMNCj4gQEAgLTUxLDYgKzUxLDcgQEANCj4gICNpbmNsdWRlICJj bGkvY2xpLXV0aWxzLmgiDQo+ICAjaW5jbHVkZSAib2JqZmlsZXMuaCINCj4gICNpbmNsdWRlICJi dWZmZXJlZC1zdHJlYW1zLmgiDQo+ICsjaW5jbHVkZSAic2hhZG93LXN0YWNrLmgiDQo+IA0KPiAg I2luY2x1ZGUgInN5bWZpbGUuaCINCj4gICNpbmNsdWRlICJleHRlbnNpb24uaCINCj4gQEAgLTE5 MSw2ICsxOTIsNyBAQCBzdHJ1Y3QgYmFja3RyYWNlX2NtZF9vcHRpb25zDQo+ICAgIGJvb2wgZnVs bCA9IGZhbHNlOw0KPiAgICBib29sIG5vX2ZpbHRlcnMgPSBmYWxzZTsNCj4gICAgYm9vbCBoaWRl ID0gZmFsc2U7DQo+ICsgIGJvb2wgc2hhZG93ID0gZmFsc2U7DQo+ICB9Ow0KPiANCj4gIHVzaW5n IGJ0X2ZsYWdfb3B0aW9uX2RlZg0KPiBAQCAtMjE0LDYgKzIxNiwxNCBAQCBzdGF0aWMgY29uc3Qg Z2RiOjpvcHRpb246Om9wdGlvbl9kZWYNCj4gYmFja3RyYWNlX2NvbW1hbmRfb3B0aW9uX2RlZnNb XSA9IHsNCj4gICAgICBbXSAoYmFja3RyYWNlX2NtZF9vcHRpb25zICpvcHQpIHsgcmV0dXJuICZv cHQtPmhpZGU7IH0sDQo+ICAgICAgTl8oIkNhdXNlcyBQeXRob24gZnJhbWUgZmlsdGVyIGVsaWRl ZCBmcmFtZXMgdG8gbm90IGJlIHByaW50ZWQuIiksDQo+ICAgIH0sDQo+ICsNCj4gKyAgYnRfZmxh Z19vcHRpb25fZGVmIHsNCj4gKyAgICAic2hhZG93IiwNCj4gKyAgICBbXSAoYmFja3RyYWNlX2Nt ZF9vcHRpb25zICpvcHQpIHsgcmV0dXJuICZvcHQtPnNoYWRvdzsgfSwNCj4gKyAgICBOXygiUHJp bnQgc2hhZG93IHN0YWNrIGZyYW1lcyBpbnN0ZWFkIG9mIG5vcm1hbCBmcmFtZXMuXG5cIFRoaXMN Cj4gK29wdGlvbiBtYXkgYmUgY29tYmluZWQgd2l0aCBcIi1mcmFtZS1pbmZvXCIgYW5kXG5cIGlt cGxpZXMNCj4gKyctbm8tZmlsdGVycycgYW5kICctZnJhbWUtYXJndW1lbnRzIG5vbmUnLiIpLA0K PiArICB9LA0KPiAgfTsNCj4gDQo+ICAvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMu ICAqLw0KPiBAQCAtOTA2LDExICs5MTYsOSBAQCBkb19nZGJfZGlzYXNzZW1ibHkgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLA0KPiAgICAgIH0NCj4gIH0NCj4gDQo+IC0vKiBDb252ZXJ0cyB0aGUg UFJJTlRfRlJBTUVfSU5GTyBjaG9pY2UgdG8gYW4gb3B0aW9uYWwgZW51bSBwcmludF93aGF0Lg0K PiAtICAgVmFsdWUgbm90IHByZXNlbnQgaW5kaWNhdGVzIHRvIHRoZSBjYWxsZXIgdG8gdXNlIGRl ZmF1bHQgdmFsdWVzDQo+IC0gICBzcGVjaWZpYyB0byB0aGUgY29tbWFuZCBiZWluZyBleGVjdXRl ZC4gICovDQo+ICsvKiBTZWUgc3RhY2suaC4gICovDQo+IA0KPiAtc3RhdGljIHN0ZDo6b3B0aW9u YWw8ZW51bSBwcmludF93aGF0Pg0KPiArc3RkOjpvcHRpb25hbDxlbnVtIHByaW50X3doYXQ+DQo+ ICBwcmludF9mcmFtZV9pbmZvX3RvX3ByaW50X3doYXQgKGNvbnN0IGNoYXIgKnByaW50X2ZyYW1l X2luZm8pICB7DQo+ICAgIGZvciAoaW50IGkgPSAwOyBwcmludF9mcmFtZV9pbmZvX2Nob2ljZXNb aV0gIT0gTlVMTDsgaSsrKSBAQCAtOTYwLDcgKzk2OCw3DQo+IEBAIGdldF91c2VyX3ByaW50X3do YXRfZnJhbWVfaW5mbyAoc3RkOjpvcHRpb25hbDxlbnVtIHByaW50X3doYXQ+DQo+ICp3aGF0KQ0K PiAgLyogUmV0dXJuIHRydWUgaWYgUFJJTlRfV0hBVCBpcyBjb25maWd1cmVkIHRvIHByaW50IHRo ZSBsb2NhdGlvbiBvZiBhDQo+ICAgICBmcmFtZS4gICovDQo+IA0KPiAtc3RhdGljIGJvb2wNCj4g K2Jvb2wNCj4gIHNob3VsZF9wcmludF9sb2NhdGlvbiAocHJpbnRfd2hhdCBwcmludF93aGF0KSAg ew0KPiAgICByZXR1cm4gKHByaW50X3doYXQgPT0gTE9DQVRJT04NCj4gQEAgLTk2OSwxNCArOTc3 LDkgQEAgc2hvdWxkX3ByaW50X2xvY2F0aW9uIChwcmludF93aGF0IHByaW50X3doYXQpDQo+ICAJ ICB8fCBwcmludF93aGF0ID09IFNIT1JUX0xPQ0FUSU9OKTsNCj4gIH0NCj4gDQo+IC0vKiBQcmlu dCB0aGUgc291cmNlIGluZm9ybWF0aW9uIGZvciBQQyBhbmQgU0FMIHRvIFVJT1VULiAgQmFzZWQg b24gdGhlDQo+IC0gICB1c2VyLWRlZmluZWQgY29uZmlndXJhdGlvbiBkaXNhc3NlbWJsZS1uZXh0 LWxpbmUsIGRpc3BsYXkgZGlzYXNzZW1ibHkNCj4gLSAgIG9mIHRoZSBuZXh0IHNvdXJjZSBsaW5l LCBpbiBhZGRpdGlvbiB0byBkaXNwbGF5aW5nIHRoZSBzb3VyY2UgbGluZQ0KPiAtICAgaXRzZWxm LiAgUHJpbnQgYW5ub3RhdGlvbnMgZGVzY3JpYmluZyBzb3VyY2UgZmlsZSBhbmQgYW5kIGxpbmUg bnVtYmVyDQo+IC0gICBiYXNlZCBvbiBNSURfU1RBVEVNRU5UIGluZm9ybWF0aW9uLiAgSWYgU0hP V19BRERSRVNTIGlzIHRydWUsIHByaW50DQo+IHRoZQ0KPiAtICAgcHJvZ3JhbSBjb3VudGVyIFBD IGluY2x1ZGluZywgaWYgbm9uLWVtcHR5LCBQQ19BRERSRVNTX0ZMQUdTLiAgKi8NCj4gKy8qIFNl ZSBzdGFjay5oLiAgKi8NCj4gDQo+IC1zdGF0aWMgdm9pZA0KPiArdm9pZA0KPiAgcHJpbnRfc291 cmNlICh1aV9vdXQgKnVpb3V0LCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMsDQo+ICAJ ICAgICAgc3ltdGFiX2FuZF9saW5lIHNhbCwgYm9vbCBzaG93X2FkZHJlc3MsIGludCBtaWRfc3Rh dGVtZW50LA0KPiAgCSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwY19hZGRyZXNzX2ZsYWdzKSBA QCAtMTI0Miw3ICsxMjQ1LDcgQEANCj4gZ2V0X2xhc3RfZGlzcGxheWVkX3NhbCAoKQ0KPiANCj4g IC8qIEZpbmQgdGhlIGZ1bmN0aW9uIG5hbWUgZm9yIHRoZSBzeW1ib2wgU1lNLiAgKi8NCj4gDQo+ IC1zdGF0aWMgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4NCj4gK2dkYjo6dW5pcXVlX3ht YWxsb2NfcHRyPGNoYXI+DQo+ICBmaW5kX3N5bWJvbF9mdW5uYW1lIChjb25zdCBzeW1ib2wgKnN5 bSkgIHsNCj4gICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZnVubmFtZTsgQEAgLTEz MDgsMTAgKzEzMTEsOSBAQA0KPiBmaW5kX2ZyYW1lX2Z1bm5hbWUgKGNvbnN0IGZyYW1lX2luZm9f cHRyICZmcmFtZSwgZW51bSBsYW5ndWFnZQ0KPiAqZnVubGFuZywNCj4gICAgcmV0dXJuIGZ1bm5h bWU7DQo+ICB9DQo+IA0KPiAtLyogUHJpbnQgdGhlIGxpYnJhcnkgTElCIHRvIFVJT1VUIGZvciB0 aGUgcHJpbnRpbmcgb2YgZnJhbWUNCj4gLSAgIGluZm9ybWF0aW9uLiAgKi8NCj4gKy8qICBTZWUg c3RhY2suaC4gICovDQo+IA0KPiAtc3RhdGljIHZvaWQNCj4gK3ZvaWQNCj4gIHByaW50X2xpYiAo dWlfb3V0ICp1aW91dCwgY29uc3QgY2hhciAqbGliKSAgew0KPiAgICBhbm5vdGF0ZV9mcmFtZV93 aGVyZSAoKTsNCj4gQEAgLTEzMjAsMTAgKzEzMjIsNyBAQCBwcmludF9saWIgKHVpX291dCAqdWlv dXQsIGNvbnN0IGNoYXIgKmxpYikNCj4gICAgdWlvdXQtPmZpZWxkX3N0cmluZyAoImZyb20iLCBs aWIsIGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSk7ICB9DQo+IA0KPiAtLyogUHJpbnQgdGhlIGZp bGVubmFtZSBvZiBTQUwgdG8gVUlPVVQgZm9yIHRoZSBwcmludGluZyBvZiBmcmFtZQ0KPiAtICAg aW5mb3JtYXRpb24uICAqLw0KPiAtDQo+IC1zdGF0aWMgdm9pZA0KPiArdm9pZA0KPiAgcHJpbnRf ZmlsZW5hbWUgKHVpX291dCAqdWlvdXQsIHN5bXRhYl9hbmRfbGluZSBzYWwpICB7DQo+ICAgIGFu bm90YXRlX2ZyYW1lX3NvdXJjZV9iZWdpbiAoKTsNCj4gQEAgLTEzNDgsMTAgKzEzNDcsOSBAQCBw cmludF9maWxlbmFtZSAodWlfb3V0ICp1aW91dCwgc3ltdGFiX2FuZF9saW5lDQo+IHNhbCkNCj4g ICAgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAoKTsNCj4gIH0NCj4gDQo+IC0vKiAgSWYgYXZh aWxhYmxlLCBwcmludCBGVU5OQU1FIHRvIFVJT1VUIGZvciB0aGUgcHJpbnRpbmcgb2YgZnJhbWUN Cj4gLSAgICBpbmZvcm1hdGlvbi4gICovDQo+ICsvKiAgU2VlIHN0YWNrLmguICAqLw0KPiANCj4g LXN0YXRpYyB2b2lkDQo+ICt2b2lkDQo+ICBwcmludF9mdW5uYW1lICh1aV9vdXQgKnVpb3V0LA0K PiAgCSAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBjb25zdCAmZnVubmFtZSkg IHsgQEAgLTIxNjIsNw0KPiArMjE2MCwxMCBAQCBiYWNrdHJhY2VfY29tbWFuZCAoY29uc3QgY2hh ciAqYXJnLCBpbnQgZnJvbV90dHkpDQo+ICAgIHNjb3BlZF9yZXN0b3JlIHJlc3RvcmVfc2V0X2Jh Y2t0cmFjZV9vcHRpb25zDQo+ICAgICAgPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmdXNlcl9zZXRf YmFja3RyYWNlX29wdGlvbnMsIHNldF9idF9vcHRzKTsNCj4gDQo+IC0gIGJhY2t0cmFjZV9jb21t YW5kXzEgKGZwX29wdHMsIGJ0X2NtZF9vcHRzLCBhcmcsIGZyb21fdHR5KTsNCj4gKyAgaWYgKCFi dF9jbWRfb3B0cy5zaGFkb3cpDQo+ICsgICAgYmFja3RyYWNlX2NvbW1hbmRfMSAoZnBfb3B0cywg YnRfY21kX29wdHMsIGFyZywgZnJvbV90dHkpOyAgZWxzZQ0KPiArICAgIGJhY2t0cmFjZV9zaGFk b3dfY29tbWFuZCAoZnBfb3B0cywgYXJnLCBmcm9tX3R0eSk7DQo+ICB9DQo+IA0KPiAgLyogQ29t cGxldGVyIGZvciB0aGUgImJhY2t0cmFjZSIgY29tbWFuZC4gICovDQo+IGRpZmYgLS1naXQgYS9n ZGIvc3RhY2suaCBiL2dkYi9zdGFjay5oDQo+IGluZGV4IGFkMjcwMGI1OWE3Li4zZjRjZjM0ODg0 MSAxMDA2NDQNCj4gLS0tIGEvZ2RiL3N0YWNrLmgNCj4gKysrIGIvZ2RiL3N0YWNrLmgNCj4gQEAg LTg0LDQgKzg0LDQ3IEBAIHZvaWQgZnJhbWVfYXBwbHlfYWxsX2NtZF9jb21wbGV0ZXIgKHN0cnVj dA0KPiBjbWRfbGlzdF9lbGVtZW50ICppZ25vcmUsDQo+ICAJCQkJICAgIGNvbXBsZXRpb25fdHJh Y2tlciAmdHJhY2tlciwNCj4gIAkJCQkgICAgY29uc3QgY2hhciAqdGV4dCwgY29uc3QgY2hhciAq Lyp3b3JkKi8pOw0KPiANCj4gKy8qIFByaW50IHRoZSBmaWxlbmFtZSBvZiBTQUwgdG8gVUlPVVQg Zm9yIHRoZSBwcmludGluZyBvZiBmcmFtZQ0KPiArICAgaW5mb3JtYXRpb24uICAqLw0KPiArDQo+ ICt2b2lkIHByaW50X2ZpbGVuYW1lICh1aV9vdXQgKnVpb3V0LCBzeW10YWJfYW5kX2xpbmUgc2Fs KTsNCj4gKw0KPiArLyogUHJpbnQgdGhlIGxpYnJhcnkgTElCIHRvIFVJT1VUIGZvciB0aGUgcHJp bnRpbmcgb2YgZnJhbWUNCj4gKyAgIGluZm9ybWF0aW9uLiAgKi8NCj4gKw0KPiArdm9pZCBwcmlu dF9saWIgKHVpX291dCAqdWlvdXQsIGNvbnN0IGNoYXIgKmxpYik7DQo+ICsNCj4gKy8qIElmIGF2 YWlsYWJsZSwgcHJpbnQgRlVOTkFNRSB0byBVSU9VVCBmb3IgdGhlIHByaW50aW5nIG9mIGZyYW1l DQo+ICsgICBpbmZvcm1hdGlvbi4gICovDQo+ICsNCj4gK3ZvaWQgcHJpbnRfZnVubmFtZSAodWlf b3V0ICp1aW91dCwNCj4gKwkJICAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGNvbnN0 ICZmdW5uYW1lKTsNCj4gKw0KPiArLyogQ29udmVydHMgdGhlIFBSSU5UX0ZSQU1FX0lORk8gY2hv aWNlIHRvIGFuIG9wdGlvbmFsIGVudW0NCj4gcHJpbnRfd2hhdC4NCj4gKyAgIFZhbHVlIG5vdCBw cmVzZW50IGluZGljYXRlcyB0byB0aGUgY2FsbGVyIHRvIHVzZSBkZWZhdWx0IHZhbHVlcw0KPiAr ICAgc3BlY2lmaWMgdG8gdGhlIGNvbW1hbmQgYmVpbmcgZXhlY3V0ZWQuICAqLw0KPiArDQo+ICtz dGQ6Om9wdGlvbmFsPHByaW50X3doYXQ+IHByaW50X2ZyYW1lX2luZm9fdG9fcHJpbnRfd2hhdA0K PiArICAoY29uc3QgY2hhciAqcHJpbnRfZnJhbWVfaW5mbyk7DQo+ICsNCj4gKy8qIFJldHVybiB0 cnVlIGlmIFBSSU5UX1dIQVQgaXMgY29uZmlndXJlZCB0byBwcmludCB0aGUgbG9jYXRpb24gb2Yg YQ0KPiArICAgZnJhbWUuICAqLw0KPiArDQo+ICtib29sIHNob3VsZF9wcmludF9sb2NhdGlvbiAo cHJpbnRfd2hhdCBwcmludF93aGF0KTsNCj4gKw0KPiArLyogUHJpbnQgdGhlIHNvdXJjZSBpbmZv cm1hdGlvbiBmb3IgUEMgYW5kIFNBTCB0byBVSU9VVC4gIEJhc2VkIG9uIHRoZQ0KPiArICAgdXNl ci1kZWZpbmVkIGNvbmZpZ3VyYXRpb24gZGlzYXNzZW1ibGUtbmV4dC1saW5lLCBkaXNwbGF5IGRp c2Fzc2VtYmx5DQo+ICsgICBvZiB0aGUgbmV4dCBzb3VyY2UgbGluZSwgaW4gYWRkaXRpb24gdG8g ZGlzcGxheWluZyB0aGUgc291cmNlIGxpbmUNCj4gKyAgIGl0c2VsZi4gIFByaW50IGFubm90YXRp b25zIGRlc2NyaWJpbmcgc291cmNlIGZpbGUgYW5kIGFuZCBsaW5lIG51bWJlcg0KPiArICAgYmFz ZWQgb24gTUlEX1NUQVRFTUVOVCBpbmZvcm1hdGlvbi4gIElmIFNIT1dfQUREUkVTUyBpcyB0cnVl LCBwcmludA0KPiB0aGUNCj4gKyAgIHByb2dyYW0gY291bnRlciBQQyBpbmNsdWRpbmcsIGlmIG5v bi1lbXB0eSwgUENfQUREUkVTU19GTEFHUy4gICovDQo+ICsNCj4gK3ZvaWQgcHJpbnRfc291cmNl ICh1aV9vdXQgKnVpb3V0LCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMsDQo+ICsJCSAg IHN5bXRhYl9hbmRfbGluZSBzYWwsIGJvb2wgc2hvd19hZGRyZXNzLA0KPiArCQkgICBpbnQgbWlk X3N0YXRlbWVudCwgY29uc3Qgc3RkOjpzdHJpbmcgJnBjX2FkZHJlc3NfZmxhZ3MpOw0KPiArDQo+ ICsvKiBGaW5kIHRoZSBmdW5jdGlvbiBuYW1lIGZvciB0aGUgc3ltYm9sIFNZTS4gICovDQo+ICsN Cj4gK2dkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGZpbmRfc3ltYm9sX2Z1bm5hbWUgKGNv bnN0IHN5bWJvbA0KPiAqc3ltKTsNCj4gKw0KPiAgI2VuZGlmIC8qIEdEQl9TVEFDS19IICovDQo+ IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LXNoYWRvdy1zdGFjay1j bWRzLmV4cA0KPiBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtc2hhZG93LXN0YWNrLWNt ZHMuZXhwDQo+IGluZGV4IGU2N2EwYzJlNGExLi4wMzQ3MzEzYjY0NyAxMDA2NDQNCj4gLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1zaGFkb3ctc3RhY2stY21kcy5leHANCj4gKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1zaGFkb3ctc3RhY2stY21kcy5leHANCj4g QEAgLTEwOSw2ICsxMDksNTMgQEAgc2F2ZV92YXJzIHsgOjplbnYoR0xJQkNfVFVOQUJMRVMpIH0g ew0KPiAgCWdkYl90ZXN0ICJwcmludCAveCBcJHBsM19zc3AiICI9ICRzc3BfY2FsbDIiICJjaGVj ayBwbDNfc3NwIG9mIGZyYW1lDQo+IDAiDQo+ICAgICAgfQ0KPiANCj4gKyAgICBzZXQgZmlsbCAi XFteXHJcblxdKyINCj4gKyAgICAjIEJ1aWxkIHNoYWRvdyBzdGFjayBmcmFtZXMgdG8gdGVzdCB0 aGUgJ2JhY2t0cmFjZSAtc2hhZG93JyBjb21tYW5kLg0KPiArICAgIHNldCBzc3B2YWxfbWFpbiBb Z2V0X3ZhbHVlb2YgIi96IiAiKihsb25nIGxvbmcgaW50Kikkc3NwX21haW4iICIiXQ0KPiArICAg IHNldCBzc3B2YWxfY2FsbDEgW2dldF92YWx1ZW9mICIveiIgIioobG9uZyBsb25nIGludCopJHNz cF9jYWxsMSIgIiJdDQo+ICsgICAgc2V0IHNzcHZhbF9jYWxsMiBbZ2V0X3ZhbHVlb2YgIi96IiAi Kihsb25nIGxvbmcgaW50Kikkc3NwX2NhbGwyIiAiIl0NCj4gKyAgICBzZXQgZnJhbWUxICIjMFxb IFx0XF0qJHNzcHZhbF9jYWxsMiBpbiBjYWxsMSRmaWxsIg0KPiArICAgIHNldCBmcmFtZTIgIiMx XFsgXHRcXSokc3NwdmFsX2NhbGwxIGluIG1haW4kZmlsbCINCj4gKyAgICBzZXQgZnJhbWUzICIj MlxbIFx0XF0qJHNzcHZhbF9tYWluJGZpbGwiDQo+ICsNCj4gKyAgICAjIFRlc3QgYnQgLXNoYWRv dywgd2hpY2ggcHJpbnRzIHVudGlsIHRoZSBtYWluIGZ1bmN0aW9uLg0KPiArICAgIGdkYl90ZXN0 ICJidCAtc2hhZG93IiBcDQo+ICsJW211bHRpX2xpbmUgXA0KPiArCSAgICAiJGZyYW1lMSIgXA0K PiArCSAgICAiJGZyYW1lMiIgXSBcDQo+ICsJInRlc3Qgc2hhZG93IHN0YWNrIGJhY2t0cmFjZSB1 bnRpbCBtYWluLiINCj4gKw0KPiArICAgICMgV2l0aCAtcGFzdC1tYWluIHNldCwgd2UgY2FuIHN0 aWxsIG9ubHkgdGVzdCB0aGF0IHdlIHByaW50IHRoZSBmaXJzdA0KPiArICAgICMgMyBmcmFtZXMg Y29ycmVjdGx5LCBhcyB0aGUgc2hhZG93IHN0YWNrIGVuYWJsZW1lbnQgbWlnaHQgZGVwZW5kIG9u DQo+ICsgICAgIyB0aGUgdW5kZXJseWluZyBPUy4NCj4gKyAgICBnZGJfdGVzdCAiYnQgLXNoYWRv dyAtcGFzdC1tYWluIiBcDQo+ICsJW211bHRpX2xpbmUgXA0KPiArCSAgICAiJGZyYW1lMSIgXA0K PiArCSAgICAiJGZyYW1lMiIgXA0KPiArCSAgICAiJGZyYW1lMyIgXA0KPiArCSAgICAiLioiIF0g XA0KPiArCSJ0ZXN0IHNoYWRvdyBzdGFjayBiYWNrdHJhY2UgdW50aWwgdGhlIGJvdHRvbSBvZiB0 aGUgc3RhY2suIg0KPiArDQo+ICsgICAgZ2RiX3Rlc3QgImJ0IC1zaGFkb3cgMSIgXA0KPiArCVtt dWx0aV9saW5lIFwNCj4gKwkgICAgIiRmcmFtZTEiIFwNCj4gKwkgICAgIlxcKE1vcmUgc2hhZG93 IHN0YWNrIGZyYW1lcyBmb2xsb3cuLi5cXCkiIF0gXA0KPiArCSJ0ZXN0IHNoYWRvdyBzdGFjayBi YWNrdHJhY2Ugd2l0aCBhIHBvc2l0aXZlIHZhbHVlIGZvciBjb3VudCINCj4gKw0KPiArICAgICMg V2UgY2FuIG9ubHkgdGVzdCB0aGF0IHdlIHByaW50IGEgc2luZ2xlIGZyYW1lLCBhcyB0aGUgc2hh ZG93IHN0YWNrDQo+ICsgICAgIyBlbmFibGVtZW50IG1pZ2h0IGRlcGVuZCBvbiB0aGUgdW5kZXJs eWluZyBPUy4NCj4gKyAgICBnZGJfdGVzdCAiYnQgLXNoYWRvdyAtMSIgIl4jJGRlY2ltYWxcWyBc dFxdKiRoZXgkZmlsbCIgXA0KPiArCSJ0ZXN0IHNoYWRvdyBzdGFjayBiYWNrdHJhY2Ugd2l0aCBh IG5lZ2F0aXZlIHZhbHVlIGZvciBjb3VudCINCj4gKw0KPiArICAgICMgVGVzdCBiYWNrdHJhY2Ug bGltaXQNCj4gKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBiYWNrdHJhY2UgbGltaXQgMiIN Cj4gKyAgICBnZGJfdGVzdCAiYnQgLXNoYWRvdyIgXA0KPiArCVttdWx0aV9saW5lIFwNCj4gKwkg ICAgIiRmcmFtZTEiIFwNCj4gKwkgICAgIiRmcmFtZTIiIF0gXA0KPiArCSJ0ZXN0IHNoYWRvdyBz dGFjayBiYWNrdHJhY2Ugd2l0aCBsaW1pdCINCj4gKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNl dCBiYWNrdHJhY2UgbGltaXQgdW5saW1pdGVkIiAicmVzdG9yZSBiYWNrdHJhY2UNCj4gbGltaXQg ZGVmYXVsdCINCj4gKw0KPiAgICAgIHdpdGhfdGVzdF9wcmVmaXggInRlc3QgcmV0dXJuIGZyb20g Y3VycmVudCBmcmFtZSIgew0KPiAgCWdkYl90ZXN0ICJyZXR1cm4gKGludCkgMSIgIiMwLipjYWxs MS4qIiBcDQo+ICAJIlRlc3Qgc2hhZG93IHN0YWNrIHJldHVybiBmcm9tIGN1cnJlbnQgZnJhbWUi IFwNCj4gZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvb3B0aW9ucy5leHANCj4g Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhwDQo+IGluZGV4IDM1NDg3ZWFkNmE3 Li44Y2E2ZTY3N2FiYSAxMDA2NDQNCj4gLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9vcHRp b25zLmV4cA0KPiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhwDQo+IEBA IC0yODYsNyArMjg2LDYgQEAgcHJvY193aXRoX3ByZWZpeCB0ZXN0LWJhY2t0cmFjZSB7fSB7DQo+ ICAgICAgY2xlYW5fcmVzdGFydA0KPiANCj4gICAgICB0ZXN0X2dkYl9jb21wbGV0ZV91bmlxdWUg ImJhY2t0cmFjZSIgImJhY2t0cmFjZSINCj4gLSAgICB0ZXN0X2dkYl9jb21wbGV0ZV9ub25lICJi YWNrdHJhY2UgIg0KPiANCj4gICAgICBnZGJfdGVzdCAiYmFja3RyYWNlIC0iICJBbWJpZ3VvdXMg b3B0aW9uIGF0OiAtIg0KPiAgICAgIGdkYl90ZXN0ICJiYWNrdHJhY2UgLS0iICJObyBzdGFja1xc LiINCj4gQEAgLTMwMiw2ICszMDEsNyBAQCBwcm9jX3dpdGhfcHJlZml4IHRlc3QtYmFja3RyYWNl IHt9IHsNCj4gIAkiLXBhc3QtZW50cnkiDQo+ICAJIi1wYXN0LW1haW4iDQo+ICAJIi1yYXctZnJh bWUtYXJndW1lbnRzIg0KPiArCSItc2hhZG93Ig0KPiAgICAgIH0NCj4gDQo+ICAgICAgIyBUZXN0 IHRoYXQgd2UgY29tcGxldGUgdGhlIHF1YWxpZmllcnMsIGlmIHRoZXJlJ3MgYW55Lg0KPiAtLQ0K PiAyLjM0LjENCj4gDQo+IEludGVsIERldXRzY2hsYW5kIEdtYkgNCj4gDQo+IFJlZ2lzdGVyZWQg QWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtpcmNoZW4sIEdlcm1hbnkN Cj4gVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3LmludGVsLmRlDQo+IE1hbmFnaW5nIERpcmVjdG9y czogSGFycnkgRGVtYXMsIEplZmZyZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVsbA0K PiBDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUNCj4gUmVn aXN0ZXJlZCBTZWF0OiBNdW5pY2gNCj4gQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQg TXVlbmNoZW4gSFJCIDE4NjkyOA0KPiANCg0KSW50ZWwgRGV1dHNjaGxhbmQgR21iSAoKUmVnaXN0 ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIgU3RyYXNzZSAxLCA4NTYyMiBGZWxka2lyY2hlbiwgR2Vy bWFueQpUZWw6ICs0OSA4OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUKTWFuYWdpbmcgRGlyZWN0b3Jz OiBIYXJyeSBEZW1hcywgSmVmZnJleSBTY2huZWlkZXJtYW4sIFlpbiBDaG9uZyBTb3JyZWxsCkNo YWlycGVyc29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2FyZDogTmljb2xlIExhdQpSZWdpc3RlcmVk IFNlYXQ6IE11bmljaApDb21tZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBI UkIgMTg2OTI4Cg==