From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id CmC7Gob8vGqTNR4AWB0awg (envelope-from ) for ; Wed, 30 Sep 2026 08:11:50 -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=cS5d/Rh7; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 528591E051; Wed, 30 Sep 2026 08:11:50 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.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,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED 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 C32621E033 for ; Wed, 30 Sep 2026 08:11:47 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CD9504BB3B91 for ; Wed, 30 Sep 2026 12:11:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CD9504BB3B91 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=cS5d/Rh7 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by sourceware.org (Postfix) with ESMTPS id 1C0E84BB24C9 for ; Wed, 30 Sep 2026 12:11:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1C0E84BB24C9 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 1C0E84BB24C9 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.8 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1790770275; cv=fail; b=KJaqxsHatJjZQyAnJiaDEXo3s8KZ0LkIBsv+DyzwVXsloTfB7bD8o2lkAB0JMQlIAQlpicbCk+Js1M57bLitorzymI6tL65DctHJhDpfTg4DEbR0FZNeJDVel/i7i6Ff3MAKzRDeKU5UU5WwirY5o9SW2pdXQP2l8uUqIVqh6X4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1790770275; c=relaxed/simple; bh=lzTKFa1Y/1tqHTWa1b5Hw9nPRuztNa6dIPzIEB6y18c=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=GC/O8ytghrktCbOu/wz9Rhb//hjZ/z8lv+3EUtPuMtg/x/I+ODv6p2ymyAhbeB/czT0JbzGHIk8sy2USeNPd4s/zbPHtiGDvkUvAhyvTEZtmionw0MycKUpvoX2Dpv/jYelnNfwM8AO03sMxo6MtJ6ddYPpvC+PFbH2JR29hSeM= 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=cS5d/Rh7 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1C0E84BB24C9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1790770274; x=1822306274; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=lzTKFa1Y/1tqHTWa1b5Hw9nPRuztNa6dIPzIEB6y18c=; b=cS5d/Rh7yIf2VCDU+qABRUQNdX01w+P46ToxQC6AIux5ZgZa7XztF1ft zf8X0TbEXhAU91wk/SCLFSvaPnXCkgg+mEmdVg/f53yJrSX7qFhuWo7RV lweMsW/Omz9fHvKJS0T1Q7lvVVAEc0BbVdbPE+26vshAOr1VLDQAeXPst b8voXf+3G12o2wfgESCbQOTgqU5pkC4ASrVqRrCY1jbdGQ7lnbQmLWIxi r08pkR5YQ/oVzjMaWh8esOSKAyfHOT3XTraW3NDgXdlZFk8g019va6Gzw mzRafCw1xZn2Dw1illcDsqvrEmzhncc+nzi7zOnR2REKEiwu5bVG11mA/ A==; X-CSE-ConnectionGUID: ek15QzejRPGMySfyCcFxHA== X-CSE-MsgGUID: 1GX2ZdJeRv6Vj9EJOJ23dw== X-IronPort-AV: E=McAfee;i="6800,10657,11920"; a="108993805" X-IronPort-AV: E=Sophos;i="6.27,132,1787036400"; d="scan'208";a="108993805" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2026 05:11:10 -0700 X-CSE-ConnectionGUID: 4cvGeDCjSvuCAphTqWAX2A== X-CSE-MsgGUID: 1SnTtTezQbKaZu53qS+tyA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,132,1787036400"; d="scan'208";a="275805701" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2026 05:11:10 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) 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.49; Wed, 30 Sep 2026 05:11:09 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49 via Frontend Transport; Wed, 30 Sep 2026 05:11:09 -0700 Received: from DM5PR21CU001.outbound.protection.outlook.com (52.101.62.28) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 30 Sep 2026 05:11:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Uhb8xLpO59dx6bTu/XEo0+VLFKvbkZOVMPNBWrzJ4976GMGcnUnrOBlh4OSLjNGhNR3zUXKJ7AqeQydJVIa4IgoQzV/RpBI06pIxqt+ps3UrJkeT/LTjdxDgwiZu8YVFB2LiyVk7FwqrQ9UPO6RlukhYaVm1Mf48xWR/ooBhr5zQoC4p6ybkq9z+qk1GupCzLUjnrrQOP++GjKYuO8+PsMAZ1cEkz8/jEZlzQfRb8f2hZ0bVLggyu1XfCC6mgrWTq+F0Aohio3daUfGx7251eCyUG1mcPTp4TUkGZu5BwwNDYC5uvGurEdqS7z3hW4zYEv7Qe4epdTclpY3zhD/2vA== 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=G7Ud9JdamDan5/xobUVs3DwnczHp64OZieVpWrck5/4=; b=Ycx9itcG8wey+S/ZONyL69InmBSiWvuGFwwKzEzWlG+2WJ56FzLqRjiezkjxsErt+NL5xaY+PFui/zhiGqDLVUcvVq2OLHKFZvHexzPvq9rlYhmnBr85+hPjcQp6aHdYZapvVwtjEyPtlVC32S5fHvyLS+Ov80AIv48jd3re6PSKCCOwpZWhPNEkD0EB73XJaJfhc6dn2uSoADb92bhxVINMMWGLWVxSV7ekUbGfFD77aoN7UIh4mU/9Pv22GCVFXTtAoo3vej27rungaVtqSRLMuEeFenaB7Y9suoHXM2MfK704LRHC19CjZFSiEE4W/Htvq0+MIHOm4Um0lsyEIg== 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 DS7PR11MB6247.namprd11.prod.outlook.com (2603:10b6:8:98::22) by DS4PR11MB084795.namprd11.prod.outlook.com (2603:10b6:8:4bf::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.15; Wed, 30 Sep 2026 12:10:19 +0000 Received: from DS7PR11MB6247.namprd11.prod.outlook.com ([fe80::af57:631:e7eb:3aea]) by DS7PR11MB6247.namprd11.prod.outlook.com ([fe80::af57:631:e7eb:3aea%4]) with mapi id 15.21.0451.022; Wed, 30 Sep 2026 12:10:18 +0000 From: "Rohr, Stephan" To: Simon Marchi , "gdb-patches@sourceware.org" Subject: RE: [PATCH 2/9] gdb: factor out regexp compilation from global_symbol_searcher::search Thread-Topic: [PATCH 2/9] gdb: factor out regexp compilation from global_symbol_searcher::search Thread-Index: AQHdUEqezyhGwb2mI0633myB2uZ0TLbm8fHA Date: Wed, 30 Sep 2026 12:10:18 +0000 Message-ID: References: <20260929194119.155169-1-simon.marchi@efficios.com> <20260929194119.155169-3-simon.marchi@efficios.com> In-Reply-To: <20260929194119.155169-3-simon.marchi@efficios.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR11MB6247:EE_|DS4PR11MB084795:EE_ x-ms-office365-filtering-correlation-id: f29dc606-d17f-415f-e1b0-08df1eebcb3c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|10070799003|376014|23010399003|10067099003|56012099006|11063799006|4143699003|6133799003|18002099003|22082099003|38070700021; x-microsoft-antispam-message-info: aZeIqWApUsifYw5Btiic1DtkXwQLkFB8cHjvJEdMAgk9jWCQ8dX2sH6AtqLJtcRiyWhOB31GP8kWjoCq3v2QiQ1IPjb7echK7IiOJNwNT0MPreNEPXxliGXXw4MyTyHgmk+fE1HlB0znw0UrEcGOpn4ftyQ+1OVDg6uEybXateHcQ1CCVFVC9CEPFqAnd+iWCRTLsPvwocrWRItffbWYEz/ZHxjiRoE7j1jPhRqtffVlEH3wMud3pt+JhZfb+6nZc3FYM+LrlfWvMVUKCjNBNGan58QsxSddocj4mkeLlIBdJmrDAz43PXmCHGZV/LV4zmhBwFSqNt7w/kmJ4LWu+181ZbVSq97A8xoE3w0fBt9SIUVwIvRwZY+Wh/hwi/x9uGp7YVahS3vtXhTm+zI6B5HHbQQAH4/2xW24AQnqVHIzoX2MQ60pqdbBPevOYsQkyG70ZMgPJUs7hQsiEI7XQgbdU2s4VzzqG3pNfaGwkrzcSWStUBvk5ZLxwo/8F36vXGn4LrYTX6VVSFdSxNb3OpbaXnO+KotAQJ1T5DjW7fFnhRurY8uKnfEZu3LL+Q1aYIkCY9gYJV9OBcgeTs8jo/VPn3pEIggMP4W2nAxw+y/yig7vQbYbXFbk0gNAuWAit6HYyAoijF0D/xt5tDtnQHW9vv1zMfK7Ak7hOl5ldntj08928X6pEfgrP458xdznxq4Ant61/lzpYXgnc/ZfUvhRFbFeZsJMBwfrKS+snyc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR11MB6247.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(10070799003)(376014)(23010399003)(10067099003)(56012099006)(11063799006)(4143699003)(6133799003)(18002099003)(22082099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MWptY3FFMUt4dHBpUGFqVUgvVVdySGpuaDNsNEE3MWl6bWIzbjJVVVVTMERa?= =?utf-8?B?QmU5VEFEV1Rxb0FVUnd2Ymp0bCtxdjZOWFdNQUlFNHlueUttczJabDYvZGF6?= =?utf-8?B?WkNUa2FPaW1Ca0gzTCtkY3ZQTWRtUUdtQ1dnVjhOMXhWbHhDVHdxTkpRZXVE?= =?utf-8?B?RnJpcG13ODZXNnVMK1FJOG5mVUZpVnpoa1FUQUljRVQ1Y0g1MXJvaGxMdmpM?= =?utf-8?B?Uytsa1JnNDM1L1dHbXE2RXlKcUdPdmRBa2k0ZktEQWpOL0ZEUnpleG51VXpZ?= =?utf-8?B?QW9iS3ZuUG9SSW1oTk82ZzVIOHg2R3pTQ0pWek9GbG1oM2pKSlVNLy9LUlRT?= =?utf-8?B?Z2NPVFBZRkN6UVVXNERtU25xdjBiWnZWa0xBZm5UbDBnL1J6d3RpVElzODZ4?= =?utf-8?B?Nno4SEJDalpvWUNRWklLUVl6b2cyZlRvd1oxYXNzSndSYkppQnFLVDJpdkRp?= =?utf-8?B?VEZzS2t0REh0UHl1M1F0STluT2pkWWxSUDlTQ0hqQTRpWmtDUkVWZTUxcTEw?= =?utf-8?B?M1c2ZWwvZVNkaFRLcU9UckhNZlFIWWtaMzI1dVR1QlQzZTFuejg4UFRFNkw2?= =?utf-8?B?VE5JeDF1SG1iVXRFcHlSWkVlVnFFRGVuSE56cDZ5bytxUjlueWYzMHNZaDc3?= =?utf-8?B?aWN0QWNMU1FHckFvQXNYQmZ2ZHJpTlVEdk43UThMVml6M3FMdkQzdjl1K0p1?= =?utf-8?B?T21LeWphanRsM3ltMnVnZjZLNk9OaFk3OXovL3RNMWdyeHhTNyt2dWdwVzRy?= =?utf-8?B?OElwRnBSL0R2cW1DRGhQMVllTU1qZjFvV2NJQ2V0dlZYeEZDRE5aMzFjcFZp?= =?utf-8?B?OUZwU29pVG1UQ0tKUEQ2aEdxMXZYS1hLaWV3NmVQaUcvVFlRQmRZZjZCdHAv?= =?utf-8?B?UzhPQjJQaUo2c0FsNDJBRUNEYS8wZXVnNGJoTEhydmJhNG94OThEZEp2MXBl?= =?utf-8?B?QnUrQ2J1K2tTSysxRlpPWWhDcXNlNGJFOXlPM2RoMDNxNDdSc3hhNitHaStN?= =?utf-8?B?M2lFQ2t2ODQxMENaQWtGc0NpMFo5cHQwekZQUnMvVjhYb3BlQ3E5czNvdGJ0?= =?utf-8?B?T3NUMDdlbktaR2FSYWpoWDZCVVB4VkN3cE50S3U1cjVic2N2KzU5MzRMQ0Rv?= =?utf-8?B?M0ZVdEhQMXFqTDQ3K0VveCtKd2RwVUx5WXpuT25vQTdIZmRkWGZ6TVJodSt4?= =?utf-8?B?SEoya1Zub3ZwUDRpTURBa1FWRVp4RjNMbm81WEV4S2g3NjdGN3BQeG95bWpD?= =?utf-8?B?YkZuQndrY0VVa0F3SFV0Tlp2UDlQakFIZTV6c1pXSmpCQ1diZHJXc1c0MUVs?= =?utf-8?B?NjR1ZlJ5M2Q5bXJDMHpPcm1CVFYxR0IrNFN2dkx5a1BNNzRDSlpqUU9hcnVt?= =?utf-8?B?ckgrQWgxVHl5ZVpPbU9SUkMxeVErZXpsYlZ2cE9ZYitobGk3Z2poOS9tV1Qx?= =?utf-8?B?azZTZUh6NFJYNjBMTjZNZ2FNYmNtaStwV1JBMjMxOU5yZmd2UEErdk5LSWZv?= =?utf-8?B?c1dVQmc5K2RvazYvWmJvSmZRWmpsMHpKY1l0UDhZYTFoNFVQTzhJOEpaRE0r?= =?utf-8?B?QmVBQTh5dDB6cXY5SzlHSHRDaVpEZytjdWpDb2EyZzlmOEhIZlFwQis4NVhY?= =?utf-8?B?UUd4R3h4cUhxRTFyZWNLMklzSTV1U0grUllleEJsVkFXanN2aFdGUkljRFdY?= =?utf-8?B?VkZJY0M0VjNQTkV6azRWUi9IMFYzWU9lL3dObGppZjZWVFRCSVNYSVBqOXNM?= =?utf-8?B?bk04M3VaK3QwOVVqemdDRHkxYmhJcTRTN3BFaXdxelc1QXE2a0lEVExsR3Q0?= =?utf-8?B?R2xVS0JpZzZ5VitibkhXL3U1MEZvZUxpeHFvVzluMjBWZkEvSW9oT2xPWlB2?= =?utf-8?B?b3cwSk5oM25jMmRCc2cwaE9yYnptWE90bVdYRlpvbEphYjNYc1k4ZVl6aTNa?= =?utf-8?B?NFppZlZaRXhmMDh5cnVGY2xXV3hIcVFXaTNJZHh5K3Z3b3ZPSjQzVytNL3h2?= =?utf-8?B?ZENhanNNTkROcWFCMjBHb01iTmlvMUxMT1RtR3E2Qkk0aFlQb1R6OFdQQkN4?= =?utf-8?B?NEN1VUMyblVQKzFPSnBNeVltS2JLZk9Mb0c0MFlkNkMvaUxXTDdDKzFCVWts?= =?utf-8?B?R3BCS1lkL0gyQXFnQm00eEZaL1lrMFh2MFlZaEo4WkR1YklEWkFqZzh3Zzh5?= =?utf-8?B?dWhKd29YYnNoT0tUVVBlcnptNGprV2J0RWdnR29XbHh6RUZZc01aa0xuWGx0?= =?utf-8?B?RnJoamxUcENpSDdSOE5EeXdOV0dyUS85ZEliU21UTkVtNVNGNHUzWGtIRkNa?= =?utf-8?B?Rk1KdXFxcjJCTWRWQXYraTJFSHVEYWd4QVI3eW9qZzJoM09WK3JKdEhhc0d6?= =?utf-8?Q?78CizjgxJiDrbiq2m35FFlZAl5pa3tghUNOAU1slUM2wp?= x-ms-exchange-antispam-messagedata-1: abjKbApNxvQVwQ== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: js2H+O3yhMmzQjABhICebfFCKQ1MBjV+6L3mc2+y99e0wbJ58JlsjK+i6KJsYg1+8GXHO7ppDj/7ky94XlN2elwXPEs2W3CxRUuCzIG6sl0zrWdw/X5TZ5PxoLGJkLE7Ffp1JOR8E+ZocZAuiPu8eHZ6Rrnnbc6FBbTWX2EEJtPoQIwbDjh5IYYCE6yw/A4iaESVurn6UYRwVdhzTlE9bVdw9AwdyWCV/mREjC0Osp2ARwMxSCYe3MEfsQTbWPTCNgYa2ZwtiVUZhFzVmUy/gcviacpM9j/N5RdAzZNJbFjaicplgU8dko9Avwrf7x5pKixT3xOKIDAZMu3+9SyZwQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR11MB6247.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f29dc606-d17f-415f-e1b0-08df1eebcb3c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2026 12:10:18.5635 (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: luToLB387J1TBJ0blTSWmn8oSqJazfNTSDEK+3WC6/L4Z7w9VM57xoid4EzYhcXwyit+BgTPto8E0tBHXvZsAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR11MB084795 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 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaW1vbiBNYXJjaGkgPHNpbW9u Lm1hcmNoaUBlZmZpY2lvcy5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIDI5IFNlcHRlbWJlciAyMDI2 IDIxOjM5DQo+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBDYzogU2ltb24gTWFy Y2hpIDxzaW1vbi5tYXJjaGlAZWZmaWNpb3MuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggMi85XSBn ZGI6IGZhY3RvciBvdXQgcmVnZXhwIGNvbXBpbGF0aW9uIGZyb20NCj4gZ2xvYmFsX3N5bWJvbF9z ZWFyY2hlcjo6c2VhcmNoDQo+IA0KPiBGYWN0b3Igb3V0IHRoZSBzY29wZXMgdGhhdCBjb21waWxl IHRoZSByZWdleHBzLCBpbiBvcmRlciB0byBtYWtlDQo+IGdsb2JhbF9zeW1ib2xfc2VhcmNoZXI6 OnNlYXJjaCBpdHNlbGYgc2ltcGxlciB0byByZWFkLg0KPiANCj4gQWxzbywgSSBmb3VuZCB0aGUg bmFtZXMgInByZWciIGFuZCAidHJlZyIgdmVyeSB1bmNsZWFyLCBzbyByZXBsYWNlIHRoZW0NCj4g d2l0aCAibmFtZV9yZWdleCIgYW5kICJ0eXBlX3JlZ2V4Ii4NCj4gDQo+IENoYW5nZS1JZDogSWU0 NDg1YjJlYjU5Mzk2NzA2OWFjNjM1YzkzM2RmODE3YmM1MzA0ZTYNCj4gLS0tDQo+ICBnZGIvc3lt dGFiLmMgfCAxNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICBnZGIvc3ltdGFiLmggfCAgNDMgKysrKysrKy0tLS0tLQ0KPiAgMiBmaWxlcyBj aGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgOTIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jDQo+IGluZGV4IDcwOGRmMDc4ZTJlYS4u YzRmNzZhNDk0YWJkIDEwMDY0NA0KPiAtLS0gYS9nZGIvc3ltdGFiLmMNCj4gKysrIGIvZ2RiL3N5 bXRhYi5jDQo+IEBAIC00NzQ1LDcgKzQ3NDUsOCBAQCBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjpp c19zdWl0YWJsZV9tc3ltYm9sDQo+IA0KPiAgYm9vbA0KPiAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hl cjo6ZXhwYW5kX3N5bXRhYnMNCj4gLQkob2JqZmlsZSAqb2JqZmlsZSwgY29uc3Qgc3RkOjpvcHRp b25hbDxjb21waWxlZF9yZWdleD4gJnByZWcpIGNvbnN0DQo+ICsJKG9iamZpbGUgKm9iamZpbGUs DQo+ICsJIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29tcGlsZWRfcmVnZXg+ICZuYW1lX3JlZ2V4KSBj b25zdA0KPiAgew0KPiAgICBib29sIGZvdW5kX2Z1bmNfbXN5bWJvbF93aXRob3V0X2RlYnVnX2lu Zm8gPSBmYWxzZTsNCj4gDQo+IEBAIC00NzYyLDggKzQ3NjMsOCBAQCBnbG9iYWxfc3ltYm9sX3Nl YXJjaGVyOjpleHBhbmRfc3ltdGFicw0KPiAgICAgICAmbG9va3VwX25hbWVfaW5mbzo6bWF0Y2hf YW55ICgpLA0KPiAgICAgICBbJl0gKGNvbnN0IGNoYXIgKnN5bW5hbWUpDQo+ICAgICAgIHsNCj4g LSAgICAgICByZXR1cm4gKCFwcmVnLmhhc192YWx1ZSAoKQ0KPiAtCSAgICAgICB8fCBwcmVnLT5l eGVjIChzeW1uYW1lLCAwLCBOVUxMLCAwKSA9PSAwKTsNCj4gKyAgICAgICByZXR1cm4gKCFuYW1l X3JlZ2V4Lmhhc192YWx1ZSAoKQ0KPiArCSAgICAgICB8fCBuYW1lX3JlZ2V4LT5leGVjIChzeW1u YW1lLCAwLCBOVUxMLCAwKSA9PSAwKTsNCj4gICAgICAgfSwNCj4gICAgICAgTlVMTCwNCj4gICAg ICAgU0VBUkNIX0dMT0JBTF9CTE9DSyB8IFNFQVJDSF9TVEFUSUNfQkxPQ0ssDQo+IEBAIC00Nzk0 LDkgKzQ3OTUsOSBAQCBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjpleHBhbmRfc3ltdGFicw0KPiAN Cj4gIAkgIGlmIChpc19zdWl0YWJsZV9tc3ltYm9sIChtX2tpbmQsIG1zeW1ib2wpKQ0KPiAgCSAg ICB7DQo+IC0JICAgICAgaWYgKCFwcmVnLmhhc192YWx1ZSAoKQ0KPiAtCQkgIHx8IHByZWctPmV4 ZWMgKG1zeW1ib2wtPm5hdHVyYWxfbmFtZSAoKSwgMCwNCj4gLQkJCQkgTlVMTCwgMCkgPT0gMCkN Cj4gKwkgICAgICBpZiAoIW5hbWVfcmVnZXguaGFzX3ZhbHVlICgpDQo+ICsJCSAgfHwgbmFtZV9y ZWdleC0+ZXhlYyAobXN5bWJvbC0+bmF0dXJhbF9uYW1lICgpLCAwLA0KPiArCQkJCSAgICAgICBO VUxMLCAwKSA9PSAwKQ0KPiAgCQl7DQo+ICAJCSAgLyogQW4gaW1wb3J0YW50IHNpZGUtZWZmZWN0 IG9mIHRoaXMgbG9va3VwIGZ1bmN0aW9uIGlzDQo+ICAJCSAgICAgdG8gZXhwYW5kIHRoZSBzeW1i b2wgdGFibGUgaWYgbXN5bWJvbCBpcyBmb3VuZCwgbGF0ZXINCj4gQEAgLTQ4MTksOCArNDgyMCw4 IEBAIGdsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmV4cGFuZF9zeW10YWJzDQo+ICBib29sDQo+ICBn bG9iYWxfc3ltYm9sX3NlYXJjaGVyOjphZGRfbWF0Y2hpbmdfc3ltYm9scw0KPiAgCShvYmpmaWxl ICpvYmpmaWxlLA0KPiAtCSBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiAmcHJl ZywNCj4gLQkgY29uc3Qgc3RkOjpvcHRpb25hbDxjb21waWxlZF9yZWdleD4gJnRyZWcsDQo+ICsJ IGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29tcGlsZWRfcmVnZXg+ICZuYW1lX3JlZ2V4LA0KPiArCSBj b25zdCBzdGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiAmdHlwZV9yZWdleCwNCj4gIAkgc3Rk OjpzZXQ8c3ltYm9sX3NlYXJjaD4gKnJlc3VsdF9zZXQpIGNvbnN0DQo+ICB7DQo+ICAgIGRvbWFp bl9zZWFyY2hfZmxhZ3MgZG9tYWluID0gdG9fc2VhcmNoX2ZsYWdzIChtX2tpbmQpOw0KPiBAQCAt NDg1NCwxNCArNDg1NSwxNSBAQA0KPiBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjphZGRfbWF0Y2hp bmdfc3ltYm9scw0KPiAgCSAgICAgIGlmICghc3ltLT5tYXRjaGVzIChkb21haW4pKQ0KPiAgCQlj b250aW51ZTsNCj4gDQo+IC0JICAgICAgaWYgKHByZWcuaGFzX3ZhbHVlICgpICYmIHByZWctPmV4 ZWMgKHN5bS0+bmF0dXJhbF9uYW1lICgpLCAwLA0KPiAtCQkJCQkJICAgbnVsbHB0ciwgMCkgIT0g MCkNCj4gKwkgICAgICBpZiAobmFtZV9yZWdleC5oYXNfdmFsdWUgKCkNCj4gKwkJICAmJiBuYW1l X3JlZ2V4LT5leGVjIChzeW0tPm5hdHVyYWxfbmFtZSAoKSwgMCwNCj4gKwkJCQkgICAgICAgbnVs bHB0ciwgMCkgIT0gMCkNCj4gIAkJY29udGludWU7DQo+IA0KPiAgCSAgICAgIGlmICgoKHN5bS0+ ZG9tYWluICgpID09IFZBUl9ET01BSU4NCj4gIAkJICAgIHx8IHN5bS0+ZG9tYWluICgpID09IEZV TkNUSU9OX0RPTUFJTikNCj4gLQkJICAgJiYgdHJlZy5oYXNfdmFsdWUgKCkNCj4gLQkJICAgJiYg IXRyZWdfbWF0Y2hlc19zeW1fdHlwZV9uYW1lICgqdHJlZywgc3ltKSkpDQo+ICsJCSAgICYmIHR5 cGVfcmVnZXguaGFzX3ZhbHVlICgpDQo+ICsJCSAgICYmICF0cmVnX21hdGNoZXNfc3ltX3R5cGVf bmFtZSAoKnR5cGVfcmVnZXgsIHN5bSkpKQ0KDQpTaG91bGQgd2UgYWxzbyByZW5hbWUgIiB0cmVn X21hdGNoZXNfc3ltX3R5cGVfbmFtZSIgYXMgcGFydCBvZiB0aGlzDQpyZWZhY3RvcmluZz8gICBB bHNvLCB0aGUgZGVidWcgcHJpbnRzIGZyb20gIiB0cmVnX21hdGNoZXNfc3ltX3R5cGVfbmFtZSIu DQoNCj4gIAkJY29udGludWU7DQo+IA0KPiAgCSAgICAgIGlmIChtX2tpbmQgPT0gc3ltYm9sX3Nl YXJjaF9raW5kOjpWQVJJQUJMRSkNCj4gQEAgLTQ4OTgsNyArNDkwMCw3IEBAIGdsb2JhbF9zeW1i b2xfc2VhcmNoZXI6OmFkZF9tYXRjaGluZ19zeW1ib2xzDQo+IA0KPiAgYm9vbA0KPiAgZ2xvYmFs X3N5bWJvbF9zZWFyY2hlcjo6YWRkX21hdGNoaW5nX21zeW1ib2xzDQo+IC0JKG9iamZpbGUgKm9i amZpbGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29tcGlsZWRfcmVnZXg+ICZwcmVnLA0KPiArCShv YmpmaWxlICpvYmpmaWxlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiAmbmFt ZV9yZWdleCwNCj4gIAkgc3RkOjp2ZWN0b3I8c3ltYm9sX3NlYXJjaD4gKnJlc3VsdHMpIGNvbnN0 DQo+ICB7DQo+ICAgIGZvciAobWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgOiBvYmpmaWxlLT5tc3lt Ym9scyAoKSkNCj4gQEAgLTQ5MTAsOSArNDkxMiw5IEBADQo+IGdsb2JhbF9zeW1ib2xfc2VhcmNo ZXI6OmFkZF9tYXRjaGluZ19tc3ltYm9scw0KPiANCj4gICAgICAgIGlmIChpc19zdWl0YWJsZV9t c3ltYm9sIChtX2tpbmQsIG1zeW1ib2wpKQ0KPiAgCXsNCj4gLQkgIGlmICghcHJlZy5oYXNfdmFs dWUgKCkNCj4gLQkgICAgICB8fCBwcmVnLT5leGVjIChtc3ltYm9sLT5uYXR1cmFsX25hbWUgKCks IDAsDQo+IC0JCQkgICAgIE5VTEwsIDApID09IDApDQo+ICsJICBpZiAoIW5hbWVfcmVnZXguaGFz X3ZhbHVlICgpDQo+ICsJICAgICAgfHwgbmFtZV9yZWdleC0+ZXhlYyAobXN5bWJvbC0+bmF0dXJh bF9uYW1lICgpLCAwLA0KPiArCQkJCSAgIE5VTEwsIDApID09IDApDQo+ICAJICAgIHsNCj4gIAkg ICAgICAvKiBGb3IgZnVuY3Rpb25zIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrIG9mIHdoZXRoZXIg dGhlDQo+ICAJCSBzeW1ib2wgbWlnaHQgYmUgZm91bmQgdmlhIGZpbmRfcGNfc3ltdGFiLiAgKi8N Cj4gQEAgLTQ5MzgsNjUgKzQ5NDAsODQgQEANCj4gZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6YWRk X21hdGNoaW5nX21zeW1ib2xzDQo+ICAgIHJldHVybiB0cnVlOw0KPiAgfQ0KPiANCj4gKy8qIFJl dHVybiB0aGUgcmVnY29tcCBmbGFncyB0byB1c2UgZm9yIHRoZSBzeW1ib2wgbmFtZSBhbmQgc3lt Ym9sIHR5cGUNCj4gKyAgIHJlZ2V4cHMuICAqLw0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtzZWFy Y2hfcmVnZXhfY2ZsYWdzICgpDQo+ICt7DQo+ICsgIHJldHVybiBSRUdfTk9TVUIgfCAoY2FzZV9z ZW5zaXRpdml0eSA9PSBjYXNlX3NlbnNpdGl2ZV9vZmYgPyBSRUdfSUNBU0UgOg0KPiAwKTsNCj4g K30NCj4gKw0KPiArLyogU2VlIHN5bXRhYi5oLiAgKi8NCj4gKw0KPiArc3RkOjpvcHRpb25hbDxj b21waWxlZF9yZWdleD4NCj4gK2dsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmNvbXBpbGVfbmFtZV9y ZWdleCAoKSBjb25zdA0KPiArew0KPiArICBpZiAobV9zeW1ib2xfbmFtZV9yZWdleHAgPT0gbnVs bHB0cikNCj4gKyAgICByZXR1cm4ge307DQo+ICsNCj4gKyAgY29uc3QgY2hhciAqc3ltYm9sX25h bWVfcmVnZXhwID0gbV9zeW1ib2xfbmFtZV9yZWdleHA7DQo+ICsgIHN0ZDo6c3RyaW5nIHN5bWJv bF9uYW1lX3JlZ2V4cF9ob2xkZXI7DQo+ICsNCj4gKyAgLyogTWFrZSBzdXJlIHNwYWNpbmcgaXMg cmlnaHQgZm9yIEMrKyBvcGVyYXRvcnMuDQo+ICsgICAgIFRoaXMgaXMganVzdCBhIGNvdXJ0ZXN5 IHRvIG1ha2UgdGhlIG1hdGNoaW5nIGxlc3Mgc2Vuc2l0aXZlDQo+ICsgICAgIHRvIGhvdyBtYW55 IHNwYWNlcyB0aGUgdXNlciBsZWF2ZXMgYmV0d2VlbiAnb3BlcmF0b3InDQo+ICsgICAgIGFuZCA8 VFlQRU5BTUU+IG9yIDxPUEVSQVRPUj4uICAqLw0KPiArICBjb25zdCBjaGFyICpvcF9lbmQ7DQo+ ICsgIGNvbnN0IGNoYXIgKm9wbmFtZSA9IG9wZXJhdG9yX2NoYXJzIChzeW1ib2xfbmFtZV9yZWdl eHAsICZvcF9lbmQpOw0KPiArDQo+ICsgIGlmICgqb3BuYW1lKQ0KPiArICAgIHsNCj4gKyAgICAg IC8qIC0xIG1lYW5zIG9rOyBvdGhlcndpc2UgbnVtYmVyIG9mIHNwYWNlcyBuZWVkZWQuICAqLw0K PiArICAgICAgaW50IGZpeCA9IC0xOw0KPiArDQo+ICsgICAgICBpZiAoY19pc2FscGhhICgqb3Bu YW1lKSB8fCAqb3BuYW1lID09ICdfJyB8fCAqb3BuYW1lID09ICckJykNCj4gKwl7DQo+ICsJICAv KiBUaGVyZSBzaG91bGQgMSBzcGFjZSBiZXR3ZWVuICdvcGVyYXRvcicgYW5kICdUWVBFTkFNRScu ICAqLw0KPiArCSAgaWYgKG9wbmFtZVstMV0gIT0gJyAnIHx8IG9wbmFtZVstMl0gPT0gJyAnKQ0K PiArCSAgICBmaXggPSAxOw0KPiArCX0NCj4gKyAgICAgIGVsc2UNCj4gKwl7DQo+ICsJICAvKiBU aGVyZSBzaG91bGQgMCBzcGFjZXMgYmV0d2VlbiAnb3BlcmF0b3InIGFuZCAnT1BFUkFUT1InLiAg Ki8NCj4gKwkgIGlmIChvcG5hbWVbLTFdID09ICcgJykNCj4gKwkgICAgZml4ID0gMDsNCj4gKwl9 DQo+ICsgICAgICAvKiBJZiB3cm9uZyBudW1iZXIgb2Ygc3BhY2VzLCBmaXggaXQuICAqLw0KPiAr ICAgICAgaWYgKGZpeCA+PSAwKQ0KPiArCXsNCj4gKwkgIHN5bWJvbF9uYW1lX3JlZ2V4cF9ob2xk ZXINCj4gKwkgICAgPSBzdHJpbmdfcHJpbnRmICgib3BlcmF0b3IlLipzJXMiLCBmaXgsICIgIiwg b3BuYW1lKTsNCj4gKwkgIHN5bWJvbF9uYW1lX3JlZ2V4cCA9IHN5bWJvbF9uYW1lX3JlZ2V4cF9o b2xkZXIuY19zdHIgKCk7DQo+ICsJfQ0KPiArICAgIH0NCj4gKw0KPiArICByZXR1cm4gc3RkOjpv cHRpb25hbDxjb21waWxlZF9yZWdleD4gKHN0ZDo6aW5fcGxhY2UsIHN5bWJvbF9uYW1lX3JlZ2V4 cCwNCj4gKwkJCQkJc2VhcmNoX3JlZ2V4X2NmbGFncyAoKSwNCj4gKwkJCQkJXygiSW52YWxpZCBy ZWdleHAiKSk7DQo+ICt9DQo+ICsNCj4gKy8qIFNlZSBzeW10YWIuaC4gICovDQo+ICsNCj4gK3N0 ZDo6b3B0aW9uYWw8Y29tcGlsZWRfcmVnZXg+DQo+ICtnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjpj b21waWxlX3R5cGVfcmVnZXggKCkgY29uc3QNCj4gK3sNCj4gKyAgaWYgKG1fc3ltYm9sX3R5cGVf cmVnZXhwID09IG51bGxwdHIpDQo+ICsgICAgcmV0dXJuIHt9Ow0KPiArDQo+ICsgIHJldHVybiBz dGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiAoc3RkOjppbl9wbGFjZSwNCj4gbV9zeW1ib2xf dHlwZV9yZWdleHAsDQo+ICsJCQkJCXNlYXJjaF9yZWdleF9jZmxhZ3MgKCksDQo+ICsJCQkJCV8o IkludmFsaWQgcmVnZXhwIikpOw0KPiArfQ0KPiArDQo+ICAvKiBTZWUgc3ltdGFiLmguICAqLw0K PiANCj4gIHN0ZDo6dmVjdG9yPHN5bWJvbF9zZWFyY2g+DQo+ICBnbG9iYWxfc3ltYm9sX3NlYXJj aGVyOjpzZWFyY2ggKCkgY29uc3QNCj4gIHsNCj4gLSAgc3RkOjpvcHRpb25hbDxjb21waWxlZF9y ZWdleD4gcHJlZzsNCj4gLSAgc3RkOjpvcHRpb25hbDxjb21waWxlZF9yZWdleD4gdHJlZzsNCj4g LQ0KPiAtICBpZiAobV9zeW1ib2xfbmFtZV9yZWdleHAgIT0gTlVMTCkNCj4gLSAgICB7DQo+IC0g ICAgICBjb25zdCBjaGFyICpzeW1ib2xfbmFtZV9yZWdleHAgPSBtX3N5bWJvbF9uYW1lX3JlZ2V4 cDsNCj4gLSAgICAgIHN0ZDo6c3RyaW5nIHN5bWJvbF9uYW1lX3JlZ2V4cF9ob2xkZXI7DQo+IC0N Cj4gLSAgICAgIC8qIE1ha2Ugc3VyZSBzcGFjaW5nIGlzIHJpZ2h0IGZvciBDKysgb3BlcmF0b3Jz Lg0KPiAtCSBUaGlzIGlzIGp1c3QgYSBjb3VydGVzeSB0byBtYWtlIHRoZSBtYXRjaGluZyBsZXNz IHNlbnNpdGl2ZQ0KPiAtCSB0byBob3cgbWFueSBzcGFjZXMgdGhlIHVzZXIgbGVhdmVzIGJldHdl ZW4gJ29wZXJhdG9yJw0KPiAtCSBhbmQgPFRZUEVOQU1FPiBvciA8T1BFUkFUT1I+LiAgKi8NCj4g LSAgICAgIGNvbnN0IGNoYXIgKm9wX2VuZDsNCj4gLSAgICAgIGNvbnN0IGNoYXIgKm9wbmFtZSA9 IG9wZXJhdG9yX2NoYXJzIChzeW1ib2xfbmFtZV9yZWdleHAsICZvcF9lbmQpOw0KPiAtDQo+IC0g ICAgICBpZiAoKm9wbmFtZSkNCj4gLQl7DQo+IC0JICBpbnQgZml4ID0gLTE7CQkvKiAtMSBtZWFu cyBvazsgb3RoZXJ3aXNlIG51bWJlciBvZg0KPiAtCQkJCSAgICBzcGFjZXMgbmVlZGVkLiAgKi8N Cj4gLQ0KPiAtCSAgaWYgKGNfaXNhbHBoYSAoKm9wbmFtZSkgfHwgKm9wbmFtZSA9PSAnXycgfHwg Km9wbmFtZSA9PSAnJCcpDQo+IC0JICAgIHsNCj4gLQkgICAgICAvKiBUaGVyZSBzaG91bGQgMSBz cGFjZSBiZXR3ZWVuICdvcGVyYXRvcicgYW5kICdUWVBFTkFNRScuICAqLw0KPiAtCSAgICAgIGlm IChvcG5hbWVbLTFdICE9ICcgJyB8fCBvcG5hbWVbLTJdID09ICcgJykNCj4gLQkJZml4ID0gMTsN Cj4gLQkgICAgfQ0KPiAtCSAgZWxzZQ0KPiAtCSAgICB7DQo+IC0JICAgICAgLyogVGhlcmUgc2hv dWxkIDAgc3BhY2VzIGJldHdlZW4gJ29wZXJhdG9yJyBhbmQgJ09QRVJBVE9SJy4gICovDQo+IC0J ICAgICAgaWYgKG9wbmFtZVstMV0gPT0gJyAnKQ0KPiAtCQlmaXggPSAwOw0KPiAtCSAgICB9DQo+ IC0JICAvKiBJZiB3cm9uZyBudW1iZXIgb2Ygc3BhY2VzLCBmaXggaXQuICAqLw0KPiAtCSAgaWYg KGZpeCA+PSAwKQ0KPiAtCSAgICB7DQo+IC0JICAgICAgc3ltYm9sX25hbWVfcmVnZXhwX2hvbGRl cg0KPiAtCQk9IHN0cmluZ19wcmludGYgKCJvcGVyYXRvciUuKnMlcyIsIGZpeCwgIiAiLCBvcG5h bWUpOw0KPiAtCSAgICAgIHN5bWJvbF9uYW1lX3JlZ2V4cCA9IHN5bWJvbF9uYW1lX3JlZ2V4cF9o b2xkZXIuY19zdHIgKCk7DQo+IC0JICAgIH0NCj4gLQl9DQo+IC0NCj4gLSAgICAgIGludCBjZmxh Z3MgPSBSRUdfTk9TVUIgfCAoY2FzZV9zZW5zaXRpdml0eSA9PSBjYXNlX3NlbnNpdGl2ZV9vZmYN Cj4gLQkJCQk/IFJFR19JQ0FTRSA6IDApOw0KPiAtICAgICAgcHJlZy5lbXBsYWNlIChzeW1ib2xf bmFtZV9yZWdleHAsIGNmbGFncywNCj4gLQkJICAgIF8oIkludmFsaWQgcmVnZXhwIikpOw0KPiAt ICAgIH0NCj4gLQ0KPiAtICBpZiAobV9zeW1ib2xfdHlwZV9yZWdleHAgIT0gTlVMTCkNCj4gLSAg ICB7DQo+IC0gICAgICBpbnQgY2ZsYWdzID0gUkVHX05PU1VCIHwgKGNhc2Vfc2Vuc2l0aXZpdHkg PT0gY2FzZV9zZW5zaXRpdmVfb2ZmDQo+IC0JCQkJPyBSRUdfSUNBU0UgOiAwKTsNCj4gLSAgICAg IHRyZWcuZW1wbGFjZSAobV9zeW1ib2xfdHlwZV9yZWdleHAsIGNmbGFncywNCj4gLQkJICAgIF8o IkludmFsaWQgcmVnZXhwIikpOw0KPiAtICAgIH0NCj4gKyAgc3RkOjpvcHRpb25hbDxjb21waWxl ZF9yZWdleD4gbmFtZV9yZWdleCA9IGNvbXBpbGVfbmFtZV9yZWdleCAoKTsNCj4gKyAgc3RkOjpv cHRpb25hbDxjb21waWxlZF9yZWdleD4gdHlwZV9yZWdleCA9IGNvbXBpbGVfdHlwZV9yZWdleCAo KTsNCj4gDQo+ICAgIGJvb2wgZm91bmRfZnVuY19tc3ltYm9sX3dpdGhvdXRfZGVidWdfaW5mbyA9 IGZhbHNlOw0KPiAgICBzdGQ6OnNldDxzeW1ib2xfc2VhcmNoPiByZXN1bHRfc2V0Ow0KPiBAQCAt NTAwNCwxMyArNTAyNSwxNSBAQCBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjpzZWFyY2ggKCkgY29u c3QNCj4gICAgICB7DQo+ICAgICAgICAvKiBFeHBhbmQgc3ltdGFicyB3aXRoaW4gb2JqZmlsZSB0 aGF0IHBvc3NpYmx5IGNvbnRhaW4gbWF0Y2hpbmcNCj4gIAkgc3ltYm9scy4gICovDQo+IC0gICAg ICBmb3VuZF9mdW5jX21zeW1ib2xfd2l0aG91dF9kZWJ1Z19pbmZvIHw9IGV4cGFuZF9zeW10YWJz ICgmb2JqZmlsZSwNCj4gcHJlZyk7DQo+ICsgICAgICBmb3VuZF9mdW5jX21zeW1ib2xfd2l0aG91 dF9kZWJ1Z19pbmZvDQo+ICsJfD0gZXhwYW5kX3N5bXRhYnMgKCZvYmpmaWxlLCBuYW1lX3JlZ2V4 KTsNCj4gDQo+ICAgICAgICAvKiBGaW5kIG1hdGNoaW5nIHN5bWJvbHMgd2l0aGluIE9CSkZJTEUg YW5kIGFkZCB0aGVtIGluIHRvIHRoZQ0KPiAgCSBSRVNVTFRfU0VUIHNldC4gIFVzZSBhIHNldCBo ZXJlIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBkZXRlY3QNCj4gIAkgZHVwbGljYXRlcyBhcyB3ZSBn bywgYW5kIGNhbiB0aGVyZWZvcmUgdHJhY2sgaG93IG1hbnkgdW5pcXVlDQo+ICAJIG1hdGNoZXMg d2UgaGF2ZSBmb3VuZCBzbyBmYXIuICAqLw0KPiAtICAgICAgaWYgKCFhZGRfbWF0Y2hpbmdfc3lt Ym9scyAoJm9iamZpbGUsIHByZWcsIHRyZWcsICZyZXN1bHRfc2V0KSkNCj4gKyAgICAgIGlmICgh YWRkX21hdGNoaW5nX3N5bWJvbHMgKCZvYmpmaWxlLCBuYW1lX3JlZ2V4LCB0eXBlX3JlZ2V4LA0K PiArCQkJCSAmcmVzdWx0X3NldCkpDQo+ICAJYnJlYWs7DQo+ICAgICAgfQ0KPiANCj4gQEAgLTUw MjUsMTIgKzUwNDgsMTIgQEAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6c2VhcmNoICgpIGNvbnN0 DQo+ICAgIGlmICgoZm91bmRfZnVuY19tc3ltYm9sX3dpdGhvdXRfZGVidWdfaW5mbw0KPiAgICAg ICAgIHx8IChtX2ZpbGVuYW1lcy5lbXB0eSAoKSAmJiBtX2tpbmQgPT0gc3ltYm9sX3NlYXJjaF9r aW5kOjpWQVJJQUJMRSkpDQo+ICAgICAgICAmJiAhbV9leGNsdWRlX21pbnN5bXMNCj4gLSAgICAg ICYmICF0cmVnLmhhc192YWx1ZSAoKSkNCj4gKyAgICAgICYmICF0eXBlX3JlZ2V4Lmhhc192YWx1 ZSAoKSkNCj4gICAgICB7DQo+ICAgICAgICBnZGJfYXNzZXJ0IChtX2tpbmQgPT0gc3ltYm9sX3Nl YXJjaF9raW5kOjpWQVJJQUJMRQ0KPiAgCQkgIHx8IG1fa2luZCA9PSBzeW1ib2xfc2VhcmNoX2tp bmQ6OkZVTkNUSU9OKTsNCj4gICAgICAgIGZvciAob2JqZmlsZSAmb2JqZmlsZSA6IGN1cnJlbnRf cHJvZ3JhbV9zcGFjZS0+b2JqZmlsZXMgKCkpDQo+IC0JaWYgKCFhZGRfbWF0Y2hpbmdfbXN5bWJv bHMgKCZvYmpmaWxlLCBwcmVnLCAmcmVzdWx0KSkNCj4gKwlpZiAoIWFkZF9tYXRjaGluZ19tc3lt Ym9scyAoJm9iamZpbGUsIG5hbWVfcmVnZXgsICZyZXN1bHQpKQ0KPiAgCSAgYnJlYWs7DQo+ICAg ICAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIuaA0KPiBp bmRleCBhMzU0NDlmYmVlZGEuLjE2NzViMTI2YjE5ZCAxMDA2NDQNCj4gLS0tIGEvZ2RiL3N5bXRh Yi5oDQo+ICsrKyBiL2dkYi9zeW10YWIuaA0KPiBAQCAtMjY2OSwzMSArMjY2OSwzOCBAQCBjbGFz cyBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyDQo+ICAgICAgIG9mIFNJWkVfTUFYLCB0aGVyZSBpcyBu byAidW5saW1pdGVkIi4gICovDQo+ICAgIHNpemVfdCBtX21heF9zZWFyY2hfcmVzdWx0cyA9IFNJ WkVfTUFYOw0KPiANCj4gLSAgLyogRXhwYW5kIHN5bXRhYnMgaW4gT0JKRklMRSB0aGF0IG1hdGNo IFBSRUcsIGFyZSBvZiB0eXBlIE1fS0lORC4gIFJldHVybg0KPiAtICAgICB0cnVlIGlmIGFueSBt c3ltYm9scyB3ZXJlIHNlZW4gdGhhdCB3ZSBzaG91bGQgbGF0ZXIgY29uc2lkZXIgYWRkaW5nIHRv DQo+IC0gICAgIHRoZSByZXN1bHRzIGxpc3QuICAqLw0KPiAtICBib29sIGV4cGFuZF9zeW10YWJz IChvYmpmaWxlICpvYmpmaWxlLA0KPiAtCQkgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxjb21w aWxlZF9yZWdleD4gJnByZWcpIGNvbnN0Ow0KPiArICAvKiBDb21waWxlIE1fU1lNQk9MX05BTUVf UkVHRVhQLCBpZiBzZXQuICAqLw0KDQpUaGUgImNvbXBpbGVfbmFtZV9yZWdleCIgbWV0aG9kIGFs c28gY29ycmVjdHMgc3BhY2VzIGZvciB0aGUgcGFyc2VyLg0KSSB0aGluayB3ZSBjb3VsZCBtZW50 aW9uIHRoaXMgaW4gdGhlIGNvbW1lbnQuDQoNCj4gKyAgc3RkOjpvcHRpb25hbDxjb21waWxlZF9y ZWdleD4gY29tcGlsZV9uYW1lX3JlZ2V4ICgpIGNvbnN0Ow0KPiANCj4gLSAgLyogQWRkIHN5bWJv bHMgZnJvbSBzeW10YWJzIGluIE9CSkZJTEUgdGhhdCBtYXRjaCBQUkVHLCBhbmQgVFJFRywgYW5k DQo+IGFyZQ0KPiAtICAgICBvZiB0eXBlIE1fS0lORCwgdG8gdGhlIHJlc3VsdHMgc2V0IFJFU1VM VFNfU0VULiAgUmV0dXJuIGZhbHNlIGlmIHdlDQo+IC0gICAgIHN0b3AgYWRkaW5nIHJlc3VsdHMg ZWFybHkgZHVlIHRvIGhhdmluZyBhbHJlYWR5IGZvdW5kIHRvbyBtYW55IHJlc3VsdHMNCj4gLSAg ICAgKGJhc2VkIG9uIE1fTUFYX1NFQVJDSF9SRVNVTFRTIGxpbWl0KSwgb3RoZXJ3aXNlIHJldHVy biB0cnVlLg0KPiArICAvKiBDb21waWxlIE1fU1lNQk9MX1RZUEVfUkVHRVhQLCBpZiBzZXQuICAq Lw0KPiArICBzdGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiBjb21waWxlX3R5cGVfcmVnZXgg KCkgY29uc3Q7DQo+ICsNCj4gKyAgLyogRXhwYW5kIHN5bXRhYnMgaW4gT0JKRklMRSB0aGF0IG1h dGNoIE5BTUVfUkVHRVgsIGFyZSBvZiB0eXBlDQo+IE1fS0lORC4NCj4gKyAgICAgUmV0dXJuIHRy dWUgaWYgYW55IG1zeW1ib2xzIHdlcmUgc2VlbiB0aGF0IHdlIHNob3VsZCBsYXRlciBjb25zaWRl cg0KPiArICAgICBhZGRpbmcgdG8gdGhlIHJlc3VsdHMgbGlzdC4gICovDQo+ICsgIGJvb2wgZXhw YW5kX3N5bXRhYnMgKG9iamZpbGUgKm9iamZpbGUsDQo+ICsJCSAgICAgICBjb25zdCBzdGQ6Om9w dGlvbmFsPGNvbXBpbGVkX3JlZ2V4PiAmbmFtZV9yZWdleCkgY29uc3Q7DQo+ICsNCj4gKyAgLyog QWRkIHN5bWJvbHMgZnJvbSBzeW10YWJzIGluIE9CSkZJTEUgdGhhdCBtYXRjaCBOQU1FX1JFR0VY LCBhbmQNCj4gKyAgICAgVFlQRV9SRUdFWCwgYW5kIGFyZSBvZiB0eXBlIE1fS0lORCwgdG8gdGhl IHJlc3VsdHMgc2V0IFJFU1VMVFNfU0VULg0KPiArICAgICBSZXR1cm4gZmFsc2UgaWYgd2Ugc3Rv cCBhZGRpbmcgcmVzdWx0cyBlYXJseSBkdWUgdG8gaGF2aW5nIGFscmVhZHkNCj4gKyAgICAgZm91 bmQgdG9vIG1hbnkgcmVzdWx0cyAoYmFzZWQgb24gTV9NQVhfU0VBUkNIX1JFU1VMVFMgbGltaXQp LA0KPiArICAgICBvdGhlcndpc2UgcmV0dXJuIHRydWUuDQo+ICAgICAgIFJldHVybmluZyB0cnVl IGRvZXMgbm90IGluZGljYXRlIHRoYXQgYW55IHJlc3VsdHMgd2VyZSBhZGRlZCwganVzdA0KPiAg ICAgICB0aGF0IHdlIGRpZG4ndCBfbm90XyBhZGQgYSByZXN1bHQgZHVlIHRvIHJlYWNoaW5nIE1B WF9TRUFSQ0hfUkVTVUxUUy4NCj4gKi8NCj4gICAgYm9vbCBhZGRfbWF0Y2hpbmdfc3ltYm9scyAo b2JqZmlsZSAqb2JqZmlsZSwNCj4gLQkJCSAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxjb21waWxl ZF9yZWdleD4gJnByZWcsDQo+IC0JCQkgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29tcGlsZWRf cmVnZXg+ICZ0cmVnLA0KPiArCQkJICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbXBpbGVkX3Jl Z2V4PiAmbmFtZV9yZWdleCwNCj4gKwkJCSAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxjb21waWxl ZF9yZWdleD4gJnR5cGVfcmVnZXgsDQo+ICAJCQkgICAgIHN0ZDo6c2V0PHN5bWJvbF9zZWFyY2g+ ICpyZXN1bHRfc2V0KSBjb25zdDsNCj4gDQo+IC0gIC8qIEFkZCBtc3ltYm9scyBmcm9tIE9CSkZJ TEUgdGhhdCBtYXRjaCBQUkVHIGFuZCBNX0tJTkQsIHRvIHRoZSByZXN1bHRzDQo+IC0gICAgIHZl Y3RvciBSRVNVTFRTLiAgUmV0dXJuIGZhbHNlIGlmIHdlIHN0b3AgYWRkaW5nIHJlc3VsdHMgZWFy bHkgZHVlIHRvDQo+IC0gICAgIGhhdmluZyBhbHJlYWR5IGZvdW5kIHRvbyBtYW55IHJlc3VsdHMg KGJhc2VkIG9uIG1heCBzZWFyY2ggcmVzdWx0cw0KPiAtICAgICBsaW1pdCBNX01BWF9TRUFSQ0hf UkVTVUxUUyksIG90aGVyd2lzZSByZXR1cm4gdHJ1ZS4gIFJldHVybmluZyB0cnVlDQo+IC0gICAg IGRvZXMgbm90IGluZGljYXRlIHRoYXQgYW55IHJlc3VsdHMgd2VyZSBhZGRlZCwganVzdCB0aGF0 IHdlIGRpZG4ndA0KPiAtICAgICBfbm90XyBhZGQgYSByZXN1bHQgZHVlIHRvIHJlYWNoaW5nIE1B WF9TRUFSQ0hfUkVTVUxUUy4gICovDQo+ICsgIC8qIEFkZCBtc3ltYm9scyBmcm9tIE9CSkZJTEUg dGhhdCBtYXRjaCBOQU1FX1JFR0VYIGFuZCBNX0tJTkQsIHRvDQo+IHRoZQ0KPiArICAgICByZXN1 bHRzIHZlY3RvciBSRVNVTFRTLiAgUmV0dXJuIGZhbHNlIGlmIHdlIHN0b3AgYWRkaW5nIHJlc3Vs dHMgZWFybHkNCj4gKyAgICAgZHVlIHRvIGhhdmluZyBhbHJlYWR5IGZvdW5kIHRvbyBtYW55IHJl c3VsdHMgKGJhc2VkIG9uIG1heCBzZWFyY2gNCj4gKyAgICAgcmVzdWx0cyBsaW1pdCBNX01BWF9T RUFSQ0hfUkVTVUxUUyksIG90aGVyd2lzZSByZXR1cm4gdHJ1ZS4gIFJldHVybmluZw0KPiArICAg ICB0cnVlIGRvZXMgbm90IGluZGljYXRlIHRoYXQgYW55IHJlc3VsdHMgd2VyZSBhZGRlZCwganVz dCB0aGF0IHdlDQo+ICsgICAgIGRpZG4ndCBfbm90XyBhZGQgYSByZXN1bHQgZHVlIHRvIHJlYWNo aW5nIE1BWF9TRUFSQ0hfUkVTVUxUUy4gICovDQo+ICAgIGJvb2wgYWRkX21hdGNoaW5nX21zeW1i b2xzIChvYmpmaWxlICpvYmpmaWxlLA0KPiAtCQkJICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxj b21waWxlZF9yZWdleD4gJnByZWcsDQo+ICsJCQkgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNv bXBpbGVkX3JlZ2V4Pg0KPiAmbmFtZV9yZWdleCwNCj4gIAkJCSAgICAgIHN0ZDo6dmVjdG9yPHN5 bWJvbF9zZWFyY2g+ICpyZXN1bHRzKSBjb25zdDsNCj4gDQo+ICAgIC8qIFJldHVybiB0cnVlIGlm IE1TWU1CT0wgaXMgb2YgdHlwZSBLSU5ELiAgKi8NCj4gLS0NCj4gMi41NS4wDQoNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkludGVsIERldXRzY2hsYW5kIEdtYkgg DQoNClJlZ2lzdGVyZWQgQWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtp cmNoZW4sIEdlcm1hbnkgDQoNClRlbDogKzQ5ICg4OSkgOTkxNDMtMCANCg0Kd3d3LmludGVsLmRl IA0KDQpNYW5hZ2luZyBEaXJlY3RvcnM6IENhbmRpY2UgTW9vcmUsIEplZmZyZXkgU2NobmVpZGVy bWFuLCBSYW1hY2hhbmRyYW4gU2l0YXJhbWFuDQoNCkNoYWlycGVyc29uIG9mIHRoZSBTdXBlcnZp c29yeSBCb2FyZDogU29uamEgUGllcmVyDQoNClJlZ2lzdGVyZWQgU2VhdDogTXVuaWNoIENvbW1l cmNpYWwgUmVnaXN0ZXIgQjogQW10c2dlcmljaHQgTXVuaWNoIEhSQiAxODY5MjgNCg0KVGhpcyBl LW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBtYXkgY29udGFpbiBjb25maWRlbnRpYWwgbWF0ZXJp YWwgZm9yDQp0aGUgc29sZSB1c2Ugb2YgdGhlIGludGVuZGVkIHJlY2lwaWVudChzKS4gQW55IHJl dmlldyBvciBkaXN0cmlidXRpb24NCmJ5IG90aGVycyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJ ZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQNCnJlY2lwaWVudCwgcGxlYXNlIGNvbnRhY3QgdGhl IHNlbmRlciBhbmQgZGVsZXRlIGFsbCBjb3BpZXMuCg==