From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id KGckAZs9fGpuNyAAWB0awg (envelope-from ) for ; Wed, 12 Aug 2026 05:32:11 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CpjcxEKo; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id E59F81E166; Wed, 12 Aug 2026 05:32:10 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id D73941E033 for ; Wed, 12 Aug 2026 05:32:06 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 91A044B9700C for ; Wed, 12 Aug 2026 09:31:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 91A044B9700C 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=CpjcxEKo Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by sourceware.org (Postfix) with ESMTPS id E5F764BA9005 for ; Wed, 12 Aug 2026 09:31:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E5F764BA9005 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 E5F764BA9005 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1786527080; cv=fail; b=Skho8l5mEU4KiFN6FkPxLNG6V6uLpUILNPJdQ4QneQf0+c37Fa7Gj7+Zh4w9VbwDipyQ4f3IOSaF20Qrzcpt3RE8lqgMRLxUqA9+kxEP2Oa2Lnq+2fpN+margUQR2utD+NiCBygtzbv6Uo240HvQZzCtzrbbNDePq1g91A7E8Dg= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1786527080; c=relaxed/simple; bh=BNiDjMjeQpDQvSUPRa5QtlaCkOUJoaelJEvqG4ETGV4=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=m/Rv7Do8Wv8DCsU/NILwDlvOIVhjQX2KxPkIyThDieAacQWO49UH9o8NbdM2JepebHejc4pGYOg9edZTgy4awZKwUFjjEwH3x575ern+z5laSSf6vVNZjdDFqStbLMoSCfCVIsz8IMyYadNODRzYwlF0cAH8P8MhBywfXWHF8kU= 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=CpjcxEKo DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E5F764BA9005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1786527079; x=1818063079; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=BNiDjMjeQpDQvSUPRa5QtlaCkOUJoaelJEvqG4ETGV4=; b=CpjcxEKoYjKFGcJH/y+XCGB8mjPvHRVqugnEKJrFDgPRTA+VvfRdiHsP ZdWArkja2CmD6fr8yERHXxq0eKOk6q+/1LbnsZceMdJAaCkFKMYfZBlqu d9QdPP4pMA+djIQpsS0mnsLUf3DRPHWrWVWv0dvh7UtZhkxuZ8Xs7dkAb Z8Cv+BXyGjoKgHA+r3TOrYgpkWRfCUNEEv2NcyiQbiyZ3AqW31Z+H6yXn tYZY06zHhA1LmKzwq3h/zs6PPH2BhYkgbNVzCmh2x69QpJovTWAYJfVsw rdg+feAuX7Qwuc6ZHgOQbmc9b+GaJxapYeRki2reghl5Lgnk/YHhejx8r A==; X-CSE-ConnectionGUID: RWdl+a5XRGatzohpl13vcQ== X-CSE-MsgGUID: V6EtsqHdRYu7M+b1BZoN6A== X-IronPort-AV: E=McAfee;i="6800,10657,11872"; a="97738374" X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="97738374" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 02:31:17 -0700 X-CSE-ConnectionGUID: C3SUDb5iRRabjFbyKNhFJQ== X-CSE-MsgGUID: SQ2fwzQwTNOQemGCLfukaw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,219,1779174000"; d="scan'208";a="259343531" Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91]) by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2026 02:31:17 -0700 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Wed, 12 Aug 2026 02:31:16 -0700 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45 via Frontend Transport; Wed, 12 Aug 2026 02:31:16 -0700 Received: from CH5PR02CU005.outbound.protection.outlook.com (40.107.200.18) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Wed, 12 Aug 2026 02:31:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nxwAXcgzcehTju6KKWmjiYesHTIt76BzQf0ecllDXyxb/XeFKJ4mnfJ6W69y9KMsPPYC68ApI1kMSf2BYvGWTpmM+5YdB6IIHlteCYt6uoTlyX7z4G2BO07uRh8B+aBMIkPRsPd7CYfKome0i0ib3gNxPU7QJAA0X5dANP7lbiaMzf0rU5Q9jsdExlo2bpyZfRbRsKO7O4mcerKc67Tb6HsSSxsRZEm0EYSGKZzpSaMfin7eLiIqWOubmDTtDeSJyLTF9hNdOoln4wUNOGdsVYYZ+yUyKBvYr1tNr0viAeYQK1/IiL8PNtLQ+CNw9OVLYCAk0nVGp3eD5tpvaXnWEQ== 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=Ssg43hz40muuhZ6RSDWlS2uNs1/zrQ3QhV52cGnF50s=; b=gAz/+CXSY8vbr9tyxAafhOaE5WpxvfsW7cc/LQWFqZ2RSdg0f0K7mnILR+4/6Rz6IHrU56grdBfS7wVl8+dZpt9W8wG5BwD9D10eGQ4IiutDPVrc2NdGp2ABxOO7Q9cZpC3KMd7+cUH94l07oiSFGN4PfASKPYIJEYWD5CDTPJg0yRmmrZ8tG3sUkV9YIVSZDukXj13Ll7H25RLbSMHUn6qJSQaTut+5YwtJ45rMEZ0doCvNpacikGAQUPbQK+hcPITWrj6zxNX5SYzNl9bO4e42sc0FkybNsJ9mYrM89qPBgb8TwLD6IMHWXf29BT1BygcAc3ow5OmuLNcRizt6Dw== 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 SA1PR11MB8373.namprd11.prod.outlook.com (2603:10b6:806:38d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.13; Wed, 12 Aug 2026 09:31:09 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%4]) with mapi id 15.21.0315.008; Wed, 12 Aug 2026 09:31:09 +0000 From: "Joos, Christina" To: "Gerlicher, Klaus" , "gdb-patches@sourceware.org" Subject: RE: [PATCH v3 1/1] gdb/linespec: relax block filter to preserve distinct code paths Thread-Topic: [PATCH v3 1/1] gdb/linespec: relax block filter to preserve distinct code paths Thread-Index: AQHdGb214WBJFLYxjkuKUDb98Z2JbbaZHb8Q Date: Wed, 12 Aug 2026 09:31:08 +0000 Message-ID: References: <20260722093654.30044-1-klaus.gerlicher@intel.com> <20260722093654.30044-2-klaus.gerlicher@intel.com> In-Reply-To: <20260722093654.30044-2-klaus.gerlicher@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_|SA1PR11MB8373:EE_ x-ms-office365-filtering-correlation-id: 4105ac01-dc44-458f-319f-08def85470f8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|23010399003|376014|1800799024|366016|13003099007|38070700021|6133799003|56012099006|11063799006|5023799004|10067099003|4143699003|3023799007|22082099003|18002099003; x-microsoft-antispam-message-info: NBXiE88uOdnRWkVN4upczbuUANBqqZJbLMFz6Y7Wb/RktmedDaXOCtrvozGVEjfP5Jk6CHqXztitzOcAt8O7vEO6vDcx7y9inNKtjS4xNJ+BIbItjSF+uiB+yRGVXZlRB1YXP1noXWlHPGds5nOtGXSNyIusOCyYNCtCYBM68/5kpPTqMwy9IZ+j8WXgwaAiHiBUZ5E3TG0tL+rrnqBXGw3kUkJDrT7SElhYs7dPnV2ArmTsM2HVnv3uWpN+GfqfinwAJJLRpNq9fjs5lOmKb4fJ1xrZ9tViD4CJQYXZVZoiM1rc/mCgGKrGZZEqSFiWKhDXWYOXLXNqauwpyqXtPQ2WCBDHvF78Zh93k0fvSZYtHyvP9ZB5M+/KEDUluVmHE/uXIkvBn9VgymKcqOZQOZ5aw4EDgbgzihiruNRTFKMSInV6W8zXro+pYXj+XM+xRbd4r+xSJLMGFJKf6dyOu+HA2QAogribwTIkLV/VGf6Z3HOZVDEJJCuptd31cA6/gxgKJGHbOLN59zbmyEIACMa6KLbo5bYosKcXHfXIAcYP+Md97Qtty3z7pWkRfTUKqAasEKPKn2s2MwO2f0vrKnYNKwfpmIpepdB6N/w/bByfq8eEFHMU/ukYiTtzKcDB13Om15cHvbSSDBZxarS1apAR299y4ag+D70KRK8r3TAUhfz8LtQZz7xERojVi8p5TxtyVsHxd2T9743nvB3FSzvqtrSm9KD+I8PtYHt8MxM= 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)(23010399003)(376014)(1800799024)(366016)(13003099007)(38070700021)(6133799003)(56012099006)(11063799006)(5023799004)(10067099003)(4143699003)(3023799007)(22082099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZDZsWFNVZytmUGx3YU1JT3cyaXRFS3RSVG8vUlFuRzhIaVlJd0NLRWZadU1Y?= =?utf-8?B?dWFiMTBxQWdSMHc3eHBUZmdsL3JCdm1UdXRuS1BWa2txRzRRaW1QWjZ3WXIy?= =?utf-8?B?cndpWHZZZ0FzU0pkSXRwd3VubG1wb1djSFUxUXlHaFJZSTZ1VVdQWDRmWHFa?= =?utf-8?B?NUFDMGFFWGpBTTkvY1FjK3FsYmJPK3hxc1AzTFkvM3lMdlVrRHJBNStiTzI0?= =?utf-8?B?dXM2a005bUx5dWhoU0JmcURTVnA1TVYyNUlkUVkwb1BzZk9LcTVXNmMvYmli?= =?utf-8?B?Qm4zZmUzUDFVdXRIRkZsTStvYzgvUFhYSnhRZTlSekJsRTllN3pCMjBOSFAy?= =?utf-8?B?UjI2RUI5aDlYM2ovTitKcEZNYm05dGQvK05BWU1pOTRPMUlHQVdaSVNxa1lS?= =?utf-8?B?b3hpMStCQmR4dzk0SjZLUzROT3JKZmI2WUx5M0VGc2thaE1ka2VPVjF3U1Q0?= =?utf-8?B?WXBsWWp4QlQ5NFFLNUVkSCtBQkROQnQzWTlSSDQrT293RDdBcDFjYzYrY05q?= =?utf-8?B?aVc5bU1ua213SitidFF4bHZlcGNQNEk2a0Z0V3B4WC96d2t1d0VkOVpISDRh?= =?utf-8?B?REtFSXVVRStLbERNNTBVSHd3VCtGamRncmNFRWdNb291L0JUUjNBZW5VMXNN?= =?utf-8?B?YkFGSVhDWENJVnVsSUNJR1FTQ3c0WTRieHM1dktmS2dGK2h1eVI0clVJbHEw?= =?utf-8?B?ZEZkdTA1WTU3K3oxNWVFRDdKaVdMZVR6STVrSlJjZHhUSzc1aGpiMlFYS0I5?= =?utf-8?B?RW5xa3Rab01acStYU2FIaVZGR2dKWGplWVRKdDVkWmFxR2VRWXR1ZDNNVnhu?= =?utf-8?B?a0tKNUs1QUlrZnhqcEl1VGNDcTBmRmZHWUhxZEdlbng1eW9ZTFplV0llSFc3?= =?utf-8?B?cWJMYXJkcTRkSXNpZnhDaHZ2Q09pZUZlbzIwdmd5c0twc2V0dCtBbW8wY1hE?= =?utf-8?B?R2xiaitSQ1YyYUtJZGFHLzBjVHp3S3JsbHNwa3IrdWdyT2lkMHZLS2Q2YTBK?= =?utf-8?B?N0hEUWo4RGo4cm5LVWxQUm1lUm5FYmNnb2g2QlhBdDV3NFJwTis4Nm10dGdn?= =?utf-8?B?alozdGo0YlVMWGtVRTJpQXBxUC9IWDJGYXJxSWRjMnZkS2FUT0VicFhRZElv?= =?utf-8?B?NXdhS0F6eGtPUXNMY1BiOFJkYmtwMjlRU1d4YjJnVkcwYzdma0pWVDNLN29x?= =?utf-8?B?UFk2cWt4d2M0ODNRUmN6SHJBS3RBTzdSZFdvQ3NMZzlLamdZUmsrek80M3E1?= =?utf-8?B?cTJXVFU5NzFzQXVpQ084Y2VWcEt0ZkpFb0RoME1vV0grUXd6NVk1T0FNV0xn?= =?utf-8?B?N1k1aHNickEzenZ3andLSFVmL3REYm84c1JZV3lwczlaazVrZlJzWm1BWHEz?= =?utf-8?B?RUZnejFmZmtJcU0wWEV4aHM1YkYyMW5EQVRKSE40bzljUTUwbGJsVzNrQkdm?= =?utf-8?B?bkJZYU5PdjlPU3llZUkrM25PZnk5d1hhSURsK3JlaWpyVFZ5TG1ZdlVPM3pG?= =?utf-8?B?TWx0VkNBVkY2aHF3K3NETkNsQ1dhVlUzQjFudSs4SkQreXRUSkRtbStjYjFS?= =?utf-8?B?M3BtbDhSalZzbkE5VUoyV1BhbGRlekJhUmxVYnJmdGd6OFFhaHBIVXFmSTk5?= =?utf-8?B?MVBDWnJjZDJRazFhOGErV1ZPMVpieTRJbGVnYWZROWVRZWZMaEpOOHJNNFR1?= =?utf-8?B?dmRBUytaSjgvRG5BUGpGcWFTUUFDeXZtMGZMalJwM25HTElwNEl5aUxPM00w?= =?utf-8?B?QjBDemV5V1hkb3k2eHdRSWtEMFROdkN3U1l5NFRxb1R3VkJ6dGpIcDRWSWFP?= =?utf-8?B?elMzdEhKcVFtRWhoZTlwdFJsbzFNTXc3N1hzOHV0cWxReENVd2UyTXIxNWxW?= =?utf-8?B?QmR2YmZnQkJ3S0U5bndvdXRoYVY2d3FjYVR0L2pldDJIRTlpc3VsYUk4VkQ4?= =?utf-8?B?eDhXV0pXYVpLQi9tOE1VOVFSUGorc3RrV2kvWWV0Yjh3bXpwQTkrbHNDdnNp?= =?utf-8?B?dkI1cXkyRlFyUklSc3pUNmh5RHgxQldwdXZpd0RxdWplTkMvN3dlZnVETkVm?= =?utf-8?B?b2cvTTlwSFVKUXo4bGlBYU56NUg0ZTZjRTlFc1hJRVJtemVRL3NpOVF5LzBK?= =?utf-8?B?OGg2T01MRjUwVHB0bkNQWmFvZGloeHF6WWNMU1hTcm5vZzhrQk1SZmlBMUVy?= =?utf-8?B?aDRKUFl2cm9DZnVJRm5MNlhIK2lNTURES2hmaW4wb0NSRXpFejg3MUk5eDVl?= =?utf-8?B?T1FvUkk1OFlMZ201TW1xdHZidTdKVWFKTGlGbHBnY2NPT1V1NDNISFZZR1k3?= =?utf-8?B?NFpURmlzRjNmUjRpaURPQno1N1F4YThyLzFzZTNaMlgybnZmdklhUT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: sytz1UQkmGOcvhAqamn9/1m39ZOEGU/YHyN1wAhF92FBSVBwyUwqDn3WelSLNQvURDu3P3Q0fFhfgmYLurrLmH/0o9x9JJyRGuScKxv/+UdbRbI91nlHksWL0zJDG5th1/+0XMjn3b+NVDvrhy0G/ihPNA2unjmqrvUHEVBsNaKlzmvl1JdGyEUox2V2ySLyjSmFgHJ/A75kO5i4vb8N2X369XLrMsor16ya9myDtkrebDSaGI3sd5Wt7eDYASGd0Q+5rhRdD2mHFS7U15oq39D8Zhdz/rUVRZcHHTTN2KqCm7JcnkAOdnZwnP45SG2MsaDV6mpJ6nNypRNBfMEpeg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4105ac01-dc44-458f-319f-08def85470f8 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Aug 2026 09:31:08.5613 (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: PLh5YydODxEdxfOiKSq+WdQ8DOxTzhfWUuHq6Vn1//brDtv7DoHQxCpFt+YfyPIynu0jJTWbNl247DZlzYCcv3tqBQCfQFEUzVe1EN+66Ek= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB8373 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 SGkgS2xhdXMsIA0KDQpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaCBhbmQgc29ycnkgZm9yIG15IGxh dGUgZmVlZGJhY2sgb24gdGhpcy4NCg0KSSBtb3N0bHkgbG9va2VkIGF0IHRoZSBhbWQ2NCBiaXRz LCBidXQgYWxzbyBoYXZlIHNvbWUgY29tbWVudHMgZm9yDQp0aGUgdGVzdCBhbmQgb25lIGZvciB0 aGUgZ2VuZXJhbCBsaW5lc3BlYyBwYXJ0LiBQbGVhc2UgZmluZCB0aGVtIGJlbG93Lg0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdlcmxpY2hlciwgS2xhdXMgPGtsYXVz LmdlcmxpY2hlckBpbnRlbC5jb20+DQo+IFNlbnQ6IE1pdHR3b2NoLCAyMi4gSnVsaSAyMDI2IDEx OjM3DQo+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZzsgSm9vcywgQ2hyaXN0aW5hIDxj aHJpc3RpbmEuam9vc0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzFdIGdkYi9s aW5lc3BlYzogcmVsYXggYmxvY2sgZmlsdGVyIHRvIHByZXNlcnZlIGRpc3RpbmN0IGNvZGUNCj4g cGF0aHMNCj4gDQo+IEZyb206ICJHZXJsaWNoZXIsIEtsYXVzIiA8a2xhdXMuZ2VybGljaGVyQGlu dGVsLmNvbT4NCj4gDQo+IFRoZSBibG9jay1iYXNlZCBkdXBsaWNhdGUgZmlsdGVyIGluIGNyZWF0 ZV9zYWxzX2xpbmVfb2Zmc2V0IGtlZXBzIG9ubHkgdGhlIGZpcnN0DQo+IGlzX3N0bXQgbGluZSB0 YWJsZSBlbnRyeSBwZXIgYmxvY2suICBUaGlzIGhldXJpc3RpYyByZWR1Y2VzIG11bHRpcGxlIGZv ci1sb29wDQo+IGhlYWRlciBlbnRyaWVzIChpbml0L3Rlc3QvaW5jcmVtZW50IG9uIHNhbWUgbGlu ZSkgdG8gc2luZ2xlIGJyZWFrcG9pbnQNCj4gbG9jYXRpb25zLiAgSG93ZXZlciwgaXQgaXMgdG9v IGFnZ3Jlc3NpdmUgZm9yIHZlY3Rvcml6ZWQgbG9vcHMsIHdoZXJlIHRoZQ0KPiBjb21waWxlciBl bWl0cyBzZXBhcmF0ZSBjb2RlIHJlZ2lvbnMgZm9yIHRoZSB2ZWN0b3JpemVkIGJvZHkgYW5kIHNj YWxhcg0KPiByZW1haW5kZXIsIGJvdGggb24gdGhlIHNhbWUgc291cmNlIGxpbmUuDQo+IFRoZSBm aWx0ZXIgZGlzY2FyZHMgdGhlIHNjYWxhciByZW1haW5kZXIgZW50cnksIGNhdXNpbmcgYnJlYWtw b2ludHMgdG8gYmUgc2lsZW50bHkNCj4gbWlzc2VkIHdoZW4gb25seSB0aGUgc2NhbGFyIHBhdGgg ZXhlY3V0ZXMuDQo+IA0KPiBUaGUgb2xkIGhldXJpc3RpYyBjb2xsYXBzZXMgYWxsIHNhbWUtYmxv Y2sgU0FMcyBmb3IgYSBnaXZlbiBsaW5lIGRvd24gdG8gYSBzaW5nbGUNCj4gYnJlYWtwb2ludCBs b2NhdGlvbiwgd2hpbGUgdGhlIG5ldyBoZXVyaXN0aWMgcHJlc2VydmVzIGFkZGl0aW9uYWwgU0FM cyB3aGVuDQo+IHRoZSBpbnN0cnVjdGlvbiByYW5nZSBiZXR3ZWVuIHRoZW0gZW5kcyB3aXRoIGFu IHVuY29uZGl0aW9uYWwganVtcCBvcg0KPiByZXR1cm4sIGluZGljYXRpbmcgdGhleSBsaWUgb24g Z2VudWluZWx5IGRpc3RpbmN0LCBub24tZmFsbC10aHJvdWdoIGNvZGUgcGF0aHMuDQo+IA0KPiBU aGUgZml4IGludHJvZHVjZXMgcmFuZ2VfaGFzX3VuY29uZGl0aW9uYWxfZmxvd19jb250cm9sLCB3 aGljaCBhbmFseXplcyB0aGUNCj4gaW5zdHJ1Y3Rpb24gc3RyZWFtIGZvciB0d28gY29uZGl0aW9u cyBpbmRpY2F0aW5nIGRpc3RpbmN0IGNvZGUgcGF0aHM6DQo+IA0KPiAxLiBVbmNvbmRpdGlvbmFs IGV4aXQ6IFRoZSBsYXN0IGluc3RydWN0aW9uIGJlZm9yZSB0aGUgc2Vjb25kIFBDIGlzIGFuDQo+ ICAgIHVuY29uZGl0aW9uYWwgam1wIG9yIHJldCAoZXhlY3V0aW9uIGNhbm5vdCBmYWxsIHRocm91 Z2gpLg0KPiANCj4gMi4gQmFja3dhcmQgYnJhbmNoOiBBbnkgaW5zdHJ1Y3Rpb24gaW4gdGhlIHJh bmdlIGlzIGEgcmVsYXRpdmUgYnJhbmNoDQo+ICAgIHRhcmdldGluZyBiZWZvcmUgdGhlIGZpcnN0 IFBDIChsb29wIGJhY2stZWRnZSBpbmRpY2F0aW5nIHNlcGFyYXRlDQo+ICAgIGxvb3AgYm9kaWVz KS4NCj4gDQo+IEEgbmV3IGdkYmFyY2ggbWV0aG9kIGdkYmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0 IGRlY29kZXMgcmVsYXRpdmUgYnJhbmNoDQo+IHRhcmdldHMuIEltcGxlbWVudGVkIGZvciBhbWQ2 NCBhbmQgYWFyY2g2NDsgb3RoZXIgYXJjaGl0ZWN0dXJlcyBkZWZhdWx0IHRvDQo+IGNvbnNlcnZh dGl2ZSBiZWhhdmlvciwgcHJlc2VydmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lg0KPiANCj4g RXhpc3RpbmcgZ2RiYXJjaF9pbnNuX2lzX2p1bXAgYW5kIGdkYmFyY2hfaW5zbl9pc19yZXQgYXJl IG5vdyBhbHNvDQo+IGltcGxlbWVudGVkIGZvciBhYXJjaDY0LCBlbmFibGluZyB0aGUgaGV1cmlz dGljIG9uIHRoYXQgcGxhdGZvcm0gdG9vLg0KPiBQcmVkaWNhdGUgZnVuY3Rpb25zIGFyZSBhZGRl ZCB0byBhbGxvdyBmb3IgY2hvc2luZyB2aWFiaWxpdHkgb2YgdGhpcyBleHRlbmRlZA0KPiBoZXVy aXN0aWMuICBJbXBsZW1lbnRlZCBvbiB4ODZfNjQgYW5kIGFhcmNoNjQuDQo+IFRlc3RpbmcgY292 ZXJzOg0KPiAtIGZvcl9sb29wX2VtcHR5X2JvZHkgKC1PMCk6IDEgbG9jYXRpb24NCj4gLSBmb3Jf bG9vcF9sYXJnZV9ib2R5ICgtTzApOiAxIGxvY2F0aW9uDQo+IC0gZm9yX2xvb3BfdmVjdG9yaXpl ZCAoLU8yKTogPj0gMiBsb2NhdGlvbnMgd2l0aCBydW50aW1lIHZlcmlmaWNhdGlvbg0KPiAtIG5l c3RlZF92ZWN0b3JpemVkX2xvb3BzICgtTzIpOiA+PSAyIGxvY2F0aW9ucw0KPiAtIGxvb3Bfd2l0 aF9lYXJseV9icmVhayAoLU8yKTogPj0gMiBvciAxIGxvY2F0aW9uDQo+IC0gaWZlbHNlX3NlcGFy YXRlX2xpbmVzICgtTzApOiAyIGxvY2F0aW9ucyBvbiB4ODZfNjQvYWFyY2g2NCwgdW5zdXBwb3J0 ZWQNCj4gICBlbHNld2hlcmUNCj4gLSBzZXQvc2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1m aWx0ZXIgcmVwb3J0cyBvbi9vZmYgYW5kDQo+ICAgYXJjaGl0ZWN0dXJlIHN1cHBvcnQgY29ycmVj dGx5DQo+IA0KPiBUZXN0ZWQgd2l0aCBHQ0MgMTEgYW5kIElDWCAyMDI1LjIgb24geDg2XzY0LCBh bmQgb24gYWFyY2g2NCAocmFzcGk1KS4NCj4gLS0tDQo+ICBnZGIvTkVXUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKw0KPiAgZ2RiL2FhcmNoNjQtdGRlcC5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysrKw0KPiAgZ2RiL2FtZDY0LXRkZXAu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysNCj4gIGdkYi9hcmNoLXV0 aWxzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArDQo+ICBnZGIvYXJjaC11 dGlscy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZ2RiL2FyY2gv YWFyY2g2NC1pbnNuLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsrDQo+ICBnZGIvYXJj aC9hYXJjaDY0LWluc24uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiAgZ2RiL2dk YmFyY2gtZ2VuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU5ICsrKy0NCj4gIGdk Yi9nZGJhcmNoLWdlbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArDQo+ICBn ZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5ICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysNCj4g IGdkYi9saW5lc3BlYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0OCArKysr KysrKy0NCj4gIC4uLi9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMgICAgICAgICB8 IDEyNiArKysrKysrKw0KPiAgLi4uL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuZXhw ICAgICAgIHwgMjkxICsrKysrKysrKysrKysrKysrKw0KPiAgMTMgZmlsZXMgY2hhbmdlZCwgODQ4 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gZ2Ri L3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMu ZXhwDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUw0KPiBpbmRleCA4ZjQw Y2E1Y2IxMS4uYjU4N2FjODc3NjMgMTAwNjQ0DQo+IC0tLSBhL2dkYi9ORVdTDQo+ICsrKyBiL2dk Yi9ORVdTDQo+IEBAIC02OCw2ICs2OCwxNyBAQA0KPiAgICBUaGlzIGZpeGVzIGFuIGlzc3VlIHdo ZXJlIEdEQiBjb3VsZCBmYWlsIHRvIGZpbmQgYSB0eXBlIHdoZW4gcmVseWluZw0KPiAgICBvbiB0 aGUgaW5kZXguICBBbnkgZXhpc3RpbmcgaW5kZXhlcyBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuDQo+ IA0KPiArKiBCcmVha3BvaW50IGxvY2F0aW9uIHJlc29sdXRpb24gaGFzIGJlZW4gaW1wcm92ZWQg Zm9yIHZlY3Rvcml6ZWQgbG9vcHMuDQo+ICsgIFByZXZpb3VzbHksIHdoZW4gc2V0dGluZyBhIGJy ZWFrcG9pbnQgb24gYSBzb3VyY2UgbGluZSB3aXRoDQo+ICt2ZWN0b3JpemVkDQo+ICsgIGNvZGUg KGF0IC1PMiB3aXRoIC1mdHJlZS12ZWN0b3JpemUpLCBHREIncyBibG9jayBmaWx0ZXIgaGV1cmlz dGljDQo+ICt3b3VsZA0KPiArICBkaXNjYXJkIHRoZSBzY2FsYXIgcmVtYWluZGVyIGxvY2F0aW9u LCBjYXVzaW5nIGJyZWFrcG9pbnRzIHRvIGJlDQo+ICttaXNzZWQNCj4gKyAgd2hlbiBvbmx5IHRo ZSBzY2FsYXIgcGF0aCBleGVjdXRlZC4gR0RCIG5vdyBjb3JyZWN0bHkgcHJlc2VydmVzDQo+ICtt dWx0aXBsZQ0KPiArICBsb2NhdGlvbnMgZm9yIHZlY3Rvcml6ZWQgYW5kIHNjYWxhciBsb29wIHBh dGhzLCBpbXByb3ZpbmcNCj4gK2RlYnVnZ2FiaWxpdHkNCj4gKyAgb2Ygb3B0aW1pemVkIGNvZGUu ICBUaGlzIGlzIHN1cHBvcnRlZCBjdXJyZW50bHkgb24geDg2IGFuZCBhYXJjaDY0Lg0KPiArDQo+ ICsgIFVzZSAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvZmYiIHRvIGRpc2Fi bGUgdGhlIG5ldw0KPiArIGhldXJpc3RpYyBvbiBzdXBwb3J0ZWQgcGxhdGZvcm1zIGFuZCByZXZl cnQgdG8gdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGlmDQo+IG5lZWRlZC4NCj4gKw0KPiAgKiBTdXBw b3J0IGZvciBGbG9hdGluZyBQb2ludCBNb2RlIFJlZ2lzdGVyIChGUE1SKSBpbiBBQXJjaDY0Lg0K PiANCj4gICogV2hlbiBydW5uaW5nIG9uIHRoZSBXaW5kb3dzIFRlcm1pbmFsIGNvbnNvbGUsIEdE QiBub3cgc3VwcG9ydHMgZGlmZiAtLWdpdA0KPiBhL2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9h YXJjaDY0LXRkZXAuYyBpbmRleCBhODRkYTFmZDU5ZS4uNWI0NWVmYmY4YjkNCj4gMTAwNjQ0DQo+ IC0tLSBhL2dkYi9hYXJjaDY0LXRkZXAuYw0KPiArKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMNCj4g QEAgLTQ0MzMsNiArNDQzMyw5MiBAQCBhYXJjaDY0X2luaXRpYWxpemVfc21lX3BzZXVkb19uYW1l cyAoc3RydWN0DQo+IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gKy8q IFJldHVybiB0aGUgc3RhdGljYWxseS1rbm93biB0YXJnZXQgb2YgYSByZWxhdGl2ZSBicmFuY2gg aW5zdHJ1Y3Rpb24uDQo+ICsgICBIYW5kbGVzIEIgPGltbTI2PiwgQi5jb25kIDxpbW0xOT4sIENC Wi9DQk5aIDxpbW0xOT4sIFRCWi9UQk5aDQo+IDxpbW0xND4uDQo+ICsgICBSZXR1cm5zIHN0ZDo6 bnVsbG9wdCBmb3IgaW5kaXJlY3QgYnJhbmNoZXMgKEJSKSBvciB1bnJlYWRhYmxlDQo+ICttZW1v cnkuICAqLw0KPiArDQo+ICtzdGF0aWMgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+DQo+ICthYXJj aDY0X2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQURE UiBhZGRyKSB7DQo+ICsgIGdkYl9ieXRlIGJ1Zls0XTsNCj4gKw0KPiArICBpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5IChhZGRyLCBidWYsIDQpICE9IDApDQo+ICsgICAgcmV0dXJuIHN0ZDo6bnVsbG9w dDsNCj4gKw0KPiArICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9v cmRlcl9mb3JfY29kZSAoZ2RiYXJjaCk7DQo+ICsgdWludDMyX3QgaW5zbiA9IGV4dHJhY3RfdW5z aWduZWRfaW50ZWdlciAoYnVmLCA0LCBieXRlX29yZGVyKTsNCj4gKw0KPiArICBpbnQgaXNfYmw7 DQo+ICsgIGludDMyX3Qgb2Zmc2V0Ow0KPiArDQo+ICsgIC8qIEIgPGltbTI2PiAoYnV0IG5vdCBC TCwgd2hpY2ggaXMgYSBjYWxsKS4gICovICBpZiAoYWFyY2g2NF9kZWNvZGVfYg0KPiArIChhZGRy LCBpbnNuLCAmaXNfYmwsICZvZmZzZXQpICYmICFpc19ibCkNCj4gKyAgICByZXR1cm4gYWRkciAr IG9mZnNldDsNCj4gKw0KPiArICAvKiBCLmNvbmQgPGltbTE5Pi4gICovDQo+ICsgIHVuc2lnbmVk IGNvbmQ7DQo+ICsgIGlmIChhYXJjaDY0X2RlY29kZV9iY29uZCAoYWRkciwgaW5zbiwgJmNvbmQs ICZvZmZzZXQpKQ0KPiArICAgIHJldHVybiBhZGRyICsgb2Zmc2V0Ow0KPiArDQo+ICsgIC8qIENC Wi9DQk5aIDxpbW0xOT4uICAqLw0KPiArICBpbnQgaXM2NCwgaXNfY2JuejsNCj4gKyAgdW5zaWdu ZWQgcm47DQo+ICsgIGlmIChhYXJjaDY0X2RlY29kZV9jYiAoYWRkciwgaW5zbiwgJmlzNjQsICZp c19jYm56LCAmcm4sICZvZmZzZXQpKQ0KPiArICAgIHJldHVybiBhZGRyICsgb2Zmc2V0Ow0KPiAr DQo+ICsgIC8qIFRCWi9UQk5aIDxpbW0xND4uICAqLw0KPiArICBpbnQgaXNfdGJuejsNCj4gKyAg dW5zaWduZWQgYml0LCBydDsNCj4gKyAgaWYgKGFhcmNoNjRfZGVjb2RlX3RiIChhZGRyLCBpbnNu LCAmaXNfdGJueiwgJmJpdCwgJnJ0LCAmb2Zmc2V0KSkNCj4gKyAgICByZXR1cm4gYWRkciArIG9m ZnNldDsNCj4gKw0KPiArICByZXR1cm4gc3RkOjpudWxsb3B0Ow0KPiArfQ0KPiArDQo+ICsvKiBS ZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUiBpcyBhbiB1bmNvbmRpdGlvbmFs IGJyYW5jaC4NCj4gKyAgIEhhbmRsZXMgZGlyZWN0IEIgPGltbTI2PiBhbmQgaW5kaXJlY3QgQlIg PFhuPi4gICovDQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICthYXJjaDY0X2luc25faXNfanVtcCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKSB7DQo+ICsgIGdkYl9ieXRl IGJ1Zls0XTsNCj4gKw0KPiArICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyLCBidWYsIDQp ICE9IDApDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIGVudW0gYmZkX2VuZGlhbiBi eXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyX2Zvcl9jb2RlIChnZGJhcmNoKTsNCj4gKyB1 aW50MzJfdCBpbnNuID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDQsIGJ5dGVfb3Jk ZXIpOw0KPiArDQo+ICsgIC8qIEIgPGltbTI2PiAoYnV0IG5vdCBCTCwgd2hpY2ggaXMgYSBjYWxs KS4gICovICBpbnQgaXNfYmw7ICBpbnQzMl90DQo+ICsgb2Zmc2V0OyAgaWYgKGFhcmNoNjRfZGVj b2RlX2IgKGFkZHIsIGluc24sICZpc19ibCwgJm9mZnNldCkgJiYgIWlzX2JsKQ0KPiArICAgIHJl dHVybiB0cnVlOw0KPiArDQo+ICsgIC8qIEJSIDxYbj46IGJpdHNbMzE6MTBdIGZpeGVkLCBiaXRz Wzk6NV0gPSBYbiwgYml0c1s0OjBdID0gMC4NCj4gKyAgICAgTm8gc2hhcmVkIGRlY29kZXIgZXhp c3RzIGZvciBpbmRpcmVjdCBicmFuY2hlcy4gICovICBpZiAoKGluc24gJg0KPiArIDB4RkZGRkZD MUYpID09IDB4RDYxRjAwMDApDQo+ICsgICAgcmV0dXJuIHRydWU7DQo+ICsNCj4gKyAgcmV0dXJu IGZhbHNlOw0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24g YXQgQUREUiBpcyBhIHJldHVybi4gICovDQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICthYXJjaDY0 X2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpIHsN Cj4gKyAgZ2RiX2J5dGUgYnVmWzRdOw0KPiArDQo+ICsgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkg KGFkZHIsIGJ1ZiwgNCkgIT0gMCkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXJfZm9yX2NvZGUgKGdk YmFyY2gpOw0KPiArIHVpbnQzMl90IGluc24gPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1 ZiwgNCwgYnl0ZV9vcmRlcik7DQo+ICsNCj4gKyAgcmV0dXJuIGFhcmNoNjRfZGVjb2RlX3JldCAo YWRkciwgaW5zbik7IH0NCj4gKw0KPiAgLyogSW5pdGlhbGl6ZSB0aGUgY3VycmVudCBhcmNoaXRl Y3R1cmUgYmFzZWQgb24gSU5GTy4gIElmIHBvc3NpYmxlLA0KPiAgICAgcmV1c2UgYW4gYXJjaGl0 ZWN0dXJlIGZyb20gQVJDSEVTLCB3aGljaCBpcyBhIGxpc3Qgb2YNCj4gICAgIGFyY2hpdGVjdHVy ZXMgYWxyZWFkeSBjcmVhdGVkIGR1cmluZyB0aGlzIGRlYnVnZ2luZyBzZXNzaW9uLg0KPiBAQCAt NDg2MSw2ICs0OTQ3LDExIEBAIGFhcmNoNjRfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9p bmZvIGluZm8sDQo+IHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykNCj4gICAgc2V0X2dkYmFy Y2hfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCAoZ2RiYXJjaCwNCj4gDQo+IGFhcmNoNjRfcHJv Z3JhbV9icmVha3BvaW50X2hlcmVfcCk7DQo+IA0KPiArICAvKiBJbnN0cnVjdGlvbiBzdHJlYW0g YW5hbHlzaXMuICAqLw0KPiArICBzZXRfZ2RiYXJjaF9pbnNuX2lzX2p1bXAgKGdkYmFyY2gsIGFh cmNoNjRfaW5zbl9pc19qdW1wKTsNCj4gKyBzZXRfZ2RiYXJjaF9pbnNuX2lzX3JldCAoZ2RiYXJj aCwgYWFyY2g2NF9pbnNuX2lzX3JldCk7DQo+ICsgc2V0X2dkYmFyY2hfaW5zbl9icmFuY2hfdGFy Z2V0IChnZGJhcmNoLCBhYXJjaDY0X2luc25fYnJhbmNoX3RhcmdldCk7DQo+ICsNCj4gICAgLyog QWRkIHNvbWUgZGVmYXVsdCBwcmVkaWNhdGVzLiAgKi8NCj4gICAgZnJhbWVfdW53aW5kX2FwcGVu ZF91bndpbmRlciAoZ2RiYXJjaCwgJmFhcmNoNjRfc3R1Yl91bndpbmQpOw0KPiAgICBkd2FyZjJf YXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7DQo+IGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtdGRl cC5jIGIvZ2RiL2FtZDY0LXRkZXAuYyBpbmRleA0KPiBhOTgyZTYxMDY0Mi4uNzI2YmM0NzUyNTYg MTAwNjQ0DQo+IC0tLSBhL2dkYi9hbWQ2NC10ZGVwLmMNCj4gKysrIGIvZ2RiL2FtZDY0LXRkZXAu Yw0KPiBAQCAtMTgyMiw2ICsxODIyLDYyIEBAIGFtZDY0X2luc25faXNfanVtcCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsDQo+IENPUkVfQUREUiBhZGRyKQ0KPiAgICByZXR1cm4gYW1kNjRfY2xh c3NpZnlfaW5zbl9hdCAoZ2RiYXJjaCwgYWRkciwgYW1kNjRfam1wX3ApOyAgfQ0KPiANCj4gKy8q IFJldHVybiB0aGUgc3RhdGljYWxseS1rbm93biB0YXJnZXQgb2YgYSByZWxhdGl2ZSBicmFuY2gg aW5zdHJ1Y3Rpb24NCj4gKyAgIChjb25kaXRpb25hbCBKY2MsIEpNUCwgTE9PUCwgSkNYWikuICBS ZXR1cm4gc3RkOjpudWxsb3B0IGZvciBub24tYnJhbmNoLA0KPiArICAgaW5kaXJlY3QgYnJhbmNo ZXMsIG9yIHdoZW4gbWVtb3J5IGNhbm5vdCBiZSByZWFkLiAgKi8NCj4gKw0KPiArc3RhdGljIHN0 ZDo6b3B0aW9uYWw8Q09SRV9BRERSPg0KPiArYW1kNjRfaW5zbl9icmFuY2hfdGFyZ2V0IChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpIHsNCj4gKyAgZ2RiX2J5dGUgYnVm WzE2XTsNCj4gKw0KPiArICAvKiBSZWFkIGVub3VnaCBieXRlcyBmb3IgdGhlIGxvbmdlc3QgcmVs YXRpdmUtYnJhbmNoIGVuY29kaW5nLiAgKi8NCj4gKyBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChh ZGRyLCBidWYsIHNpemVvZiAoYnVmKSkgIT0gMCkNCj4gKyAgICByZXR1cm4gc3RkOjpudWxsb3B0 Ow0KPg0KPiArICAvKiBTa2lwIGEgc2luZ2xlIFJFWCBwcmVmaXggYnl0ZSAoMHg0MC0weDRGKS4g ICovICBpbnQgb2ZmID0gMDsgIGlmDQo+ICsgKChidWZbMF0gJiAweGYwKSA9PSAweDQwKQ0KPiAr ICAgIG9mZiA9IDE7DQoNCkhhdmUgeW91IGNvbnNpZGVyZWQgdG8gdXNlIGFtZDY0X2dldF9pbnNu X2RldGFpbHMgPw0KV2UgY291bGQgdGhlbiBhbHNvIHVzZSB0aGUgdW5pdHR0ZXN0IGZvciB0ZXN0 X2FtZDY0X2dldF9pbnNuX2RldGFpbHMuDQoNCkFuZCB3ZSBjb3VsZCBjb25zaWRlciBhZGRpbmcg YW1kNjRfaW5zbl9icmFuY2hfdGFyZ2V0IHRvIHRoZSB1bml0dGVzdHMuDQpXaXRoIGEgYml0IHJl ZmFjdG9yaW5nIEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgcG9zc2libGUuDQoNCj4gKyAgY29uc3Qg Z2RiX2J5dGUgb3BjID0gYnVmW29mZl07DQo+ICsNCj4gKyAgLyogU2hvcnQgY29uZGl0aW9uYWwg SmNjOiA3eCBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdA0KPiArIGRpc3BsYWNlbWVudCkuICAq LyAgaWYgKChvcGMgJiAweGYwKSA9PSAweDcwKQ0KPiArICAgIHJldHVybiBhZGRyICsgb2ZmICsg MiArIChMT05HRVNUKSAoc2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsNCj4gKw0KPiArICAvKiBT aG9ydCB1bmNvbmRpdGlvbmFsIEpNUDogRUIgY2MgICgyIGJ5dGVzKS4gICovICBpZiAob3BjID09 IDB4ZWIpDQo+ICsgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyAyICsgKExPTkdFU1QpIChzaWduZWQg Y2hhcikgYnVmW29mZiArIDFdOw0KDQpJIHRoaW5rIGluIHRoaXMgZmlsZSBhIGxvdCBvZiBsb2dp Yy8gY29uc3RhbnRzIGFyZSBhbHJlYWR5IHRoZXJlLCBidXQgbm90IGluIGEgZm9ybSBmb3INCnlv dSB0byB1c2UgdGhlbS4NCg0KRG8geW91IHRoaW5rIHRoZXJlIHdvdWxkIGJlIGFuIG9wdGlvbiB0 byBzaGFyZSBtb3JlIGNvZGUgd2l0aCBhIGJpdCBvZiByZWZhY3RvcmluZz8NCg0KPiArICAvKiBM T09QL0xPT1BFL0xPT1BORTogRTIvRTEvRTAgY2MgICgyIGJ5dGVzLCBzaWduZWQgOC1iaXQNCj4g KyBkaXNwbGFjZW1lbnQpLiAgKi8gIGlmICgob3BjICYgMHhmZCkgPT0gMHhlMCkNCj4gKyAgICBy ZXR1cm4gYWRkciArIG9mZiArIDIgKyAoTE9OR0VTVCkgKHNpZ25lZCBjaGFyKSBidWZbb2ZmICsg MV07DQo+ICsNCj4gKyAgLyogSkNYWi9KRUNYWi9KUkNYWjogRTMgY2MgICgyIGJ5dGVzLCBzaWdu ZWQgOC1iaXQgZGlzcGxhY2VtZW50KS4gICovDQo+ICsgaWYgKG9wYyA9PSAweGUzKQ0KPiArICAg IHJldHVybiBhZGRyICsgb2ZmICsgMiArIChMT05HRVNUKSAoc2lnbmVkIGNoYXIpIGJ1ZltvZmYg KyAxXTsNCj4gKw0KPiArICAvKiBOZWFyIGNvbmRpdGlvbmFsIEpjYzogMEYgOHggY2MgY2MgY2Mg Y2MgICg2IGJ5dGVzLCBzaWduZWQgMzItYml0KS4NCj4gKyAqLyAgaWYgKG9wYyA9PSAweDBmICYm IChidWZbb2ZmICsgMV0gJiAweGYwKSA9PSAweDgwKQ0KPiArICAgIHsNCj4gKyAgICAgIGludDMy X3QgZGlzcDsNCj4gKyAgICAgIG1lbWNweSAoJmRpc3AsIGJ1ZiArIG9mZiArIDIsIHNpemVvZiAo ZGlzcCkpOw0KPiArICAgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyA2ICsgKExPTkdFU1QpIGRpc3A7 DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIE5lYXIgdW5jb25kaXRpb25hbCBKTVA6IEU5IGNjIGNj IGNjIGNjICAoNSBieXRlcywgc2lnbmVkIDMyLWJpdCkuDQo+ICsgKi8gIGlmIChvcGMgPT0gMHhl OSkNCj4gKyAgICB7DQo+ICsgICAgICBpbnQzMl90IGRpc3A7DQo+ICsgICAgICBtZW1jcHkgKCZk aXNwLCBidWYgKyBvZmYgKyAxLCBzaXplb2YgKGRpc3ApKTsNCj4gKyAgICAgIHJldHVybiBhZGRy ICsgb2ZmICsgNSArIChMT05HRVNUKSBkaXNwOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBJbmRp cmVjdCBvciBmYXIgYnJhbmNoZXM6IHRhcmdldCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNh bGx5Lg0KPiArKi8NCj4gKyAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCj4gK30NCj4gKw0KPiAgLyog Rml4IHVwIHRoZSBzdGF0ZSBvZiByZWdpc3RlcnMgYW5kIG1lbW9yeSBhZnRlciBoYXZpbmcgc2lu Z2xlLXN0ZXBwZWQNCj4gICAgIGEgZGlzcGxhY2VkIGluc3RydWN0aW9uLiAgKi8NCj4gDQo+IEBA IC0zNjQzLDYgKzM2OTksNyBAQCBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLCBzdHJ1Y3QNCj4gZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gICAgc2V0X2dkYmFyY2hfaW5zbl9p c19jYWxsIChnZGJhcmNoLCBhbWQ2NF9pbnNuX2lzX2NhbGwpOw0KPiAgICBzZXRfZ2RiYXJjaF9p bnNuX2lzX3JldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9pc19yZXQpOw0KPiAgICBzZXRfZ2RiYXJj aF9pbnNuX2lzX2p1bXAgKGdkYmFyY2gsIGFtZDY0X2luc25faXNfanVtcCk7DQo+ICsgIHNldF9n ZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9icmFuY2hfdGFy Z2V0KTsNCj4gDQo+ICAgIHNldF9nZGJhcmNoX2luX2luZGlyZWN0X2JyYW5jaF90aHVuayAoZ2Ri YXJjaCwNCj4gIAkJCQkJYW1kNjRfaW5faW5kaXJlY3RfYnJhbmNoX3RodW5rKTsNCj4gZGlmZiAt LWdpdCBhL2dkYi9hcmNoLXV0aWxzLmMgYi9nZGIvYXJjaC11dGlscy5jIGluZGV4DQo+IGU5NTk3 ODhiZDNiLi5mNzNkMTU4MWYwOSAxMDA2NDQNCj4gLS0tIGEvZ2RiL2FyY2gtdXRpbHMuYw0KPiAr KysgYi9nZGIvYXJjaC11dGlscy5jDQo+IEBAIC00NSw2ICs0NSw4IEBADQo+IA0KPiAgI2luY2x1 ZGUgImRpcy1hc20uaCINCj4gDQo+ICsjaW5jbHVkZSA8b3B0aW9uYWw+DQo+ICsNCj4gIGJvb2wN Cj4gIGRlZmF1bHRfZGlzcGxhY2VkX3N0ZXBfaHdfc2luZ2xlc3RlcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpICB7IEBAIC0NCj4gOTIzLDYgKzkyNSwxNCBAQCBkZWZhdWx0X2luc25faXNfanVt cCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IENPUkVfQUREUiBhZGRyKQ0KPiANCj4gIC8q ICBTZWUgYXJjaC11dGlscy5oLiAgKi8NCj4gDQo+ICtzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4N Cj4gK2RlZmF1bHRfaW5zbl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIGFkZHIpIHsNCj4gKyAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCj4gK30NCj4gKw0K PiArLyogIFNlZSBhcmNoLXV0aWxzLmguICAqLw0KPiArDQo+ICBib29sDQo+ICBkZWZhdWx0X3By b2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiAgCQkJ CSAgIENPUkVfQUREUiBhZGRyZXNzKQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2FyY2gtdXRpbHMuaCBi L2dkYi9hcmNoLXV0aWxzLmggaW5kZXgNCj4gMDY5MDIwNTAwNDMuLjQ2ZDlkODllNjY4IDEwMDY0 NA0KPiAtLS0gYS9nZGIvYXJjaC11dGlscy5oDQo+ICsrKyBiL2dkYi9hcmNoLXV0aWxzLmgNCj4g QEAgLTMyNyw2ICszMjcsNyBAQCBleHRlcm4gYm9vbCBkZWZhdWx0X3JldHVybl9pbl9maXJzdF9o aWRkZW5fcGFyYW1fcA0KPiAoc3RydWN0IGdkYmFyY2ggKiwgIGV4dGVybiBib29sIGRlZmF1bHRf aW5zbl9pc19jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqLA0KPiBDT1JFX0FERFIpOyAgZXh0ZXJuIGJv b2wgZGVmYXVsdF9pbnNuX2lzX3JldCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsNCj4g ZXh0ZXJuIGJvb2wgZGVmYXVsdF9pbnNuX2lzX2p1bXAgKHN0cnVjdCBnZGJhcmNoICosIENPUkVf QUREUik7DQo+ICtleHRlcm4gc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IGRlZmF1bHRfaW5zbl9i cmFuY2hfdGFyZ2V0IChzdHJ1Y3QNCj4gK2dkYmFyY2ggKiwgQ09SRV9BRERSKTsNCj4gDQo+ICAv KiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIGdkYmFyY2hfcHJvZ3JhbV9icmVha3BvaW50X2hl cmVfcC4gICovDQo+IGV4dGVybiBib29sIGRlZmF1bHRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVf cCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IGRpZmYgLS1naXQgYS9nZGIvYXJjaC9hYXJj aDY0LWluc24uYyBiL2dkYi9hcmNoL2FhcmNoNjQtaW5zbi5jIGluZGV4DQo+IGY2MDg5MDkyZWNh Li4zYWIyOGU2ZGQ0YiAxMDA2NDQNCj4gLS0tIGEvZ2RiL2FyY2gvYWFyY2g2NC1pbnNuLmMNCj4g KysrIGIvZ2RiL2FyY2gvYWFyY2g2NC1pbnNuLmMNCj4gQEAgLTIwMSw2ICsyMDEsMjkgQEAgYWFy Y2g2NF9kZWNvZGVfdGIgKENPUkVfQUREUiBhZGRyLCB1aW50MzJfdA0KPiBpbnNuLCBpbnQgKmlz X3RibnosDQo+ICAgIHJldHVybiAwOw0KPiAgfQ0KPiANCj4gKy8qIERlY29kZSBhbiBvcGNvZGUg aWYgaXQgcmVwcmVzZW50cyBhIFJFVCBpbnN0cnVjdGlvbi4NCj4gKw0KPiArICAgQUREUiBzcGVj aWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9wY29kZS4NCj4gKyAgIElOU04gc3BlY2lmaWVzIHRo ZSBvcGNvZGUgdG8gdGVzdC4NCj4gKw0KPiArICAgUmV0dXJuIDEgaWYgdGhlIG9wY29kZXMgbWF0 Y2hlcyBhbmQgaXMgZGVjb2RlZCwgb3RoZXJ3aXNlIDAuICAqLw0KPiArDQo+ICtpbnQNCj4gK2Fh cmNoNjRfZGVjb2RlX3JldCAoQ09SRV9BRERSIGFkZHIsIHVpbnQzMl90IGluc24pIHsNCj4gKyAg LyogcmV0IGIxMTAxIDAxMTAgMDEwMCBubm5uIG4wMDAgMDAwMCAwMDAwIDAwMDAgKi8NCj4gKyAg aWYgKGRlY29kZV9tYXNrZWRfbWF0Y2ggKGluc24sIDB4RkZFMEZGRkYsIDB4RDY0MDAwMDApKQ0K PiArICAgIHsNCj4gKyAgICAgIHVuc2lnbmVkIGludCBybiA9IChpbnNuID4+IDE1KSAmIDB4MWY7 DQo+ICsNCj4gKyAgICAgIGFhcmNoNjRfZGVidWdfcHJpbnRmICgiZGVjb2RlOiAweCVzIDB4JXgg eCV1IiwNCj4gKwkJCSAgICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgaW5zbiwNCj4g KwkJCSAgICBybik7DQo+ICsgICAgICByZXR1cm4gMTsNCj4gKyAgICB9DQo+ICsgIHJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICAvKiBEZWNvZGUgYW4gb3Bjb2RlIGlmIGl0IHJlcHJlc2VudHMgYW4g TERSIG9yIExEUlNXIGluc3RydWN0aW9uIHRha2luZyBhDQo+ICAgICBsaXRlcmFsIG9mZnNldCBm cm9tIHRoZSBjdXJyZW50IFBDLg0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9hcmNoL2FhcmNoNjQt aW5zbi5oIGIvZ2RiL2FyY2gvYWFyY2g2NC1pbnNuLmggaW5kZXgNCj4gNDI4ZTUzYzM4NTguLmFh ZmJlM2MwZDZiIDEwMDY0NA0KPiAtLS0gYS9nZGIvYXJjaC9hYXJjaDY0LWluc24uaA0KPiArKysg Yi9nZGIvYXJjaC9hYXJjaDY0LWluc24uaA0KPiBAQCAtMjAwLDYgKzIwMCw4IEBAIGludCBhYXJj aDY0X2RlY29kZV90YiAoQ09SRV9BRERSIGFkZHIsIHVpbnQzMl90DQo+IGluc24sIGludCAqaXNf dGJueiwgIGludCBhYXJjaDY0X2RlY29kZV9sZHJfbGl0ZXJhbCAoQ09SRV9BRERSIGFkZHIsIHVp bnQzMl90DQo+IGluc24sIGludCAqaXNfdywNCj4gIAkJCQlpbnQgKmlzNjQsIHVuc2lnbmVkICpy dCwgaW50MzJfdCAqb2Zmc2V0KTsNCj4gDQo+ICtpbnQgYWFyY2g2NF9kZWNvZGVfcmV0IChDT1JF X0FERFIgYWRkciwgdWludDMyX3QgaW5zbik7DQo+ICsNCj4gIC8qIERhdGEgcGFzc2VkIHRvIGVh Y2ggbWV0aG9kIG9mIGFhcmNoNjRfaW5zbl92aXNpdG9yLiAgKi8NCj4gDQo+ICBzdHJ1Y3QgYWFy Y2g2NF9pbnNuX2RhdGENCj4gZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoLWdlbi5jIGIvZ2RiL2dk YmFyY2gtZ2VuLmMgaW5kZXgNCj4gZjQyNGZhMmE4NmUuLjFjYmI2NDU5Zjg3IDEwMDY0NA0KPiAt LS0gYS9nZGIvZ2RiYXJjaC1nZW4uYw0KPiArKysgYi9nZGIvZ2RiYXJjaC1nZW4uYw0KPiBAQCAt MjM0LDYgKzIzNCw3IEBAIHN0cnVjdCBnZGJhcmNoDQo+ICAgIGdkYmFyY2hfaW5zbl9pc19jYWxs X2Z0eXBlICppbnNuX2lzX2NhbGwgPSBkZWZhdWx0X2luc25faXNfY2FsbDsNCj4gICAgZ2RiYXJj aF9pbnNuX2lzX3JldF9mdHlwZSAqaW5zbl9pc19yZXQgPSBkZWZhdWx0X2luc25faXNfcmV0Ow0K PiAgICBnZGJhcmNoX2luc25faXNfanVtcF9mdHlwZSAqaW5zbl9pc19qdW1wID0gZGVmYXVsdF9p bnNuX2lzX2p1bXA7DQo+ICsgIGdkYmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0X2Z0eXBlICppbnNu X2JyYW5jaF90YXJnZXQgPQ0KPiArIGRlZmF1bHRfaW5zbl9icmFuY2hfdGFyZ2V0Ow0KPiAgICBn ZGJhcmNoX3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3BfZnR5cGUgKnByb2dyYW1fYnJlYWtwb2lu dF9oZXJlX3AgPQ0KPiBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3A7DQo+ICAgIGdk YmFyY2hfYXV4dl9wYXJzZV9mdHlwZSAqYXV4dl9wYXJzZSA9IG51bGxwdHI7DQo+ICAgIGdkYmFy Y2hfcHJpbnRfYXV4dl9lbnRyeV9mdHlwZSAqcHJpbnRfYXV4dl9lbnRyeSA9DQo+IGRlZmF1bHRf cHJpbnRfYXV4dl9lbnRyeTsgQEAgLTQ5Miw4ICs0OTMsOSBAQCB2ZXJpZnlfZ2RiYXJjaCAoc3Ry dWN0DQo+IGdkYmFyY2ggKmdkYmFyY2gpDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIGNvcmVfaW5m b19wcm9jLCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gICAgLyogU2tpcCB2ZXJpZnkgb2YgcmF2ZW5z Y2FyX29wcywgaW52YWxpZF9wID09IDAuICAqLw0KPiAgICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNu X2lzX2NhbGwsIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gLSAgLyogU2tpcCB2ZXJpZnkgb2YgaW5z bl9pc19yZXQsIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gLSAgLyogU2tpcCB2ZXJpZnkgb2YgaW5z bl9pc19qdW1wLCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ICsgIC8qIFNraXAgdmVyaWZ5IG9mIGlu c25faXNfcmV0LCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gKyAgLyogU2tpcCB2ZXJpZnkgb2YgaW5z bl9pc19qdW1wLCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gKyAgLyogU2tpcCB2ZXJpZnkgb2YgaW5z bl9icmFuY2hfdGFyZ2V0LCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gICAgLyogU2tpcCB2ZXJpZnkg b2YgcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCwgaW52YWxpZF9wID09IDAuICAqLw0KPiAgICAv KiBTa2lwIHZlcmlmeSBvZiBhdXh2X3BhcnNlLCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gICAgLyog U2tpcCB2ZXJpZnkgb2YgcHJpbnRfYXV4dl9lbnRyeSwgaW52YWxpZF9wID09IDAuICAqLyBAQCAt MTI3MCwxMiArMTI3MiwyNA0KPiBAQCBnZGJhcmNoX2R1bXAgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzdHJ1Y3QgdWlfZmlsZSAqZmlsZSkNCj4gICAgZ2RiX3ByaW50ZiAoZmlsZSwNCj4gIAkg ICAgICAiZ2RiYXJjaF9kdW1wOiBpbnNuX2lzX2NhbGwgPSA8JXM+XG4iLA0KPiAgCSAgICAgIGhv c3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPmluc25faXNfY2FsbCkpOw0KPiArICBnZGJf cHJpbnRmIChmaWxlLA0KPiArCSAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfaW5zbl9pc19y ZXRfcCgpID0gJWRcbiIsDQo+ICsJICAgICAgZ2RiYXJjaF9pbnNuX2lzX3JldF9wIChnZGJhcmNo KSk7DQo+ICAgIGdkYl9wcmludGYgKGZpbGUsDQo+ICAJICAgICAgImdkYmFyY2hfZHVtcDogaW5z bl9pc19yZXQgPSA8JXM+XG4iLA0KPiAgCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdk YmFyY2gtPmluc25faXNfcmV0KSk7DQo+ICsgIGdkYl9wcmludGYgKGZpbGUsDQo+ICsJICAgICAg ImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9pbnNuX2lzX2p1bXBfcCgpID0gJWRcbiIsDQo+ICsJICAg ICAgZ2RiYXJjaF9pbnNuX2lzX2p1bXBfcCAoZ2RiYXJjaCkpOw0KPiAgICBnZGJfcHJpbnRmIChm aWxlLA0KPiAgCSAgICAgICJnZGJhcmNoX2R1bXA6IGluc25faXNfanVtcCA9IDwlcz5cbiIsDQo+ ICAJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+aW5zbl9pc19qdW1wKSk7 DQo+ICsgIGdkYl9wcmludGYgKGZpbGUsDQo+ICsJICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJj aF9pbnNuX2JyYW5jaF90YXJnZXRfcCgpID0gJWRcbiIsDQo+ICsJICAgICAgZ2RiYXJjaF9pbnNu X2JyYW5jaF90YXJnZXRfcCAoZ2RiYXJjaCkpOw0KPiArICBnZGJfcHJpbnRmIChmaWxlLA0KPiAr CSAgICAgICJnZGJhcmNoX2R1bXA6IGluc25fYnJhbmNoX3RhcmdldCA9IDwlcz5cbiIsDQo+ICsJ ICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+aW5zbl9icmFuY2hfdGFyZ2V0 KSk7DQo+ICAgIGdkYl9wcmludGYgKGZpbGUsDQo+ICAJICAgICAgImdkYmFyY2hfZHVtcDogcHJv Z3JhbV9icmVha3BvaW50X2hlcmVfcCA9IDwlcz5cbiIsDQo+ICAJICAgICAgaG9zdF9hZGRyZXNz X3RvX3N0cmluZyAoZ2RiYXJjaC0+cHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCkpOw0KPiBAQCAt NDkxNiwxMSArNDkzMCwxOSBAQCBzZXRfZ2RiYXJjaF9pbnNuX2lzX2NhbGwgKHN0cnVjdCBnZGJh cmNoDQo+ICpnZGJhcmNoLA0KPiAgICBnZGJhcmNoLT5pbnNuX2lzX2NhbGwgPSBpbnNuX2lzX2Nh bGw7ICB9DQo+IA0KPiArYm9vbA0KPiArZ2RiYXJjaF9pbnNuX2lzX3JldF9wIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCkgew0KPiArICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IG51bGxwdHIpOw0K PiArICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9pc19yZXQgIT0gZGVmYXVsdF9pbnNuX2lzX3JldDsg fQ0KPiArDQo+ICBib29sDQo+ICBnZGJhcmNoX2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpICB7DQo+ICAgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g bnVsbHB0cik7DQo+ICAgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPmluc25faXNfcmV0ICE9IG51bGxw dHIpOw0KPiArICAvKiBEbyBub3QgY2hlY2sgcHJlZGljYXRlOiBnZGJhcmNoLT5pbnNuX2lzX3Jl dCAhPQ0KPiArIGRlZmF1bHRfaW5zbl9pc19yZXQsIGFsbG93IGNhbGwuICAqLw0KPiAgICBpZiAo Z2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJnZGJh cmNoX2luc25faXNfcmV0IGNhbGxlZFxuIik7DQo+ICAgIHJldHVybiBnZGJhcmNoLT5pbnNuX2lz X3JldCAoZ2RiYXJjaCwgYWRkcik7IEBAIC00OTMzLDExICs0OTU1LDE5IEBADQo+IHNldF9nZGJh cmNoX2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gICAgZ2RiYXJjaC0+ aW5zbl9pc19yZXQgPSBpbnNuX2lzX3JldDsNCj4gIH0NCj4gDQo+ICtib29sDQo+ICtnZGJhcmNo X2luc25faXNfanVtcF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkgew0KPiArICBnZGJfYXNz ZXJ0IChnZGJhcmNoICE9IG51bGxwdHIpOw0KPiArICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9pc19q dW1wICE9IGRlZmF1bHRfaW5zbl9pc19qdW1wOyB9DQo+ICsNCj4gIGJvb2wNCj4gIGdkYmFyY2hf aW5zbl9pc19qdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpICB7 DQo+ICAgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7DQo+ICAgIGdkYl9hc3NlcnQg KGdkYmFyY2gtPmluc25faXNfanVtcCAhPSBudWxscHRyKTsNCj4gKyAgLyogRG8gbm90IGNoZWNr IHByZWRpY2F0ZTogZ2RiYXJjaC0+aW5zbl9pc19qdW1wICE9DQo+ICsgZGVmYXVsdF9pbnNuX2lz X2p1bXAsIGFsbG93IGNhbGwuICAqLw0KPiAgICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiAg ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJnZGJhcmNoX2luc25faXNfanVtcCBjYWxsZWRc biIpOw0KPiAgICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9pc19qdW1wIChnZGJhcmNoLCBhZGRyKTsg QEAgLTQ5NTAsNiArNDk4MCwzMSBAQA0KPiBzZXRfZ2RiYXJjaF9pbnNuX2lzX2p1bXAgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLA0KPiAgICBnZGJhcmNoLT5pbnNuX2lzX2p1bXAgPSBpbnNuX2lz X2p1bXA7ICB9DQo+IA0KPiArYm9vbA0KPiArZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXRfcCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpIHsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBu dWxscHRyKTsNCj4gKyAgcmV0dXJuIGdkYmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCAhPSBkZWZh dWx0X2luc25fYnJhbmNoX3RhcmdldDsgfQ0KPiArDQo+ICtzdGQ6Om9wdGlvbmFsPENPUkVfQURE Uj4NCj4gK2dkYmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgQ09SRV9BRERSIGFkZHIpIHsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBudWxscHRy KTsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaC0+aW5zbl9icmFuY2hfdGFyZ2V0ICE9IG51bGxw dHIpOw0KPiArICAvKiBEbyBub3QgY2hlY2sgcHJlZGljYXRlOiBnZGJhcmNoLT5pbnNuX2JyYW5j aF90YXJnZXQgIT0NCj4gK2RlZmF1bHRfaW5zbl9icmFuY2hfdGFyZ2V0LCBhbGxvdyBjYWxsLiAg Ki8NCj4gKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikNCj4gKyAgICBnZGJfcHJpbnRmIChnZGJf c3RkbG9nLCAiZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXQgY2FsbGVkXG4iKTsNCj4gKyAgcmV0 dXJuIGdkYmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwgYWRkcik7IH0NCj4gKw0K PiArdm9pZA0KPiArc2V0X2dkYmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwNCj4gKwkJCQlnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldF9mdHlwZQ0KPiBp bnNuX2JyYW5jaF90YXJnZXQpIHsNCj4gKyAgZ2RiYXJjaC0+aW5zbl9icmFuY2hfdGFyZ2V0ID0g aW5zbl9icmFuY2hfdGFyZ2V0OyB9DQo+ICsNCj4gIGJvb2wNCj4gIGdkYmFyY2hfcHJvZ3JhbV9i cmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUg0KPiBh ZGRyZXNzKSAgeyBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmggYi9nZGIvZ2RiYXJjaC1n ZW4uaCBpbmRleA0KPiA2NzhiMzA4ZmJhNS4uNmE2ZTllZDQwZjEgMTAwNjQ0DQo+IC0tLSBhL2dk Yi9nZGJhcmNoLWdlbi5oDQo+ICsrKyBiL2dkYi9nZGJhcmNoLWdlbi5oDQo+IEBAIC0xNTgyLDE2 ICsxNTgyLDMyIEBAIHZvaWQgc2V0X2dkYmFyY2hfaW5zbl9pc19jYWxsIChzdHJ1Y3QgZ2RiYXJj aA0KPiAqZ2RiYXJjaCwgZ2RiYXJjaF9pbnNuX2lzX2NhbGxfZnR5DQo+IA0KPiAgLyogUmV0dXJu IHRydWUgaWYgdGhlIGluc3RydWN0aW9uIGF0IEFERFIgaXMgYSByZXR1cm47IGZhbHNlIG90aGVy d2lzZS4gKi8NCj4gDQo+ICtib29sIGdkYmFyY2hfaW5zbl9pc19yZXRfcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpOw0KPiArDQo+ICB1c2luZyBnZGJhcmNoX2luc25faXNfcmV0X2Z0eXBlID0g Ym9vbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUg0KPiBhZGRyKTsgIGJvb2wg Z2RiYXJjaF9pbnNuX2lzX3JldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyKTsNCj4gdm9pZCBzZXRfZ2RiYXJjaF9pbnNuX2lzX3JldCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsDQo+IGdkYmFyY2hfaW5zbl9pc19yZXRfZnR5cGUgKmluc25faXNfcmV0KTsNCj4gDQo+ ICAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUiBpcyBhIGp1bXA7IGZh bHNlIG90aGVyd2lzZS4gKi8NCj4gDQo+ICtib29sIGdkYmFyY2hfaW5zbl9pc19qdW1wX3AgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsNCj4gKw0KPiAgdXNpbmcgZ2RiYXJjaF9pbnNuX2lzX2p1 bXBfZnR5cGUgPSBib29sIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gQ09SRV9BRERSIGFk ZHIpOyAgYm9vbCBnZGJhcmNoX2luc25faXNfanVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs DQo+IENPUkVfQUREUiBhZGRyKTsgIHZvaWQgc2V0X2dkYmFyY2hfaW5zbl9pc19qdW1wIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gZ2RiYXJjaF9pbnNuX2lzX2p1bXBfZnR5cGUgKmluc25f aXNfanVtcCk7DQo+IA0KPiArLyogRm9yIGEgcmVsYXRpdmUgYnJhbmNoIGluc3RydWN0aW9uIGF0 IEFERFIgKGNvbmRpdGlvbmFsIG9yDQo+ICsgICB1bmNvbmRpdGlvbmFsKSwgcmV0dXJuIHRoZSBz dGF0aWNhbGx5LWtub3duIGJyYW5jaCB0YXJnZXQgYWRkcmVzcy4NCj4gKyAgIFJldHVybiBzdGQ6 Om51bGxvcHQgZm9yIG5vbi1icmFuY2ggaW5zdHJ1Y3Rpb25zLCBpbmRpcmVjdCBicmFuY2hlcywN Cj4gKyAgIG9yIHdoZW4gcmVhZGluZyBtZW1vcnkgZmFpbHMuICBUaGlzIGlzIHVzZWQgdG8gZGV0 ZWN0IGJhY2t3YXJkDQo+ICsgICBsb29wIGJhY2stZWRnZXMgZHVyaW5nIERXQVJGIGxpbmUtdGFi bGUgYW5hbHlzaXMuICovDQo+ICsNCj4gK2Jvb2wgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXRf cCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOw0KPiArDQo+ICt1c2luZyBnZGJhcmNoX2luc25f YnJhbmNoX3RhcmdldF9mdHlwZSA9IHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPg0KPiArKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7IHN0ZDo6b3B0aW9uYWw8Q09SRV9B RERSPg0KPiArZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgYWRkcik7DQo+ICt2b2lkIHNldF9nZGJhcmNoX2luc25fYnJhbmNoX3Rh cmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICtnZGJhcmNoX2luc25fYnJhbmNoX3Rh cmdldF9mdHlwZSAqaW5zbl9icmFuY2hfdGFyZ2V0KTsNCj4gKw0KPiAgLyogUmV0dXJuIHRydWUg aWYgdGhlcmUncyBhIHByb2dyYW0vcGVybWFuZW50IGJyZWFrcG9pbnQgcGxhbnRlZCBpbg0KPiAg ICAgbWVtb3J5IGF0IEFERFJFU1MsIHJldHVybiBmYWxzZSBvdGhlcndpc2UuICovDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSBiL2dkYi9nZGJhcmNoX2NvbXBv bmVudHMucHkgaW5kZXgNCj4gYjkzMDRkMzAzNmQuLmRmNWRkZWZmZmNiIDEwMDY0NA0KPiAtLS0g YS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5DQo+ICsrKyBiL2dkYi9nZGJhcmNoX2NvbXBvbmVu dHMucHkNCj4gQEAgLTI1MDksNiArMjUwOSw3IEBAIFJldHVybiB0cnVlIGlmIHRoZSBpbnN0cnVj dGlvbiBhdCBBRERSIGlzIGEgcmV0dXJuOw0KPiBmYWxzZSBvdGhlcndpc2UuDQo+ICAgICAgdHlw ZT0iYm9vbCIsDQo+ICAgICAgbmFtZT0iaW5zbl9pc19yZXQiLA0KPiAgICAgIHBhcmFtcz1bKCJD T1JFX0FERFIiLCAiYWRkciIpXSwNCj4gKyAgICBwcmVkaWNhdGU9VHJ1ZSwNCj4gICAgICBwcmVk ZWZhdWx0PSJkZWZhdWx0X2luc25faXNfcmV0IiwNCj4gICAgICBpbnZhbGlkPUZhbHNlLA0KPiAg KQ0KPiBAQCAtMjUyMCwxMCArMjUyMSwyNyBAQCBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rp b24gYXQgQUREUiBpcyBhIGp1bXA7DQo+IGZhbHNlIG90aGVyd2lzZS4NCj4gICAgICB0eXBlPSJi b29sIiwNCj4gICAgICBuYW1lPSJpbnNuX2lzX2p1bXAiLA0KPiAgICAgIHBhcmFtcz1bKCJDT1JF X0FERFIiLCAiYWRkciIpXSwNCj4gKyAgICBwcmVkaWNhdGU9VHJ1ZSwNCj4gICAgICBwcmVkZWZh dWx0PSJkZWZhdWx0X2luc25faXNfanVtcCIsDQo+ICAgICAgaW52YWxpZD1GYWxzZSwNCj4gICkN Cj4gDQo+ICtNZXRob2QoDQo+ICsgICAgY29tbWVudD0iIiINCj4gK0ZvciBhIHJlbGF0aXZlIGJy YW5jaCBpbnN0cnVjdGlvbiBhdCBBRERSIChjb25kaXRpb25hbCBvcg0KPiArdW5jb25kaXRpb25h bCksIHJldHVybiB0aGUgc3RhdGljYWxseS1rbm93biBicmFuY2ggdGFyZ2V0IGFkZHJlc3MuDQo+ ICtSZXR1cm4gc3RkOjpudWxsb3B0IGZvciBub24tYnJhbmNoIGluc3RydWN0aW9ucywgaW5kaXJl Y3QgYnJhbmNoZXMsIG9yDQo+ICt3aGVuIHJlYWRpbmcgbWVtb3J5IGZhaWxzLiAgVGhpcyBpcyB1 c2VkIHRvIGRldGVjdCBiYWNrd2FyZCBsb29wDQo+ICtiYWNrLWVkZ2VzIGR1cmluZyBEV0FSRiBs aW5lLXRhYmxlIGFuYWx5c2lzLg0KPiArIiIiLA0KPiArICAgIHR5cGU9InN0ZDo6b3B0aW9uYWw8 Q09SRV9BRERSPiIsDQo+ICsgICAgbmFtZT0iaW5zbl9icmFuY2hfdGFyZ2V0IiwNCj4gKyAgICBw YXJhbXM9WygiQ09SRV9BRERSIiwgImFkZHIiKV0sDQo+ICsgICAgcHJlZGljYXRlPVRydWUsDQo+ ICsgICAgcHJlZGVmYXVsdD0iZGVmYXVsdF9pbnNuX2JyYW5jaF90YXJnZXQiLA0KPiArICAgIGlu dmFsaWQ9RmFsc2UsDQo+ICspDQo+ICBNZXRob2QoDQo+ICAgICAgY29tbWVudD0iIiINCj4gIFJl dHVybiB0cnVlIGlmIHRoZXJlJ3MgYSBwcm9ncmFtL3Blcm1hbmVudCBicmVha3BvaW50IHBsYW50 ZWQgaW4gZGlmZiAtLWdpdA0KPiBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMgaW5k ZXggYjY1MDViYTI4M2QuLjE5OTJmYzYyZTRhIDEwMDY0NA0KPiAtLS0gYS9nZGIvbGluZXNwZWMu Yw0KPiArKysgYi9nZGIvbGluZXNwZWMuYw0KPiBAQCAtNDQsOSArNDQsMTIgQEANCj4gICNpbmNs dWRlICJnZGJzdXBwb3J0L2Z1bmN0aW9uLXZpZXcuaCINCj4gICNpbmNsdWRlICJnZGJzdXBwb3J0 L2RlZi12ZWN0b3IuaCINCj4gICNpbmNsdWRlIDxhbGdvcml0aG0+DQo+ICsjaW5jbHVkZSAiZGlz YXNtLmgiDQo+ICsjaW5jbHVkZSAiZ2RiYXJjaC5oIg0KPiAgI2luY2x1ZGUgImluZmVyaW9yLmgi DQo+ICAjaW5jbHVkZSAiZ2Ric3VwcG9ydC91bm9yZGVyZWRfc2V0LmgiDQo+ICAjaW5jbHVkZSAi Y2xpL2NsaS1zdHlsZS5oIg0KPiArI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIg0KPiANCj4gIC8q IEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpb3VzIHRoaW5ncyBhIHVzZXIgbWlnaHQgYXR0ZW1w dCB0bw0KPiAgICAgY29tcGxldGUgZm9yIGEgbGluZXNwZWMgbG9jYXRpb24uICAqLyBAQCAtNDMy LDYgKzQzNSw5IEBAIHN0YXRpYyBib29sDQo+IGNvbXBhcmVfbXN5bWJvbHMgKGNvbnN0IGJvdW5k X21pbmltYWxfc3ltYm9sICZhLA0KPiAgICAgcHJldmlvdXMgcGFyc2VyLiAgKi8NCj4gIHN0YXRp YyBjb25zdCBjaGFyIGxpbmVzcGVjX3F1b3RlX2NoYXJhY3RlcnNbXSA9ICJcIlwnIjsNCj4gDQo+ ICsvKiBDb250cm9sIHdoZXRoZXIgdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMg aXMgZW5hYmxlZC4gICovDQo+ICtzdGF0aWMgYm9vbCBkZWJ1Z19saW5lc3BlY19leHRlbmRlZF9i bG9ja19maWx0ZXIgPSB0cnVlOw0KPiArDQo+ICAvKiBMZXhlciBmdW5jdGlvbnMuICAqLw0KPiAN Cj4gIC8qIExleCBhIG51bWJlciBmcm9tIHRoZSBpbnB1dCBpbiBQQVJTRVIuICBUaGlzIG9ubHkg c3VwcG9ydHMgQEAgLTE5ODYsNg0KPiArMTk5Miw1MiBAQCBjYW5vbmljYWxpemVfbGluZXNwZWMg KHN0cnVjdCBsaW5lc3BlY19zdGF0ZSAqc3RhdGUsIGNvbnN0DQo+IGxpbmVzcGVjICpscykNCj4g ICAgICBleHBsaWNpdF9sb2MtPnNldF9zdHJpbmcgKGV4cGxpY2l0X2xvYy0+dG9fbGluZXNwZWMg KCkpOyAgfQ0KPiANCj4gKy8qIFJldHVybiB0cnVlIGlmIFBDX1RPIGlzIHVucmVhY2hhYmxlIGJ5 IGZhbGwtdGhyb3VnaCBmcm9tIFBDX0ZST00uDQo+ICsgICBUd28gY29uZGl0aW9ucyBhcmUgc3Vm ZmljaWVudDogKDEpIGFueSByZXQgaW4gW1BDX0ZST00sIFBDX1RPKSwgb3INCj4gKyAgICgyKSB1 bmNvbmRpdGlvbmFsIGp1bXAgaW1tZWRpYXRlbHkgYmVmb3JlIFBDX1RPLiAgT25seSB0aGUgbGFz dA0KPiArICAgaW5zdHJ1Y3Rpb24gYmVmb3JlIFBDX1RPIG1hdHRlcnM7IG1pZC1yYW5nZSBicmFu Y2hlcyBhcmUgaWdub3JlZCB0bw0KPiArICAgcHJlc2VydmUgZm9yLWxvb3AgZGVkdXBsaWNhdGlv bi4gICovDQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICtyYW5nZV9oYXNfdW5jb25kaXRpb25hbF9m bG93X2NvbnRyb2wgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiArCQkJCSAgICAgIENPUkVf QUREUiBwY19mcm9tLCBDT1JFX0FERFIgcGNfdG8pIHsNCj4gKyAgLyogUmV0dXJuIHRydWUgaWY6 IGxhc3QgaW5zdHJ1Y3Rpb24gYmVmb3JlIFBDX1RPIGlzIHVuY29uZGl0aW9uYWwNCj4gKyAgICAg am1wL3JldCwgb3IgYW55IGluc3RydWN0aW9uIGluIHJhbmdlIGlzIGEgYmFja3dhcmQgYnJhbmNo DQo+ICsgICAgIChpbmRpY2F0aW5nIHNlcGFyYXRlIGxvb3AgYm9kaWVzKS4gICovDQo+ICsNCj4g KyAgQ09SRV9BRERSIHBjID0gcGNfZnJvbTsNCj4gKw0KPiArICB3aGlsZSAocGMgPCBwY190bykN Cj4gKyAgICB7DQo+ICsgICAgICB0cnkNCj4gKwl7DQo+ICsJICBpbnQgbGVuID0gZ2RiX2luc25f bGVuZ3RoIChnZGJhcmNoLCBwYyk7DQo+ICsJICBpZiAobGVuIDw9IDApDQo+ICsJICAgIHJldHVy biBmYWxzZTsNCj4gKw0KPiArCSAgLyogQ2hlY2sgZm9yIGJhY2t3YXJkIGJyYW5jaCAobG9vcCBi YWNrLWVkZ2UpLiAgKi8NCj4gKwkgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiB0YXJnZXQNCj4g KwkgICAgPSBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwgcGMpOw0KPiArCSAg aWYgKHRhcmdldC5oYXNfdmFsdWUgKCkgJiYgdGFyZ2V0LnZhbHVlICgpIDwgcGNfZnJvbSkNCj4g KwkgICAgcmV0dXJuIHRydWU7DQo+ICsNCj4gKwkgIC8qIElzIHRoaXMgdGhlIGxhc3QgaW5zdHJ1 Y3Rpb24gYmVmb3JlIFBDX1RPPyAgKi8NCj4gKwkgIGlmIChwYyArIGxlbiA+PSBwY190bykNCj4g KwkgICAgcmV0dXJuIGdkYmFyY2hfaW5zbl9pc19qdW1wIChnZGJhcmNoLCBwYykNCj4gKwkgICAg ICB8fCBnZGJhcmNoX2luc25faXNfcmV0IChnZGJhcmNoLCBwYyk7DQo+ICsNCj4gKwkgIHBjICs9 IGxlbjsNCj4gKwl9DQo+ICsgICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbl9lcnJvciAm KQ0KPiArCXsNCj4gKwkgIHJldHVybiBmYWxzZTsNCj4gKwl9DQo+ICsgICAgfQ0KPiArDQo+ICsg IHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiAgLyogR2l2ZW4gYSBsaW5lIG9mZnNldCBpbiBM UywgY29uc3RydWN0IHRoZSByZWxldmFudCBTQUxzLiAgKi8NCj4gDQo+ICBzdGF0aWMgc3RkOjp2 ZWN0b3I8c3ltdGFiX2FuZF9saW5lPg0KPiBAQCAtMjA4NCwxMyArMjEzNiwzMyBAQCBjcmVhdGVf c2Fsc19saW5lX29mZnNldCAoc3RydWN0IGxpbmVzcGVjX3N0YXRlDQo+ICpzZWxmLA0KPiANCj4g ICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnRlcm1lZGlhdGVfcmVzdWx0cy5zaXplICgpOyArK2kp DQo+ICAJew0KPiAtCSAgaWYgKGJsb2Nrc1tpXSAhPSBOVUxMKQ0KPiArCSAgaWYgKGJsb2Nrc1tp XSAhPSBOVUxMICYmIGZpbHRlcltpXSkNCj4gIAkgICAgZm9yIChqID0gaSArIDE7IGogPCBpbnRl cm1lZGlhdGVfcmVzdWx0cy5zaXplICgpOyArK2opDQo+ICAJICAgICAgew0KPiAtCQlpZiAoYmxv Y2tzW2pdID09IGJsb2Nrc1tpXSkNCj4gKwkJaWYgKGJsb2Nrc1tqXSA9PSBibG9ja3NbaV0gJiYg ZmlsdGVyW2pdKQ0KPiAgCQkgIHsNCj4gKwkJICAgIGNvbnN0IHN5bXRhYl9hbmRfbGluZSAmc2Fs X2kgPSBpbnRlcm1lZGlhdGVfcmVzdWx0c1tpXTsNCj4gKwkJICAgIGNvbnN0IHN5bXRhYl9hbmRf bGluZSAmc2FsX2ogPSBpbnRlcm1lZGlhdGVfcmVzdWx0c1tqXTsNCj4gKw0KPiArCQkgICAgYXV0 byBbcGNfbG8sIHBjX2hpXSA9IHN0ZDo6bWlubWF4IChzYWxfaS5wYywgc2FsX2oucGMpOw0KPiAr DQo+ICsJCSAgICAvKiBXaXRob3V0IHN5bXRhYiBpbmZvLCBkb24ndCBmaWx0ZXIgw6LigqzigJ0g d2UgY2FuJ3QgcmVsaWFibHkNCj4gKwkJICAgICAgIGRldGVybWluZSBpZiB0aGVzZSBhcmUgZGlz dGluY3QgY29kZSBwYXRocy4gICovDQo+ICsJCSAgICBpZiAoc2FsX2kuc3ltdGFiID09IG51bGxw dHIgfHwgc2FsX2ouc3ltdGFiICE9IHNhbF9pLnN5bXRhYikNCj4gKwkJICAgICAgY29udGludWU7 DQo+ICsNCj4gKwkJICAgIC8qIENoZWNrIGZvciB1bmNvbmRpdGlvbmFsIGZsb3cgY29udHJvbCBp biB0aGUgcmFuZ2UNCj4gKwkJICAgICAgIChleHRlbmRlZCBoZXVyaXN0aWM7IGNhbiBiZSBkaXNh YmxlZCkuICBNZW1vcnkgcmVhZA0KPiArCQkgICAgICAgZmFpbHVyZXMgYXJlIGhhbmRsZWQgZ3Jh Y2VmdWxseSBpbnNpZGUgdGhlIGhlbHBlci4gICovDQo+ICsJCSAgICBvYmpmaWxlICpvZmlsZSA9 IHNhbF9pLnN5bXRhYi0+Y29tcHVuaXQgKCkub2JqZmlsZSAoKTsNCj4gKwkJICAgIGdkYmFyY2gg KmdkYmFyY2ggPSBvZmlsZS0+YXJjaCAoKTsNCj4gKw0KPiArCQkgICAgaWYgKGRlYnVnX2xpbmVz cGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlcg0KPiArCQkJJiYgcmFuZ2VfaGFzX3VuY29uZGl0aW9u YWxfZmxvd19jb250cm9sIChnZGJhcmNoLA0KPiArCQkJCQkJCQkgcGNfbG8sIHBjX2hpKSkNCj4g KwkJICAgICAgY29udGludWU7DQo+ICsNCj4gIAkJICAgIGZpbHRlcltqXSA9IDA7DQo+IC0JCSAg ICBicmVhazsNCj4gIAkJICB9DQo+ICAJICAgICAgfQ0KPiAgCX0NCj4gQEAgLTQzNDMsMyArNDQx NSw3MyBAQCBnZXRfZ2RiX2xpbmVzcGVjX3BhcnNlcl9xdW90ZV9jaGFyYWN0ZXJzICh2b2lkKQ0K PiB7DQo+ICAgIHJldHVybiBsaW5lc3BlY19xdW90ZV9jaGFyYWN0ZXJzOw0KPiAgfQ0KPiArDQo+ ICsvKiBSZXR1cm4gdHJ1ZSBpZiBhcmNoaXRlY3R1cmUgaW1wbGVtZW50cyB0aGUNCj4gaW5zbl9p c19qdW1wL2luc25fYnJhbmNoX3RhcmdldA0KPiArICAgbWV0aG9kcyBmb3IgdGhlIGV4dGVuZGVk IGJsb2NrLWZpbHRlciBoZXVyaXN0aWMuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArZXh0 ZW5kZWRfYmxvY2tfZmlsdGVyX3N1cHBvcnRlZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpIHsN Cj4gKyAgcmV0dXJuIChnZGJhcmNoX2luc25faXNfanVtcF9wIChnZGJhcmNoKQ0KPiArCSAgJiYg Z2RiYXJjaF9pbnNuX2lzX3JldF9wKGdkYmFyY2gpDQo+ICsJICAmJiBnZGJhcmNoX2luc25fYnJh bmNoX3RhcmdldF9wIChnZGJhcmNoKSk7IH0NCj4gKw0KPiArLyogQ2FsbGJhY2sgZm9yICJzaG93 IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIuICBEaXN0aW5ndWlzaGVzDQo+ICsgICB0 aGUgdXNlcidzIHJlcXVlc3RlZCBzZXR0aW5nIGZyb20gd2hldGhlciBpdCBhY3R1YWxseSBoYXMg YW55DQo+ICsgICBlZmZlY3Qgb24gdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlLiAgKi8NCj4gKw0K PiArc3RhdGljIHZvaWQNCj4gK3Nob3dfZGVidWdfbGluZXNwZWNfZXh0ZW5kZWRfYmxvY2tfZmls dGVyIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwNCj4gKwkJCQkJICAgaW50IGZyb21fdHR5LA0KPiAr CQkJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywNCj4gKwkJCQkJICAgY29uc3QgY2hh ciAqdmFsdWUpDQo+ICt7DQo+ICsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gY3VycmVudF9p bmZlcmlvciAoKS0+YXJjaCAoKTsNCj4gKw0KPiArICBnZGJfcHJpbnRmIChmaWxlLA0KPiArCSAg ICAgXygiVGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgc2V0IHRvICVzICIN Cj4gKwkgICAgICAgIihhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgJXM6ICVzKS5cbiIpLA0KPiAr CSAgICAgdmFsdWUsDQo+ICsJICAgICBnZGJhcmNoX2JmZF9hcmNoX2luZm8gKGdkYmFyY2gpLT5w cmludGFibGVfbmFtZSwNCj4gKwkgICAgIGV4dGVuZGVkX2Jsb2NrX2ZpbHRlcl9zdXBwb3J0ZWQg KGdkYmFyY2gpID8gInllcyIgOiAibm8iKTsgfQ0KPiArDQo+ICsvKiBDYWxsYmFjayBmb3IgInNl dCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIiLiAgV2FybiB3aGVuDQo+ICsgICB0dXJu aW5nIHRoZSBzZXR0aW5nIG9uIGhhcyBubyBlZmZlY3QgYmVjYXVzZSB0aGUgY3VycmVudA0KPiAr ICAgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBoZXVyaXN0aWMuICAqLw0KPiAr DQo+ICtzdGF0aWMgdm9pZA0KPiArc2V0X2RlYnVnX2xpbmVzcGVjX2V4dGVuZGVkX2Jsb2NrX2Zp bHRlciAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5LA0KPiArCQkJCQkgIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjKQ0KPiArew0KPiArICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGN1cnJlbnRfaW5mZXJpb3IgKCktPmFyY2ggKCk7DQo+ICsNCj4gKyAgaWYgKGRlYnVnX2xpbmVz cGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlcg0KPiArICAgICAgJiYgIWV4dGVuZGVkX2Jsb2NrX2Zp bHRlcl9zdXBwb3J0ZWQgKGdkYmFyY2gpKQ0KPiArICAgIHdhcm5pbmcgKF8oInRoZSBleHRlbmRl ZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIG5vdCBpbXBsZW1lbnRlZCAiDQo+ICsJICAgICAg ImZvciAlczsgYnJlYWtwb2ludCBsb2NhdGlvbiByZXNvbHV0aW9uIHdpbGwga2VlcCB1c2luZyAi DQo+ICsJICAgICAgInRoZSBvcmlnaW5hbCBoZXVyaXN0aWMiKSwNCj4gKwkgICAgZ2RiYXJjaF9i ZmRfYXJjaF9pbmZvIChnZGJhcmNoKS0+cHJpbnRhYmxlX25hbWUpOyB9DQo+ICsNCj4gKy8qIFJl Z2lzdGVyIGxpbmVzcGVjIGRlYnVnZ2luZyBjb21tYW5kcy4gICovDQo+ICsNCj4gK0lOSVRfR0RC X0ZJTEUgKGxpbmVzcGVjKQ0KPiArew0KPiArICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIsDQo+ICsJCQkgICBjbGFzc19zdXBwb3J0LA0K PiArCQkJICAgJmRlYnVnX2xpbmVzcGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciwgXygiXCBTZXQN Cj4gd2hldGhlciB0aGUNCj4gK2V4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgZW5h YmxlZC4iKSwgXygiXCBTaG93IHdoZXRoZXIgdGhlDQo+ICtleHRlbmRlZCBibG9jay1maWx0ZXIg aGV1cmlzdGljIGlzIGVuYWJsZWQuIiksIF8oIlwgVGhlIGV4dGVuZGVkDQo+ICtoZXVyaXN0aWMg aW1wcm92ZXMgYnJlYWtwb2ludCBsb2NhdGlvbiByZXNvbHV0aW9uIGZvclxuXCB2ZWN0b3JpemVk DQo+ICtsb29wcyBhdCAtTzIuIFdoZW4gb2ZmLCBicmVha3BvaW50cyB1c2Ugb25seSB0aGUgb3Jp Z2luYWxcblwgaGV1cmlzdGljLA0KPiArd2hpY2ggbWF5IG1pc3MgbG9jYXRpb25zIGluIHZlY3Rv cml6ZWQgY29kZS4gT25seVxuXCBhcmNoaXRlY3R1cmVzIHRoYXQNCj4gK2ltcGxlbWVudCBnZGJh cmNoX2luc25faXNfanVtcCBvclxuXCBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldA0KPiArYWN0 dWFsbHkgYXBwbHkgdGhlIGV4dGVuZGVkIGhldXJpc3RpYztcblwgb24gb3RoZXJzIHRoaXMgc2V0 dGluZyBoYXMgbm8NCj4gK2VmZmVjdC5cblwgRGVmYXVsdCBpcyBvbi4iKSwNCg0KSSBkb24ndCB0 aGluayB0aGUgcGFydCBvZiB0aGUgY29tbWVudCBmb3IgdGhlIGdkYmFyY2ggaG9vayBpcyBjb3Jy ZWN0IGhlcmUsDQpzaW5jZSBpdCdzIGZlZWRiYWNrIGZvciB0aGUgdXNlciBub3QgdGhlIEdEQiBk ZXZlbG9wZXIuIE9yIGhhdmUgeW91IHNlZW4gc2ltaWxhcg0KZGVzY3JpcHRpb25zIGZvciBnZGJh cmNoIGhvb2tzIGluIG90aGVyIHNldHRpbmdzIGluIEdEQj8NCk1heWJlIGdkYmFyY2hfY29tcG9u ZW50cyBpcyB0aGUgYmV0dGVyIHBsYWNlIHRvIGFkZCB0aGlzLg0KDQpBbHNvLCB5b3UgbWlzcyB0 byBkZXNjcmliZSB0aGUgaG9vayBnZGJhcmNoX2luc25faXNfcmV0IGhlcmUuDQoNCj4gKwkJCSAg IHNldF9kZWJ1Z19saW5lc3BlY19leHRlbmRlZF9ibG9ja19maWx0ZXIsDQo+ICsJCQkgICBzaG93 X2RlYnVnX2xpbmVzcGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciwNCj4gKwkJCSAgICZzZXRsaXN0 LCAmc2hvd2xpc3QpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubGlu ZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMNCj4gYi9nZGIvdGVzdHN1aXRlL2dkYi5saW5lc3Bl Yy9ibG9jay1maWx0ZXItY2FzZXMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMC4uOGNmODM0ZTk1ZjQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuYw0KPiBAQCAtMCwwICsxLDEy NiBAQA0KPiArLyogVGVzdCBjYXNlcyBmb3IgdGhlIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaW4g Y3JlYXRlX3NhbHNfbGluZV9vZmZzZXQuDQo+ICsNCj4gKyAgIENvcHlyaWdodCAoQykgMjAyNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCj4gKw0KPiArICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLg0KPiArDQo+ICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiArICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4g KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yDQo+ICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0K PiArDQo+ICsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwNCj4gKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ICsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQo+ICsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiArDQo+ICsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQ0KPiArICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQo+ICsNCj4gKyAgIE9uZSBmdW5jdGlvbiBwZXIgdGVzdGVk IHBhdHRlcm4uICBUaGUgYWNjb21wYW55aW5nIC5leHAgZmlsZSB2ZXJpZmllcw0KPiArICAgdGhl IGJyZWFrcG9pbnQgbG9jYXRpb24gY291bnQgZm9yIGVhY2ggcGF0dGVybiBhbmQsIHdoZXJlIHZl Y3RvcmlzYXRpb24NCj4gKyAgIGlzIHByZXNlbnQsIGNvbmZpcm1zIHRoYXQgYm90aCB0aGUgdmVj dG9yaXplZCBhbmQgc2NhbGFyLXJlbWFpbmRlciBwYXRocw0KPiArICAgYXJlIHJlYWNoYWJsZSBh dCBydW50aW1lLg0KPiArDQo+ICsgICBhcmdjID4gMSAgLT4gIGZvcl9sb29wX3ZlY3Rvcml6ZWQg Y2FsbGVkIHdpdGggbj0xMDI0ICAodmVjdG9yaXplZCBwYXRoKQ0KPiArICAgYXJnYyA9PSAxIC0+ ICBmb3JfbG9vcF92ZWN0b3JpemVkIGNhbGxlZCB3aXRoIG49MyAgICAgKHNjYWxhciBwYXRoIG9u bHkpICAqLw0KPiArDQo+ICt2b2xhdGlsZSBpbnQgc2luazsNCj4gKw0KPiArLyogZm9yLWxvb3Ag d2l0aCBlbXB0eSBib2R5ICgtTzApLiAgRXhwZWN0ZWQ6IDEgbG9jYXRpb24uICAqLw0KPiArDQo+ ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ICtmb3JfbG9vcF9lbXB0eV9ib2R5 IChpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHt9ICAvKiBl bXB0eS1mb3ItbGluZSAqLyB9DQo+ICsNCj4gKy8qIGZvci1sb29wIHdpdGggbGFyZ2UgYm9keSAo LU8wKS4gIEV4cGVjdGVkOiAxIGxvY2F0aW9uLiAgKi8NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUpKQ0KPiArZm9yX2xvb3BfbGFyZ2VfYm9keSAodm9sYXRpbGUgaW50ICph LCB2b2xhdGlsZSBpbnQgKmIsIHZvbGF0aWxlIGludCAqYywNCj4gKwkJICAgICBpbnQgbikNCj4g K3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsgIC8qIGxhcmdlLWJvZHktZm9y LWxpbmUgKi8NCj4gKyAgICBzaW5rID0gYVtpXSAqIDMgKyBiW2ldOw0KPiArICAgIHNpbmsgPSBz aW5rIF4gKHNpbmsgPj4gNSk7DQo+ICsgICAgc2luayArPSBjW2ldICogNyAtIGFbaV07DQo+ICsg ICAgc2luayA9IChzaW5rIDw8IDMpIHwgKHNpbmsgPj4gMjkpOw0KPiArICAgIHNpbmsgKz0gYVtp XSArIGJbaV0gKyBjW2ldOw0KPiArICAgIHNpbmsgPSBzaW5rICogc2luayArIGFbaV07DQo+ICsg ICAgc2luayBePSBiW2ldICogY1tpXTsNCj4gKyAgICBzaW5rICs9IChhW2ldIHwgYltpXSkgJiBj W2ldOw0KPiArICAgIHNpbmsgPSBzaW5rIC0gYVtpXSAqIGJbaV07DQo+ICsgICAgc2luayArPSBj W2ldIF4gKGFbaV0gKyBiW2ldKTsNCj4gKyAgICBzaW5rICs9IGFbaV0gKiA1IC0gYltpXSAqIDM7 DQo+ICsgICAgc2luayBePSAoc2luayA8PCA3KSB8IChzaW5rID4+IDI1KTsNCj4gKyAgICBzaW5r ICs9IGNbaV0gKiBjW2ldICsgYVtpXTsNCj4gKyAgICBzaW5rID0gc2luayAvIChhW2ldICsgMSk7 DQo+ICsgICAgc2luayArPSBiW2ldICogYltpXSAtIGNbaV07DQo+ICsgICAgc2luayBePSBhW2ld IF4gYltpXSBeIGNbaV07DQo+ICsgICAgc2luayArPSAoYVtpXSArIGJbaV0pICogKGJbaV0gKyBj W2ldKTsNCj4gKyAgICBzaW5rID0gKHNpbmsgPj4gMykgKyBhW2ldOw0KPiArICAgIHNpbmsgKz0g Y1tpXSAqIChhW2ldIC0gYltpXSk7DQo+ICsgICAgc2luayBePSBzaW5rID4+IDE7DQo+ICsgIH0N Cj4gK30NCj4gKw0KPiArLyogVmVjdG9yaXplZCBmb3ItbG9vcCAoLU8yKS4gIEV4cGVjdGVkOiA+ PSAyIGxvY2F0aW9ucy4gICovDQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5l KSkNCj4gK2Zvcl9sb29wX3ZlY3Rvcml6ZWQgKGludCAqYXJyLCBpbnQgbikNCj4gK3sNCj4gKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ICsgICAgYXJyW2ldID0gaSAqIDM7ICAvKiB2 ZWMtbG9vcC1saW5lICovIH0NCj4gKw0KPiArLyogTmVzdGVkIHZlY3Rvcml6ZWQgZm9yLWxvb3Bz ICgtTzIpLiAgRXhwZWN0ZWQ6ID49IDIgbG9jYXRpb25zLiAgKi8NCj4gKw0KPiArdm9pZCBfX2F0 dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KPiArbmVzdGVkX3ZlY3Rvcml6ZWRfbG9vcHMgKGludCAq YXJyLCBpbnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gKyAgICBm b3IgKGludCBqID0gMDsgaiA8IG47IGorKykNCj4gKyAgICAgIGFycltpICogbiArIGpdID0gaSAq IGo7ICAvKiBuZXN0ZWQtdmVjLWxpbmUgKi8gfQ0KPiArDQo+ICsvKiBGb3ItbG9vcCB3aXRoIGVh cmx5IGJyZWFrICgtTzIpLiAgRXhwZWN0ZWQ6ID49IDIgb3IgMSBsb2NhdGlvbi4gICovDQo+ICsN Cj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gK2xvb3Bfd2l0aF9lYXJseV9i cmVhayAoaW50ICphcnIsIGludCBuLCBpbnQgdGFyZ2V0KSB7DQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgbjsgaSsrKSB7DQo+ICsgICAgYXJyW2ldID0gaSAqIDI7ICAvKiBicmVhay1sb29wLWxp bmUgKi8NCj4gKyAgICBpZiAoYXJyW2ldID09IHRhcmdldCkNCj4gKyAgICAgIGJyZWFrOw0KPiAr ICB9DQo+ICt9DQo+ICsNCj4gKy8qIElmLWVsc2Ugd2l0aCBib3RoIGJyYW5jaGVzIG9uIHNhbWUg bGluZSAoLU8wKS4gIEV4cGVjdGVkOiAyDQo+ICtsb2NhdGlvbnMuICAqLw0KPiArDQo+ICt2b2lk IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ICtpZmVsc2Vfc2VwYXJhdGVfbGluZXMgKGlu dCB4LCBpbnQgKnJlc3VsdCkgew0KPiArICBpZiAoeCA+IDApDQo+ICsgICAgKnJlc3VsdCA9IHgg KiAyOyAgZWxzZSAqcmVzdWx0ID0gLXg7ICAvKiBpZmVsc2UtbGluZSAqLyB9DQo+ICsNCj4gKw0K PiAraW50DQo+ICttYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiArew0KPiArICBpbnQg YXJyWzEwMjRdOw0KPiArICB2b2xhdGlsZSBpbnQgYVs0XSA9IHsxLCAyLCAzLCA0fTsNCj4gKyAg dm9sYXRpbGUgaW50IGJbNF0gPSB7NCwgMywgMiwgMX07DQo+ICsgIHZvbGF0aWxlIGludCBjWzRd ID0gezEsIDEsIDEsIDF9Ow0KPiArICBpbnQgcmVzdWx0ID0gMDsNCj4gKw0KPiArICBmb3JfbG9v cF9lbXB0eV9ib2R5ICg0KTsNCj4gKyAgZm9yX2xvb3BfbGFyZ2VfYm9keSAoYSwgYiwgYywgNCk7 DQo+ICsgIGZvcl9sb29wX3ZlY3Rvcml6ZWQgKGFyciwgYXJnYyA+IDEgPyAxMDI0IDogMyk7DQo+ ICsgIG5lc3RlZF92ZWN0b3JpemVkX2xvb3BzIChhcnIsIGFyZ2MgPiAxID8gMzIgOiAzKTsNCj4g KyAgbG9vcF93aXRoX2Vhcmx5X2JyZWFrIChhcnIsIGFyZ2MgPiAxID8gMTAyNCA6IDMsIDQyKTsN Cj4gKyAgaWZlbHNlX3NlcGFyYXRlX2xpbmVzIChhcmdjID4gMSA/IDEwIDogLTUsICZyZXN1bHQp Ow0KPiArDQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmV4cA0KPiBiL2dkYi90ZXN0c3VpdGUv Z2RiLmxpbmVzcGVjL2Jsb2NrLWZpbHRlci1jYXNlcy5leHANCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjM5ZjM2YWQ0YTI3DQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmV4cA0K PiBAQCAtMCwwICsxLDI5MSBAQA0KPiArIyBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICsNCj4gKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkNCj4gKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3INCj4gKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4NCj4gKyMNCj4gKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ICsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKyMNCj4gKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UNCj4gKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQo+ICsjDQo+ICsjIFZlcmlmeSB0aGUgYmxvY2stZmlsdGVy IGhldXJpc3RpYyBhZ2FpbnN0IGtub3duIHBhdHRlcm5zLiAgVGhlIGNvbXBpbGVyIGlzDQo+ICsj IHNlbGVjdGVkIGJ5IHRoZSBib2FyZCBmaWxlOyB0aGlzIHRlc3QgdXNlcyBjb25zaXN0ZW50IGV4 cGVjdGF0aW9ucyBhY3Jvc3MNCj4gKyMgY29tcGlsZXJzIChHQ0MsIElDWCwgZXRjLikuDQo+ICsN Cj4gK3N0YW5kYXJkX3Rlc3RmaWxlDQo+ICsNCj4gK2lmIHsgW2J1aWxkX2V4ZWN1dGFibGUgImZh aWxlZCB0byBwcmVwYXJlIChPMCkiIFwNCj4gKyAgICAgICIke3Rlc3RmaWxlfS1PMCIgJHtzcmNm aWxlfSB7IGRlYnVnIG9wdGltaXplPS1PMCB9XSB9IHsNCj4gKyAgICByZXR1cm4gLTENCj4gK30N Cg0KV2UgY2FuIG9taXQgdGhlIHJldHVybiB2YWx1ZXMgaGVyZSAoYWxzbyBiZWxvdyBhbmQgZnVy dGhlciBkb3duIGFmdGVyIHJ1bnRvX21haW4pLg0KDQo+ICtpZiB7IFtidWlsZF9leGVjdXRhYmxl ICJmYWlsZWQgdG8gcHJlcGFyZSAoTzIpIiBcDQo+ICsgICAgICAiJHt0ZXN0ZmlsZX0tTzIiICR7 c3JjZmlsZX0gXA0KPiArICAgICAgeyBkZWJ1ZyBvcHRpbWl6ZT0tTzIgYWRkaXRpb25hbF9mbGFn cz0tZnRyZWUtdmVjdG9yaXplIH1dIH0gew0KPiArICAgIHJldHVybiAtMQ0KPiArfQ0KPiArDQo+ ICsjIFJldHJpZXZlIGFsbCB0YXJnZXQgbGluZSBudW1iZXJzIGZyb20gdGhlIHNpbmdsZSBzaGFy ZWQgc291cmNlIGZpbGUuDQo+ICtzZXQgbGluZV9lbXB0eV9mb3IgICAgICBbZ2RiX2dldF9saW5l X251bWJlciAiZW1wdHktZm9yLWxpbmUiICR7c3JjZmlsZX1dDQo+ICtzZXQgbGluZV9sYXJnZV9i b2R5X2ZvciBbZ2RiX2dldF9saW5lX251bWJlciAibGFyZ2UtYm9keS1mb3ItbGluZSIgJHtzcmNm aWxlfV0NCj4gK3NldCBsaW5lX3ZlY19sb29wICAgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 ZWMtbG9vcC1saW5lIiAke3NyY2ZpbGV9XQ0KPiArc2V0IGxpbmVfbmVzdGVkX3ZlYyAgICAgW2dk Yl9nZXRfbGluZV9udW1iZXIgIm5lc3RlZC12ZWMtbGluZSIgJHtzcmNmaWxlfV0NCj4gK3NldCBs aW5lX2JyZWFrX2xvb3AgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1sb29wLWxpbmUi ICR7c3JjZmlsZX1dDQo+ICtzZXQgbGluZV9pZmVsc2UgICAgICAgICBbZ2RiX2dldF9saW5lX251 bWJlciAiaWZlbHNlLWxpbmUiICR7c3JjZmlsZX1dDQo+ICsNCj4gKyMgUmV0dXJuIHRydWUgaWYg dGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgYWN0dWFsbHkNCj4gKyMgaW1w bGVtZW50ZWQgZm9yIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZS4NCj4gK3Byb2MgYmxvY2tfZmls dGVyX2FyY2hfc3VwcG9ydGVkIHsgfSB7DQo+ICsgICAgZ2xvYmFsIGdkYl9wcm9tcHQNCj4gKyAg ICBzZXQgc3VwcG9ydGVkIC0xDQoNCklmIHlvdSB3b3VsZCBzZXQgc3VwcG9ydGVkIHRvIDAgaGVy ZSwgeW91IGNhbiBza2lwIG9uZSBsaW5lIGJlbG93Lg0KT3IgaWYgeW91IHdhbnQgdG8gYmUgc3Vy ZSB0aGF0IHlvdSBoaXQgb25lIG9mIHRoZSBjYXNlcyBiZWxvdyB5b3UgY2FuIGFzc2VydA0Kb24g LTEgYWZ0ZXIgZ2RiX3Rlc3RfbXVsdGlwbGUuDQoNCj4gKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAi c2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIiIFwNCj4gKwkicXVlcnkgZXh0ZW5k ZWQgYmxvY2stZmlsdGVyIGFyY2hpdGVjdHVyZSBzdXBwb3J0IiB7DQo+ICsJLXJlIC13cmFwICJh cmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgXFteXHJcblxdKzogeWVzXFwpXFwuIiB7DQo+ICsJICAg IHNldCBzdXBwb3J0ZWQgMQ0KPiArCSAgICBwYXNzICRnZGJfdGVzdF9uYW1lDQo+ICsJfQ0KPiAr CS1yZSAtd3JhcCAiYXJjaGl0ZWN0dXJlIHN1cHBvcnQgZm9yIFxbXlxyXG5cXSs6IG5vXFwpXFwu IiB7DQo+ICsJICAgIHNldCBzdXBwb3J0ZWQgMA0KPiArCSAgICBwYXNzICRnZGJfdGVzdF9uYW1l DQo+ICsJfQ0KPiArICAgIH0NCj4gKyAgICByZXR1cm4gJHN1cHBvcnRlZA0KPiArfQ0KPiArDQo+ ICsjIFR1cm4gdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgb24uDQo+ICtwcm9j IGVuYWJsZV9leHRlbmRlZF9ibG9ja19maWx0ZXIgeyBkZXNjIH0gew0KPiArICAgIGdkYl90ZXN0 ICJzZXQgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIG9uIiBcDQo+ICsJIih3YXJuaW5n OiB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBpcyBub3QgaW1wbGVtZW50ZWRc DQo+ICsJIGZvciBcW15cclxuXF0rOyBicmVha3BvaW50IGxvY2F0aW9uIHJlc29sdXRpb24gd2ls bCBrZWVwIHVzaW5nXA0KPiArCSB0aGUgb3JpZ2luYWwgaGV1cmlzdGljKT8iIFwNCj4gKwkkZGVz Yw0KPiArfQ0KPiArDQo+ICsjIFNldCBicmVha3BvaW50IGFuZCByZXR1cm4gaG93IG1hbnkgbG9j YXRpb25zIGl0IHJlc29sdmVzIHRvLg0KPiArcHJvYyBicF9ubG9jcyB7IHNyY2ZpbGUgbGluZSBk ZXNjIH0gew0KPiArICAgIHNldCBubG9jcyAtMQ0KPiArICAgIGdkYl90ZXN0X211bHRpcGxlICJi cmVhayAke3NyY2ZpbGV9OiR7bGluZX0iICRkZXNjIHsNCj4gKwktcmUgLXdyYXAgIkJyZWFrcG9p bnQgXFswLTlcXSsgYXQgLipcXCgoXFswLTlcXSspIGxvY2F0aW9uc1xcKS4qIiB7DQo+ICsJICAg IHNldCBubG9jcyAkZXhwZWN0X291dCgxLHN0cmluZykNCj4gKwkgICAgcGFzcyAkZGVzYw0KPiAr CX0NCj4gKwktcmUgLXdyYXAgIkJyZWFrcG9pbnQgXFswLTlcXSsgYXQgLioiIHsNCj4gKwkgICAg c2V0IG5sb2NzIDENCj4gKwkgICAgcGFzcyAkZGVzYw0KPiArCX0NCj4gKyAgICB9DQo+ICsgICAg cmV0dXJuICRubG9jcw0KPiArfQ0KPiArDQo+ICtjbGVhbl9yZXN0YXJ0ICIke3Rlc3RmaWxlfS1P MCINCj4gKw0KPiArIyBWZXJpZnkgdGhlIGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBz ZXR0aW5nIGV4aXN0cyBhbmQgd29ya3MuDQo+ICtnZGJfdGVzdCAic2hvdyBsaW5lc3BlYy1leHRl bmRlZC1ibG9jay1maWx0ZXIiIFwNCj4gKyAgICAiVGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBo ZXVyaXN0aWMgaXMgc2V0IHRvIG9uXA0KPiArICAgICBcXChhcmNoaXRlY3R1cmUgc3VwcG9ydCBm b3IgXFteXHJcblxdKzogKHllc3xubylcXClcXC4iIFwNCj4gKyAgICAic2hvdyBkZWZhdWx0IGxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciAob24pIg0KPiArDQo+ICtnZGJfdGVzdF9ub19v dXRwdXQgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb2ZmIiBcDQo+ICsgICAg InNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb2ZmIg0KPiArDQo+ICtnZGJfdGVz dCAic2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIiIFwNCj4gKyAgICAiVGhlIGV4 dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgc2V0IHRvIG9mZlwNCj4gKyAgICAgXFwo YXJjaGl0ZWN0dXJlIHN1cHBvcnQgZm9yIFxbXlxyXG5cXSs6ICh5ZXN8bm8pXFwpXFwuIiBcDQo+ ICsgICAgInNob3cgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIChvZmYpIg0KPiArDQo+ ICsjIFJlLWVuYWJsZTogb24gYSBzdXBwb3J0ZWQgYXJjaCB0aGlzIG11c3QgYmUgc2lsZW50OyBv biBhbiB1bnN1cHBvcnRlZA0KPiArIyBhcmNoIHByaW50cyBhbiBpbmZvcm1hdGlvbmFsIHdhcm5p bmcuDQo+ICtpZiB7IFtibG9ja19maWx0ZXJfYXJjaF9zdXBwb3J0ZWRdIH0gew0KPiArICAgIGdk Yl90ZXN0X25vX291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvbiIg XA0KPiArCSJzZXQgb24gcHJvZHVjZXMgbm8gd2FybmluZyBvbiBzdXBwb3J0ZWQgYXJjaCINCj4g K30gZWxzZSB7DQo+ICsgICAgZW5hYmxlX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciAic2V0IGxpbmVz cGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvbiINCj4gK30NCj4gKw0KPiArZ2RiX3Rlc3QgInNo b3cgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIiBcDQo+ICsgICAgIlRoZSBleHRlbmRl ZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIHNldCB0byBvblwNCj4gKyAgICAgXFwoYXJjaGl0 ZWN0dXJlIHN1cHBvcnQgZm9yIFxbXlxyXG5cXSs6ICh5ZXN8bm8pXFwpXFwuIiBcDQo+ICsgICAg InNob3cgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIHJlLWVuYWJsZWQiDQo+ICsNCj4g K3dpdGhfdGVzdF9wcmVmaXggImZvci1sb29wIGVtcHR5IGJvZHkgKC1PMCkiIHsNCj4gKyAgICBz ZXQgbmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX2VtcHR5X2Zvcn0gInNldCBicmVh a3BvaW50Il0NCj4gKw0KPiArICAgIGlmIHsgJG5sb2NzID09IDEgfSB7DQo+ICsJcGFzcyAiMSBi cmVha3BvaW50IGxvY2F0aW9uIChjb3JyZWN0KSINCj4gKyAgICB9IGVsc2Ugew0KPiArCWZhaWwg ImV4cGVjdGVkIDEgbG9jYXRpb24sIGdvdCAkbmxvY3MiDQo+ICsgICAgfQ0KPiArDQo+ICsgICAg ZGVsZXRlX2JyZWFrcG9pbnRzDQo+ICt9DQo+ICsNCj4gK3dpdGhfdGVzdF9wcmVmaXggImZvci1s b29wIGV4Y2VlZGluZyBzY2FuIGxpbWl0ICgtTzApIiB7DQo+ICsgICAgc2V0IG5sb2NzIFticF9u bG9jcyAke3NyY2ZpbGV9ICR7bGluZV9sYXJnZV9ib2R5X2Zvcn0gInNldCBicmVha3BvaW50Il0N Cj4gKw0KPiArICAgIGlmIHsgJG5sb2NzID09IDEgfSB7DQo+ICsJcGFzcyAiMSBicmVha3BvaW50 IGxvY2F0aW9uIChjb3JyZWN0KSINCj4gKyAgICB9IGVsc2Ugew0KPiArCWZhaWwgImV4cGVjdGVk IDEgbG9jYXRpb24sIGdvdCAkbmxvY3MiDQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZGVsZXRlX2Jy ZWFrcG9pbnRzDQo+ICt9DQo+ICsNCj4gK3dpdGhfdGVzdF9wcmVmaXggImlmLWVsc2Ugc2VwYXJh dGUgbGluZXMgKC1PMCkiIHsNCj4gKyAgICBzZXQgbmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0g JHtsaW5lX2lmZWxzZX0gInNldCBicmVha3BvaW50Il0NCj4gKw0KPiArICAgIGlmIHsgJG5sb2Nz IDwgMiB9IHsNCj4gKwlpZiB7IFtibG9ja19maWx0ZXJfYXJjaF9zdXBwb3J0ZWRdIH0gew0KPiAr CSAgICBmYWlsICJleHBlY3RlZCAyIGxvY2F0aW9ucywgZ290ICRubG9jcyINCj4gKwl9IGVsc2Ug ew0KPiArCSAgICB1bnN1cHBvcnRlZCAiY3VycmVudCBhcmNoIGxhY2tzIGluc25faXNfanVtcCBz dXBwb3J0XA0KPiArCQkJIGZvciB0aGUgZXh0ZW5kZWQgYmxvY2sgZmlsdGVyIg0KPiArCX0NCj4g KyAgICB9IGVsc2Ugew0KPiArCXBhc3MgIiRubG9jcyBsb2NhdGlvbnMgKGlmLWVsc2UgYnJhbmNo ZXMgb24gc2FtZSBsaW5lLCBkaWZmZXJlbnQgYmxvY2tzKSINCg0KSGVyZSB5b3UgaGF2ZSBtb3Jl IHRoYW4gODAgY29sdW1ucy4gVGhlcmUgbWlnaHQgYmUgbW9yZSBvZiB0aGlzIGluIHRoaXMgZmls ZSwgSSdsbCBqdXN0IGNvbW1lbnQgaGVyZS4NCg0KPiArICAgIH0NCj4gKw0KPiArICAgIGRlbGV0 ZV9icmVha3BvaW50cw0KPiArfQ0KPiArDQo+ICtjbGVhbl9yZXN0YXJ0ICIke3Rlc3RmaWxlfS1P MiINCj4gKw0KPiArd2l0aF90ZXN0X3ByZWZpeCAiZm9yLWxvb3AgdmVjdG9yaXplZCAoLU8yKSIg ew0KPiArICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfdmVjX2xvb3B9 ICJzZXQgYnJlYWtwb2ludCJdDQo+ICsNCj4gKyAgICBpZiB7ICRubG9jcyA8IDIgfSB7DQo+ICsJ dW5zdXBwb3J0ZWQgImNvbXBpbGVyIGRpZCBub3QgcHJvZHVjZSBtdWx0aXBsZSBsb2NhdGlvbnM7 XA0KPiArCQkgICAgIHZlY3Rvcml6YXRpb24gbWF5IG5vdCBoYXZlIGZpcmVkIg0KPiArICAgIH0g ZWxzZSB7DQo+ICsJcGFzcyAiJG5sb2NzIGxvY2F0aW9ucyBwcmVzZXJ2ZWQgKHZlY3Rvcml6ZWQg KyBzY2FsYXIgcGF0aHMpIg0KPiArICAgIH0NCj4gKw0KPiArICAgIGRlbGV0ZV9icmVha3BvaW50 cw0KPiArfQ0KPiArDQo+ICt3aXRoX3Rlc3RfcHJlZml4ICJuZXN0ZWQgdmVjdG9yaXplZCBsb29w cyAoLU8yKSIgew0KPiArICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVf bmVzdGVkX3ZlY30gInNldCBicmVha3BvaW50Il0NCj4gKw0KPiArICAgIGlmIHsgJG5sb2NzIDwg MiB9IHsNCj4gKwl1bnN1cHBvcnRlZCAiY29tcGlsZXIgZGlkIG5vdCBwcm9kdWNlIG11bHRpcGxl IGxvY2F0aW9ucztcDQo+ICsJCSAgICAgbmVzdGVkIHZlY3Rvcml6YXRpb24gbWF5IG5vdCBoYXZl IGZpcmVkIg0KPiArICAgIH0gZWxzZSB7DQo+ICsJcGFzcyAiJG5sb2NzIGxvY2F0aW9ucyBwcmVz ZXJ2ZWQgKG5lc3RlZCBwYXRocykiDQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZGVsZXRlX2JyZWFr cG9pbnRzDQo+ICt9DQo+ICsNCj4gK3dpdGhfdGVzdF9wcmVmaXggImxvb3Agd2l0aCBlYXJseSBi cmVhayAoLU8yKSIgew0KPiArICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xp bmVfYnJlYWtfbG9vcH0gInNldCBicmVha3BvaW50Il0NCj4gKw0KPiArICAgIGlmIHsgJG5sb2Nz ID49IDIgfSB7DQo+ICsJcGFzcyAiJG5sb2NzIGxvY2F0aW9ucyBwcmVzZXJ2ZWQgKG5vcm1hbCBh bmQgYnJlYWsgcGF0aHMpIg0KPiArICAgIH0gZWxzZSB7DQo+ICsJcGFzcyAiJG5sb2NzIGxvY2F0 aW9uIChicmVhayBwYXRoIG5vdCBzZXBhcmF0ZWx5IGNvbXBpbGVkKSINCj4gKyAgICB9DQo+ICsN Cj4gKyAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gK30NCj4gKw0KPiArd2l0aF90ZXN0X3ByZWZp eCAiZm9yLWxvb3AgdmVjdG9yaXplZCBydW50aW1lICgtTzIpIiB7DQo+ICsgICAgY2xlYW5fcmVz dGFydCAiJHt0ZXN0ZmlsZX0tTzIiDQo+ICsNCj4gKyAgICBzZXQgbmxvY3MgW2JwX25sb2NzICR7 c3JjZmlsZX0gJHtsaW5lX3ZlY19sb29wfSAic2V0IGJyZWFrcG9pbnQgKHByb2JlKSJdDQo+ICsg ICAgZGVsZXRlX2JyZWFrcG9pbnRzDQo+ICsNCj4gKyAgICBpZiB7ICRubG9jcyA8IDIgfSB7DQo+ ICsJdW5zdXBwb3J0ZWQgIm9ubHkgMSBsb2NhdGlvbjsgc2tpcCByZWFjaGFiaWxpdHkgdGVzdCIN Cj4gKyAgICB9IGVsc2Ugew0KPiArCXdpdGhfdGVzdF9wcmVmaXggInNjYWxhciAobj0zKSIgew0K PiArCSAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB7DQo+ICsJCXJldHVybiAtMQ0KPiArCSAgICB9 DQo+ICsNCj4gKwkgICAgZ2RiX3Rlc3QgImJyZWFrICR7c3JjZmlsZX06JHtsaW5lX3ZlY19sb29w fSIgXA0KPiArCQkiQnJlYWtwb2ludCAuKiBhdCAuKiIgXA0KPiArCQkic2V0IGJyZWFrcG9pbnQi DQo+ICsNCj4gKwkgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcDQo+ICsJCSJCcmVha3BvaW50IC4q LCBmb3JfbG9vcF92ZWN0b3JpemVkIC4qIiBcDQo+ICsJCSJoaXQgYnJlYWtwb2ludCBvbiBzY2Fs YXIgcGF0aCINCj4gKw0KPiArCSAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gKwkgICAgZ2RiX3Rl c3QgImNvbnRpbnVlIiAiLipleGl0ZWQgbm9ybWFsbHkuKiIgInByb2dyYW0gZXhpdHMgY2xlYW5s eSINCj4gKwl9DQo+ICsNCj4gKwljbGVhbl9yZXN0YXJ0ICIke3Rlc3RmaWxlfS1PMiINCj4gKwln ZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzIGZvbyIgInNldCBhcmdzIGZvciB2ZWN0b3JpemVk IHJ1biINCj4gKw0KPiArCWlmIHsgIVtydW50b19tYWluXSB9IHsNCj4gKwkgICAgcmV0dXJuIC0x DQo+ICsJfQ0KPiArDQo+ICsJd2l0aF90ZXN0X3ByZWZpeCAidmVjdG9yaXplZCAobj0xMDI0KSIg ew0KPiArCSAgICBnZGJfdGVzdCAiYnJlYWsgJHtzcmNmaWxlfToke2xpbmVfdmVjX2xvb3B9IiBc DQo+ICsJCSJCcmVha3BvaW50IC4qIGF0IC4qIiBcDQo+ICsJCSJzZXQgYnJlYWtwb2ludCINCj4g Kw0KPiArCSAgICBnZGJfdGVzdCAiY29udGludWUiIFwNCj4gKwkJIkJyZWFrcG9pbnQgLiosIGZv cl9sb29wX3ZlY3Rvcml6ZWQgLioiIFwNCj4gKwkJImhpdCBicmVha3BvaW50IG9uIHZlY3Rvcml6 ZWQgcGF0aCINCj4gKw0KPiArCSAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gKwkgICAgZ2RiX3Rl c3QgImNvbnRpbnVlIiAiLipleGl0ZWQgbm9ybWFsbHkuKiIgInByb2dyYW0gZXhpdHMgY2xlYW5s eSINCj4gKwl9DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICt3aXRoX3Rlc3RfcHJlZml4ICJzZXR0 aW5nIHRvZ2dsZSBhZmZlY3RzIHJlc29sdXRpb24iIHsNCj4gKyAgICBjbGVhbl9yZXN0YXJ0ICIk e3Rlc3RmaWxlfS1PMCINCj4gKw0KPiArICAgICMgVGVzdCB3aXRoIGV4dGVuZGVkIGZpbHRlciBP TiAoZGVmYXVsdCkuDQo+ICsgICAgZW5hYmxlX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciAiZW5hYmxl IGV4dGVuZGVkIGJsb2NrLWZpbHRlciINCj4gKw0KPiArICAgIHNldCBubG9jc19vbiBbYnBfbmxv Y3MgJHtzcmNmaWxlfSAke2xpbmVfaWZlbHNlfSBcDQo+ICsJInNldCBicmVha3BvaW50IG9uIGlm LWVsc2UgbGluZSB3aXRoIGZpbHRlciBPTiJdDQo+ICsgICAgZGVsZXRlX2JyZWFrcG9pbnRzDQo+ ICsNCj4gKyAgICBpZiB7ICRubG9jc19vbiA8IDIgfSB7DQo+ICsJaWYgeyBbYmxvY2tfZmlsdGVy X2FyY2hfc3VwcG9ydGVkXSB9IHsNCj4gKwkgICAgZmFpbCAiZXhwZWN0ZWQgMiBsb2NhdGlvbnMg d2l0aCBleHRlbmRlZCBmaWx0ZXIgT04sIGdvdCAkbmxvY3Nfb24iDQo+ICsJfSBlbHNlIHsNCj4g KwkgICAgdW5zdXBwb3J0ZWQgImN1cnJlbnQgYXJjaCBsYWNrcyBzdXBwb3J0XA0KPiArCQkJIGZv ciB0aGUgZXh0ZW5kZWQgYmxvY2sgZmlsdGVyOyBza2lwcGluZyB0b2dnbGUgY2hlY2tzIg0KPiAr CX0NCj4gKyAgICB9IGVsc2Ugew0KPiArCXBhc3MgImlmLWVsc2Ugd2l0aCBleHRlbmRlZCBmaWx0 ZXIgT046ICRubG9jc19vbiBsb2NhdGlvbnMiDQo+ICsNCj4gKwkjIFRlc3Qgd2l0aCBleHRlbmRl ZCBmaWx0ZXIgT0ZGLg0KPiArCWdkYl90ZXN0X25vX291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVu ZGVkLWJsb2NrLWZpbHRlciBvZmYiIFwNCj4gKwkgICAgImRpc2FibGUgZXh0ZW5kZWQgYmxvY2st ZmlsdGVyIg0KPiArDQo+ICsJc2V0IG5sb2NzX29mZiBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xp bmVfaWZlbHNlfSBcDQo+ICsJICAgICJzZXQgYnJlYWtwb2ludCBvbiBpZi1lbHNlIGxpbmUgd2l0 aCBmaWx0ZXIgT0ZGIl0NCj4gKwlkZWxldGVfYnJlYWtwb2ludHMNCj4gKw0KPiArCWlmIHsgJG5s b2NzX29mZiA9PSAxIH0gew0KPiArCSAgICBwYXNzICJpZi1lbHNlIHdpdGggZXh0ZW5kZWQgZmls dGVyIE9GRjogMSBsb2NhdGlvbiINCj4gKwl9IGVsc2Ugew0KPiArCSAgICBmYWlsICJleHBlY3Rl ZCAxIGxvY2F0aW9uIHdpdGggZXh0ZW5kZWQgZmlsdGVyIE9GRiwgZ290ICRubG9jc19vZmYiDQo+ ICsJfQ0KPiArDQo+ICsJIyBWZXJpZnkgdG9nZ2xpbmcgaXQgYmFjayBPTiByZXN0b3JlcyB0aGUg dHdvIGxvY2F0aW9ucy4NCj4gKwllbmFibGVfZXh0ZW5kZWRfYmxvY2tfZmlsdGVyICJyZS1lbmFi bGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIg0KPiArDQo+ICsJc2V0IG5sb2NzX29uX2FnYWluIFti cF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9pZmVsc2V9IFwNCj4gKwkgICAgInNldCBicmVha3Bv aW50IG9uIGlmLWVsc2UgbGluZSB3aXRoIGZpbHRlciByZS1lbmFibGVkIl0NCj4gKwlkZWxldGVf YnJlYWtwb2ludHMNCj4gKw0KPiArCWlmIHsgJG5sb2NzX29uX2FnYWluID09ICRubG9jc19vbiB9 IHsNCj4gKwkgICAgcGFzcyAiaWYtZWxzZSB3aXRoIGV4dGVuZGVkIGZpbHRlciByZS1lbmFibGVk OiAkbmxvY3Nfb25fYWdhaW4NCj4gbG9jYXRpb25zICh2ZXJpZmllZCkiDQo+ICsJfSBlbHNlIHsN Cj4gKwkgICAgZmFpbCAiZXhwZWN0ZWQgJG5sb2NzX29uIGxvY2F0aW9ucyBhZnRlciByZS1lbmFi bGluZywgZ290DQo+ICRubG9jc19vbl9hZ2FpbiINCj4gKwl9DQo+ICsgICAgfQ0KPiArfQ0KPiAt LQ0KPiAyLjM0LjENCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K SW50ZWwgRGV1dHNjaGxhbmQgR21iSCANCg0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIg U3RyYXNzZSAxLCA4NTYyMiBGZWxka2lyY2hlbiwgR2VybWFueSANCg0KVGVsOiArNDkgKDg5KSA5 OTE0My0wIA0KDQp3d3cuaW50ZWwuZGUgDQoNCk1hbmFnaW5nIERpcmVjdG9yczogQ2FuZGljZSBN b29yZSwgSmVmZnJleSBTY2huZWlkZXJtYW4sIFJhbWFjaGFuZHJhbiBTaXRhcmFtYW4NCg0KQ2hh aXJwZXJzb24gb2YgdGhlIFN1cGVydmlzb3J5IEJvYXJkOiBTb25qYSBQaWVyZXINCg0KUmVnaXN0 ZXJlZCBTZWF0OiBNdW5pY2ggQ29tbWVyY2lhbCBSZWdpc3RlciBCOiBBbXRzZ2VyaWNodCBNdW5p Y2ggSFJCIDE4NjkyOA0KDQpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBjb250 YWluIGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3INCnRoZSBzb2xlIHVzZSBvZiB0aGUgaW50ZW5k ZWQgcmVjaXBpZW50KHMpLiBBbnkgcmV2aWV3IG9yIGRpc3RyaWJ1dGlvbg0KYnkgb3RoZXJzIGlz IHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZA0KcmVjaXBp ZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllcy4K