Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ozsYE-0001RJ-Lr for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Nov 2022 04:48:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ozsYD-0002P4-3g for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Nov 2022 04:48:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ozsYB-0002Ol-QL for pgsql-hackers@lists.postgresql.org; Tue, 29 Nov 2022 04:48:56 +0000 Received: from esa17.fujitsucc.c3s2.iphmx.com ([216.71.158.34]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ozsY3-0007RU-3r for pgsql-hackers@lists.postgresql.org; Tue, 29 Nov 2022 04:48:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1669697327; x=1701233327; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=6/ztJsyRGxQrW0TU6SyMr8oadyMdMBWEL1XrJ6ZKyJI=; b=waGEjqBHiaes25tWDKeDf35t/8jtLi2FfUGz+bXyJd3A7yuWZ3BH+5IF 0xbX1NKrKN1xrlSspb8Le7lFZfpIkXf8WTUqTduoKpkL63P7bOH8oOt4D oZCk5rNE2A0R9rzteCeFAMbq+vjGPZ8DYFHgF6H5wR+mFb7/KXZ/JAChK zmESBEqccSPiNOFI0tweI0bChT5iuFqVP+SaBLfWqW9g4+aimW9/n8bjg Blff3h+3JhnPa23EqLeaKNOG9rUvXDG+Ut5EgvnPYR0h+Khn1x0jpj9I4 ONvwsp2LQPW1I/DSYzbcK8BfY63LNXtQP04FonrY+D2QHtYDD0+tU1WJm Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10545"; a="71041172" X-IronPort-AV: E=Sophos;i="5.96,202,1665414000"; d="scan'208,223";a="71041172" Received: from mail-os0jpn01lp2113.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.113]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Nov 2022 13:48:42 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SuTzc510DRc0p5wZcELijsyuXEWrz26RPHrQ9uG2Eg63f4Bz1ErP8Y2dtXx3JwmkkHeVUWUXR7a1MPYSuCzHezl/2Ppba8NKZ2joTDzupu55waJwGt2QeTQesAzpgNSSR2uZ4psHy94/AcJnW63BukP6fkitsPDKOOIT03zGhEbU/sJPz+40Ircfjql55onx+eaYXjF1KfXgNSNBAIBiRO1qOGE9LTaoZcy9nkFtsdj9K03ni8TbK68/9vqaXC6x2Z5V1TXL+ObHLE+F7NXO1Xy4oAxfDH2nd64JcrZAenLKgVSfgPFMaYot4lAfotKKQYQFpU5ib5re0sAp2S+DKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=1fqoKUtgvM+W3PezaIOgfUTK/l5k6XJpxe754a2DzhM=; b=nrk8SIuwqwG8gnrFCivWCiCT/xEiIp2n8CuwWOCS18sp9BuJYWwTaFXmCk7GuCeHPifckGvDL/DqJT31bbNr1dPAC1sAc++NC6AW8VvZGGx2lZUrfarfzUH+s2AiiW6SDEIB4nFVV/l3O84ujr2tCnfF3Y7CrNgElf9ZJduG9cMwBaX9un9PSPoHOQ0XWuqY0YATS+dwhiM6gciQqrIYgDnzNAhwZWdAOrFBaXe2fFrkZJ99dWCsBEpXtiT8ay7Do8nPtygtbLAYVkbE7zhxGJ0HUQZjG7v6OM6Xp25Hb+GzpyaVXtOrtW7aBDKjcCR24wqj86EJ0ySvczDLHyYxOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS3PR01MB8793.jpnprd01.prod.outlook.com (2603:1096:604:153::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.23; Tue, 29 Nov 2022 04:48:28 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::89a3:459e:492:7bcc]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::89a3:459e:492:7bcc%8]) with mapi id 15.20.5857.023; Tue, 29 Nov 2022 04:48:28 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEIACxK+AgAIepYCAAy1b4IAA8x6ggAJYuYCABaCt0IACJjmAgAED94A= Date: Tue, 29 Nov 2022 04:48:28 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MThkYzhlMTItMTk3MS00YzJkLWJkMGQtNjRhM2E1ZWJk?= =?utf-8?B?NDY0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMS0yOVQwMzo1NjoyNlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|OS3PR01MB8793:EE_ x-ms-office365-filtering-correlation-id: e9fb2933-bffc-4231-abe4-08dad1c4f502 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: elp5/aGRp5QX9eMNCFWQy6bAwAP4ULkFAHn7sGGtM2WghYjZC2KocOJMqthf0Vbi5Ud60i6reMuTb+6Xk3evWhFd5rbciQirWrk2VjxzN1nU95NSVBAY6hXFI3EZFRE2mlkQvs6QsapmiGgf+e1JcDa1vexKKA+KPLCUCjDiGBRHKcHbsz3w0iv/EJ8yKS5G6YuV7GI6fFqujCD2ydjRmqtA2c6QgUg/EOw5KtByfZOIbHcyH/mtglfuQbApgF54ik6GNRCWGEMoY+6bRoRdWB1WTY78B2noburPpDy4sFq9gxR4ng+UEe40MYJfMwF6U7dyElYdkl5McEO3X933xoy+W7aMg1NJwsLEuQU1pn7wvoYZUgbZox5390qbLJ61+J9iHs3u8RDvqcDdWfPbadMYEiM3J0qLvK5DqfxggphTrpWAd3YUoDnRyJyarXOVqenb3weMORWoGCMNKzdylyRM/8U/tfCjbpbi24x1ygkxptmnR4iy1ayKyYpJ4mor+Ti8ClbZybm2tC/wfFG6cOahr/+eBUxlJCMktvEe1Yit1TIfE0LhR+oYvHZhQBw8oPnj4NwYzgGhRODpJEgr8QdvJOrfyGmTIVT33Yh8nKAOXzb7jqaCbPYJ3r5Z8Rc8Jh41z266IEELcF1RTQ/57/tNjEYb35UK29yeRX1fEmeyLqIHfReCcxNcudCuTm2WZWyvMYU9C02UPkRlCriJ1PByG3M2bNahjyRiw8gwVJ4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(376002)(366004)(346002)(396003)(1590799012)(451199015)(1580799009)(2906002)(66946007)(4326008)(41300700001)(85182001)(66476007)(6916009)(66556008)(186003)(54906003)(64756008)(8676002)(316002)(52536014)(8936002)(76116006)(71200400001)(5660300002)(33656002)(26005)(86362001)(66446008)(7696005)(478600001)(53546011)(6506007)(9686003)(83380400001)(38100700002)(122000001)(82960400001)(55016003)(99936003)(38070700005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YmYwVjJPNkJIdVpCN3RwelI5L0ZuZjBSNHB2Y292OU1ZeVFTMEc2SEl1U3VW?= =?utf-8?B?RldwTlJDZE40blBPVEZoN0NaME9ZNnRtbHdMT1RuUnR3c3ZCVmNWdVFMMjVt?= =?utf-8?B?OHowVExqTWtaRVN1TXJpbXhMM2dRVlFiSUpLcXZtcVI3RjBKanlrbUZneW9Z?= =?utf-8?B?OXM4VTNIQXVOKzVHczFRS1hqa0JCNWRsS0ZXM0MzbHdGYnJIQ0FVcVdVVWtn?= =?utf-8?B?OWdodkJWK0NyTlBlUzA5bWdVUHFoekUxUHU5ODUwVkRiNlg3dkJjWURpcVVp?= =?utf-8?B?cW90Njl6K3haTlJFN0dnemNkYWNTQ1JhMERsWHFjNVZTa0RUZERoUWRpNmpI?= =?utf-8?B?RXg4MXVyYUhoZ0pEblhVVjVUYURMcmgzTWEzOEVuRlVpVHk5R2NsbzhGZmRH?= =?utf-8?B?NVJpd2xxZjBzM2V6aC9rcTVIUDZEKzByZS9JSDFVRWtoYWtiTDl2bDZDekk0?= =?utf-8?B?Rk4vaVRQakppOXgyU1VmeFo4ME9FN3I4VmxVcmJlWmtRUXRrNjJ2THNFT013?= =?utf-8?B?Q1NuMllIZzFSelh3K0RpTmhjZFhvbWpBbGxDZkRCMThDZ1Z5eUt3MzZKU1Ro?= =?utf-8?B?eENTRHBHZDJ4S3VlbUpwN3JsL0dxbERKYkt1Q2FwRVNzTG91NmNqMGlPY1M2?= =?utf-8?B?bWxMa1FXV3JTbi9Vd1dVMnlieHpSSGY5WXp2SjF3SFFaQlRTNjFPL2EyMnBq?= =?utf-8?B?a3NFV1NzNnQ3UjIvMFVtaXlsemxla3dReERPN3pwNHZyRGVLMkRkSld4VW5z?= =?utf-8?B?eFIybVg4WkNHdDBnRkNhbDJsNExYdnNlVW1vS0VIWnVQcFRHRVNpQmtUeWZy?= =?utf-8?B?ajJ0QkhISncwRUI3TEttaWJnNGJVYTZHODEyeWQvV1J0aDNkZ0hhYjBkc3Ur?= =?utf-8?B?MUJyWEMySkVLeEVENksvSDhQbjAyb3VTMEptZ3laRmZORWR1SWQ0S2lndFAr?= =?utf-8?B?dFB1dUtIb3FEWHk0MGVGMjZ2NVVPMjlWUXVHd3RJZTlSOGtnWDFkaDIxaTNi?= =?utf-8?B?NEhmZ0Zoak9sajNWWERkTFJTclRnRVI1WEc5a1JZNERQS1B3WERRMVFVMDVK?= =?utf-8?B?VHJuUTV0S0w0Nkh3T0NOMTYwTE9iZzd0QlE4QmhKRkNERzNyL2NkTzE5c1pE?= =?utf-8?B?Wnp2cThDVXNuQ2JGd1gzWnhmdHZJRHBhSU1xZ3Y5VHp2QTZGeDU5eE11ZDBX?= =?utf-8?B?MEp4Q2orUHNrRHpnR1h0T1ZzVFFscndWK1dPbkw4OUFZNUMzSWFncDBYbXl0?= =?utf-8?B?VTBYeDYvaUttcXRWOE85TXRXejhRbm5BS2dDdUtNQnBZbG56d095ZXcrSUpz?= =?utf-8?B?RGJpT3pvTUFpbUFCVlJQYXFTNFZJSGJ1YzRRd1VkN05iSnpVRmI0d0lLNEpw?= =?utf-8?B?bzJ6b010elRtbzFnOFRiczBJcDNzbU82U1ROY1psc3crVzZpRUpEUm4yV3Nj?= =?utf-8?B?aWpLWCs0Z1d2RGNVSGpVQmMxVFF0Q05ROGhWREgyUnZ5NFZESng5dm1RSE45?= =?utf-8?B?YzVwbVFDV28yd29kY0d6K3VhcGkxNUs4eGxBOWZZT2dXcnJXQjZBSFVGeGJL?= =?utf-8?B?TmNYeTY4RHRqNlNqcWplOFVjZitOLzBQU3lWRDhIRWNlTGJ4amNiL1NMdmRy?= =?utf-8?B?alBCRG1Xc2dBYjllWWJZRlJITTh0WkVDL2dTT1hNdTc5YSs4RXFnZjNMaHNP?= =?utf-8?B?OVE2czZmZC9XWlNsSnJ1Y1V3M0tNOUF0bHREZklZWUhhN1VGRU8wYWw1K0tv?= =?utf-8?B?N09mYUg3bnBmRjBBVVJoY1RQdzFGd1haWDVLbEVBZEpIVk5keXlwM1oxNE0w?= =?utf-8?B?Nk9XUm56dERsb3E1eGlZdXFreGdqbmlmeDJHMUtLYmZmRWxVU2p3ZURFaTA1?= =?utf-8?B?UGlHbFJsWXE2bFlDd1FhNW5mcDdQTDJDd1JlOVRZazVidkxoOFdNZW1KblZG?= =?utf-8?B?aGEvSVkwMFhkQnlSZnBJWk1vYjBqdzc1L2wycG00V2dGUUoyVnExbjF3RVc5?= =?utf-8?B?VWVRZ1BzamdLZFU0OS9hNWNMdHhNOGtyVkdRSXRUL0ZZRW82Q0hkYkdKZmtm?= =?utf-8?B?YlVqYlY5SWEzcHRSWWdCNmFUZ2pGUWF4TnB1MjRlRHBSWTl0eG1xRXlZMWFu?= =?utf-8?Q?x3mURTJYcxxv+4/bNcXGQ7rTg?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FY0Ujlf6DWQhHKuJyDZRjePMCbrgH720BW8Pi8kUhvzqIdQuzuZyD/r9DLfI0JnNwOGLCudNrB7xihK5g9HxW2egKgNEXDO/2UiHMz6Fr5rPaSwMcBinalM056bJ4w0ZW70yckRAPJV5zKXngwdXG7Ea8b9L14Om2tR4y9F4Z7/YkjfZyp4ghFASviVQSTBhAskmQHskKwSLivVx779rAXT45uixoQa/ChvjmsroVIZuRU6oSctTOufoipjvGg1zBUYu/qRHe9JYrJ4cOOk9W6k4A39w/2BpWJ7lnt/w4VJjYUfTwuMHS0EAkswtBcgbT5/vgq7K9dXZQl0TmF6eTLvGHAwo9vY8Kd/jbp5Gz0CavTDnqHvixAjoTPLGRsR/6gosqnJKVE0cojEDgH+Yi9EKzZjDrUIUYFRFIApruLeSfMvHRCV3XYITC3jImEsQt44fnwI/8NvN9DOccqqvAfMOo0A/6bQzfiyXjcXKwlk3Pg0oSlLuju/gleKhVzwyl7MZbQWPmuwLepoeyTNM8jakSZVyJyygAZ4osnxK2QwvyCbWUFo7lJVvt3bHN8DDjj7/TFZDDUSE/T8xUCkyhm7nUG58h39wijRwCa1eE1qOxtn18OXawi8h2MDdigSyC1cpv0Ti/ID0Ho9cZBUFRB6eXBI0FiVID05DZt+BHCrWg9lh0Au0DGE1KbONVGyEqPJXbsEXHt+fTr19SnGzL0CC6tbOb3Juk7cFh9fSpMebvuzju3tlTBCwK6at/HAnTbS7uJVKsHwplBo6vdortrk9ZzEvWPFzz03SjCdwJcYS7/fWBq8ch3r7a2SlOKlVNaNt1anCkzW4U3jw3U4Ozo47FutT/fYxOJ1BN72NF5p6jednuKLnRHZlawbW5dbgUMcn77mf7liK2n/7hG0awg== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9fb2933-bffc-4231-abe4-08dad1c4f502 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2022 04:48:28.0578 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Udjvhj9BDFQV6kBT63U76gwyA7nTXc2xwY5Ni3SNkSK3hbg+3oU12k9eDAhb4LYdynoDB125RoT4EFBIpWklsQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8793 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gTW9uLCBOb3ZlbWJlciAyOCwgMjAyMiAyMDoyNiBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBp bGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiBPbiBTdW4sIE5vdiAyNywgMjAyMiBhdCA5OjQzIEFN IGhvdXpqLmZuc3RAZnVqaXRzdS5jb20gDQo+IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPiB3cm90 ZToNCj4gPg0KPiA+IEF0dGFjaCB0aGUgbmV3IHZlcnNpb24gcGF0Y2ggd2hpY2ggYWRkcmVzc2Vk IGFsbCBjb21tZW50cyBzbyBmYXIuDQo+ID4NCj4gDQo+IEZldyBjb21tZW50cyBvbiB2NTItMDAw MSoNCj4gPT09PT09PT09PT09PT09PT09PT09PT09DQo+IDEuDQo+IHBhX2ZyZWVfd29ya2VyKCkN Cj4gew0KPiAuLi4NCj4gKyAvKiBGcmVlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gaWYgdGhlIHdv cmtlciBleGl0ZWQgY2xlYW5seS4gKi8gaWYgDQo+ICsgKCF3aW5mby0+ZXJyb3JfbXFfaGFuZGxl KSB7IHBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOw0KPiArDQo+ICsgaWYgKHdpbmZvLT5pbl91 c2UgJiYNCj4gKyAhaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBI QVNIX1JFTU9WRSwgTlVMTCkpIA0KPiArIGVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRl ZCIpOw0KPiANCj4gcGFfZnJlZV93b3JrZXJfaW5mbygpIHBmcmVlcyB0aGUgd2luZm8sIHNvIGhv dyBpcyBpdCBsZWdhbCB0bw0KPiB3aW5mby0+aW5fdXNlIGluIHRoZSBhYm92ZSBjaGVjaz8NCj4g DQo+IEFsc28sIHdoeSBpcyB0aGlzIGNoZWNrICghd2luZm8tPmVycm9yX21xX2hhbmRsZSkgcmVx dWlyZWQgaW4gdGhlIA0KPiBmaXJzdCBwbGFjZSBpbiB0aGUgcGF0Y2g/IFRoZSB3b3JrZXIgZXhp dHMgY2xlYW5seSBvbmx5IHdoZW4gdGhlIA0KPiBsZWFkZXIgYXBwbHkgd29ya2VyIHNlbmRzIGEg U0lHSU5UIHNpZ25hbCBhbmQgaW4gdGhhdCBjYXNlLCB3ZSBhbHJlYWR5IA0KPiBkZXRhY2ggZnJv bSB0aGUgZXJyb3IgcXVldWUgYW5kIGNsZWFuIHVwIG90aGVyIHdvcmtlciBpbmZvcm1hdGlvbi4N Cg0KSXQgd2FzIGludGVuZGVkIGZvciB0aGUgY2FzZSB3aGVuIGEgdXNlciBzZW5kIGEgc2lnbmFs LCBidXQgaXQgc2VlbXMgbm90IHN0YW5kYXJkIHdheSB0byBkbyB0aGF0Lg0KU28sIEkgcmVtb3Zl ZCB0aGlzIGNoZWNrICghd2luZm8tPmVycm9yX21xX2hhbmRsZSkuDQoNCj4gMi4NCj4gK0hhbmRs ZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQ0KPiArew0KPiAuLi4NCj4gLi4uDQo+ICsgZm9y ZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KSB7IHNobV9tcV9yZXN1bHQgcmVzOyBT aXplIA0KPiArIG5ieXRlczsNCj4gKyB2b2lkICAgICpkYXRhOw0KPiArIFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSANCj4gKyBsZmly c3QobGMpOw0KPiArDQo+ICsgaWYgKCF3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQ0KPiArIGNvbnRp bnVlOw0KPiANCj4gU2ltaWxhciB0byB0aGUgcHJldmlvdXMgY29tbWVudCwgaXQgaXMgbm90IGNs ZWFyIHdoZXRoZXIgd2UgbmVlZCB0aGlzIA0KPiBjaGVjay4gSWYgcmVxdWlyZWQsIGNhbiB3ZSBh ZGQgYSBjb21tZW50IHRvIGluZGljYXRlIHRoZSBjYXNlIHdoZXJlIGl0IA0KPiBoYXBwZW5zIHRv IGJlIHRydWU/DQo+IE5vdGUsIHRoZXJlIGlzIGEgc2ltaWxhciBjaGVjayBmb3Igd2luZm8tPmVy cm9yX21xX2hhbmRsZSBpbiANCj4gcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZSgpLiBQbGVhc2UgYWRk IHNvbWUgY29tbWVudHMgaWYgdGhhdCBpcyANCj4gcmVxdWlyZWQuDQoNClJlbW92ZWQgdGhpcyBj aGVjayBpbiB0aGVzZSB0d28gZnVuY3Rpb25zLg0KDQo+IDMuIFdoeSBpcyB0aGVyZSBhcHBseV93 b3JrZXJfY2xlYW5fZXhpdCgpIGF0IHRoZSBlbmQgb2YgDQo+IFBhcmFsbGVsQXBwbHlXb3JrZXJN YWluKCk/IE5vcm1hbGx5IGVpdGhlciB0aGUgbGVhZGVyIHdvcmtlciBzdG9wcyANCj4gcGFyYWxs ZWwgYXBwbHksIG9yIHBhcmFsbGVsIGFwcGx5IGdldHMgc3RvcHBlZCBiZWNhdXNlIG9mIGEgcGFy YW1ldGVyIA0KPiBjaGFuZ2UsIG9yIGV4aXRzIGJlY2F1c2Ugb2YgZXJyb3IsIGFuZCBpbiBub25l IG9mIHRob3NlIGNhc2VzIGl0IGNhbiANCj4gaGl0IHRoaXMgY29kZSBwYXRoIHVubGVzcyBJIGFt IG1pc3Npbmcgc29tZXRoaW5nLg0KPiANCj4gQWRkaXRpb25hbGx5LCBJIHRoaW5rIGluIExvZ2lj YWxQYXJhbGxlbEFwcGx5TG9vcCwgd2Ugd2lsbCBuZXZlciANCj4gcmVjZWl2ZSB6ZXJvLWxlbmd0 aCBtZXNzYWdlcyBzbyB0aGF0IGlzIGFsc28gd3JvbmcgYW5kIHNob3VsZCBiZSANCj4gY29udmVy dGVkIHRvIGVsb2coRVJST1IsLi4pLg0KDQpBZ3JlZWQgYW5kIGNoYW5nZWQuIA0KDQo+IDQuIEkg dGhpbmsgaW4gbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKCksIHdlIHNob3VsZCBkZXRhY2ggZnJv bSB0aGUgDQo+IHNobSBlcnJvciBxdWV1ZSBzbyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd29uJ3QgdHJ5IHRvIHNlbmQgYSANCj4gdGVybWluYXRpb24gbWVzc2FnZSBiYWNrIHRvIHRo ZSBsZWFkZXIgd29ya2VyLg0KDQpBZ3JlZWQgYW5kIGNoYW5nZWQuDQoNCj4gNS4NCj4gcGFfc2Vu ZF9kYXRhKCkNCj4gew0KPiAuLi4NCj4gKyBpZiAoc3RhcnRUaW1lID09IDApDQo+ICsgc3RhcnRU aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOw0KPiAuLi4NCj4gDQo+IFdoYXQgaXMgdGhlIHVz ZSBvZiBnZXR0aW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcCBiZWZvcmUgd2FpdGxhdGNoIA0KPiBs b2dpYywgaWYgaXQgaXMgbm90IHVzZWQgYmVmb3JlIHRoYXQ/IEl0IHNlZW1zIHRoYXQgaXMgZm9y IHRoZSB0aW1lIA0KPiBsb2dpYyB0byBsb29rIGNvcnJlY3QuIFdlIGNhbiBwcm9iYWJseSByZWR1 Y2UgdGhlIDEwcyBpbnRlcnZhbCB0byA5cyANCj4gZm9yIHRoYXQuDQoNCkNoYW5nZWQuDQoNCj4g SW4gdGhpcyBmdW5jdGlvbiwgd2UgbmVlZCB0byBhZGQgc29tZSBjb21tZW50cyB0byBpbmRpY2F0 ZSB3aHkgdGhlIA0KPiBjdXJyZW50IGxvZ2ljIGlzIHVzZWQsIGFuZCBhbHNvIHByb2JhYmx5IHdl IGNhbiByZWZlciB0byB0aGUgY29tbWVudHMgDQo+IGF0b3AgdGhpcyBmaWxlLg0KDQpBZGRlZCBz b21lIGNvbW1lbnRzLg0KDQo+IDYuIEkgdGhpbmsgaXQgd2lsbCBiZSBiZXR0ZXIgaWYgd2Uga2Vl cCBzdHJlYW1fYXBwbHlfd29ya2VyIGxvY2FsIHRvIA0KPiBhcHBseXBhcmFsbGVsd29ya2VyLmMg YnkgZXhwb3NpbmcgZnVuY3Rpb25zIHRvIGNhY2hlL3Jlc2V0dGluZyB0aGUgDQo+IHJlcXVpcmVk IGluZm8uDQoNCkFncmVlLiBBZGRlZCBhIG5ldyBmdW5jdGlvbiB0byBzZXQgdGhlIHN0cmVhbV9h cHBseV93b3JrZXIuDQoNCj4gNy4gQXBhcnQgZnJvbSB0aGUgYWJvdmUsIEkgaGF2ZSBtYWRlIGEg ZmV3IGNoYW5nZXMgaW4gdGhlIGNvbW1lbnRzIGFuZCANCj4gc29tZSBtaXNjZWxsYW5lb3VzIGNv c21ldGljIGNoYW5nZXMgaW4gdGhlIGF0dGFjaGVkLiBLaW5kbHkgaW5jbHVkZSANCj4gdGhlc2Ug aW4gdGhlIG5leHQgdmVyc2lvbiB1bmxlc3MgeW91IHNlZSBhIHByb2JsZW0gd2l0aCBhbnkgY2hh bmdlLg0KDQpUaGFua3MsIEkgaGF2ZSBjaGVja2VkIGFuZCBtZXJnZSB0aGVtLg0KDQpBdHRhY2gg dGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHdoaWNoIGFkZHJlc3NlZCBhbGwgY29tbWVudHMuDQoNCkJl c3QgcmVnYXJkcywNCkhvdSB6ag0K --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v53-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v53-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v53-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8902; creation-date="Tue, 29 Nov 2022 04:12:32 GMT"; modification-date="Tue, 29 Nov 2022 04:48:22 GMT" Content-Transfer-Encoding: base64 RnJvbSBmMWI0NDU4ZGJhZTQ1Y2M3ZTNkZmY2Zjc3NDU2ZDk2MTc2ZWVlMmUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djUzIDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAgMyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDMgaW5z ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNzQ4NzQz NC4uM2JjMmJhNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0zMTg5LDExICszMTg5LDIyIEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmFwcGx5X2xlYWRlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRl Z2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJ RCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgYXBwbHkK KyAgICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVy IGFwcGx5IHdvcmtlciBvciBhCisgICAgICAgc3luY2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0 aW9uIHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJvbml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAg ICBtYWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAK QEAgLTMyMDMsNyArMzIxNCw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBy ZWNlaXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YKLSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAK KyAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIxMiw3ICsz MjIzLDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdf c3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFz dF9tc2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6 b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAg U2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVy OyBudWxsIGZvciB0aGUKKyAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIyMSw3ICszMjMzLDggQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVz c2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZv cgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApAQCAtMzIzMCw3ICszMjQzLDggQEAgU0VMRUNUIHBpZCwgd2FpdF9l dmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2 ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGF0ZXN0X2VuZF9sc248L3N0cnVjdGZpZWxkPiA8 dHlwZT5wZ19sc248L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBM YXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIExhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwgc2VuZGVyOyBudWxsIGZvcgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzI0MCw3ICszMjU0LDcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgog ICAgICAgIFRpbWUgb2YgbGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8g b3JpZ2luIFdBTAotICAgICAgIHNlbmRlcgorICAgICAgIHNlbmRlcjsgbnVsbCBmb3IgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog ICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggYzJjN2Q4 YS4uZjI4MjU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ5LDYg Kzk0OSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAg ICBzdS5vaWQgQVMgc3ViaWQsCiAgICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAg c3QucGlkLAorICAgICAgICAgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICAgICAgICAgIHN0 LnJlbGlkLAogICAgICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFz dF9tc2dfc2VuZF90aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCmluZGV4IDk1MDM2YzUuLjhiZTIzZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEwNzcsNyArMTA3Nyw3IEBAIElzTG9naWNhbExhdW5jaGVy KHZvaWQpCiBEYXR1bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdf U1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxM KDApID8gSW52YWxpZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5T ZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBA IC0xMTAzLDEwICsxMTAzLDYgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQp CiAJCQljb250aW51ZTsKIAotCQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKi8KLQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKLQkJCWNvbnRp bnVlOwotCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9 IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKQEAgLTExMTUsMjYgKzExMTEsMzIgQEAg cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51 bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3JrZXJfcGlkKTsK LQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKworCQlpZiAod29y a2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gSW52YWxpZFBpZCkKIAkJCW51bGxzWzNdID0gdHJ1ZTsK IAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKLQkJ aWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50MzJHZXRE YXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFs dWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOwotCQlp ZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1ZXNbNF0gPSBMU05HZXREYXR1 bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCiAJ CQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0 RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo d29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdv cmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkK IAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzZdID0gTFNOR2V0RGF0dW0o d29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJdmFs dWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOworCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKIAkJCW51bGxzWzddID0g dHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIu cmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNu KTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQludWxsc1s4XSA9IHRydWU7CisJ CWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3Rp bWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8t PnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggZjkzMDFiMi4uNmQxNzA1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDI2 LDkgKzU0MjYsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nLCBw cm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ICd0Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4g J3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne29p ZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1l c3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvfScsCi0gIHBy b2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJlY2VpdmVkX2xzbixsYXN0X21z Z19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVzdF9l bmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQsaW50NCxw Z19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCisgIHBy b2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlkLHJlY2VpdmVkX2xzbixsYXN0 X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVz dF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicgfSwK IHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFja2VuZCBQ SUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAz N2MxYzg2Li4wZTBiNWIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5 NCw2ICsyMDk0LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRfc3Vic2Ny aXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAgICAgc3Qu cGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAgc3QucmVj ZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIxMDEsNyArMjEwMiw3 IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN0 LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAocGdfc3Vi c2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVM TDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBhcHBseV9s ZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVj ZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1Ymlk ID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHN8IFNFTEVDVCBzcy5zdWJp ZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3JfY291bnQsCi0tIAoyLjcuMi53 aW5kb3dzLjEKCg== --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v53-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v53-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v53-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=193989; creation-date="Tue, 29 Nov 2022 04:12:32 GMT"; modification-date="Tue, 29 Nov 2022 04:48:23 GMT" Content-Transfer-Encoding: base64 RnJvbSBkZmExNWQ4NDI1ODZmOGM0YzliZDlmNmYxZDA3OWNjMzMxMTZiNzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY1MyAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyMSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICAgICAgICB8ICAgNjYgKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgICAgICAgICAgICAgICAgIHwgICAgNSArLQogLi4u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgICAgICAgfCAgICA2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICAgICB8ICAg IDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAg fCAxMzgxICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jICAgICAgICAgICB8ICAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgICAgIHwgIDIyNSArKystCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAgICAgfCAgIDI2ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAxMCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAg IDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAg ICB8IDEwMzcgKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG1nci5jICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICAgICB8ICAgIDEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA2ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAg ICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o ICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCAgICAgICAgICAgICB8ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vcmlnaW4uaCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgICAgfCAgICA3ICstCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAgIHwgIDE2MSAr Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTcgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0ICAgICAgICAgfCAgIDQ2ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRp b24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiA1MCBmaWxlcyBjaGFuZ2VkLCAzMDg2 IGluc2VydGlvbnMoKyksIDM0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKaW5kZXggOWVkMmIwMi4uMTMwMzYxZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MDMsMTEg Kzc5MDMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJv Z3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxl IHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRl cmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2Vz IG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0 IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBw dWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRp cmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxl IChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggODJkZjg5Yi4uNDY0ZGRkYyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtNDkzNCw3ICs0OTM0LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0g bnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAg ICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJz LgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywg YW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFy YT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFy ZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5NzQsNiArNDk3NSwzMSBAQCBB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13 b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdl cjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcwor ICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Ig c3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8 L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQor ICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1l Pi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAg PGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZl ciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9z ZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggZjg3NTYzOC4u ZjM2NjcxMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDk3LDYg KzE0OTcsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRl IGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAg IGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFt aW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBv ZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNl LCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRv IDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAg Y2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBm YWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4g Rm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxp bmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9O IC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAog IDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTY3OCw3 ICsxNjg4LDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEg ZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZl CiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJv bml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBh ZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4K KyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25h bCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTc4NCw4ICsxNzk1LDEyIEBA IENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g InBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJlciwgcGx1cyBzb21l IHJlc2VydmUgZm9yIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJuYW1lPm1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0 CiAgICB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMgc29tZSByZXNlcnZl IGZvciB0aGUgdGFibGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9uYWxseSB0aGUgPHZh cm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkgbmVlZCB0byBiZSBh ZGp1c3RlZCB0byBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QK KyAgIHN5bmNocm9uaXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgPGxpdGVy YWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9s aXRlcmFsPiwKKyAgIDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L2xp dGVyYWw+IHNob3VsZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0aGUgZGVzaXJlZCBu dW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxseSB0aGUKKyAgIDx2 YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVlZCB0byBiZSBhZGp1 c3RlZCB0bworICAgYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGF0IGxlYXN0 CiAgICAoPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4K ICAgICsgPGxpdGVyYWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUgZXh0ZW5zaW9ucyBh bmQgcGFyYWxsZWwgcXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90cyBmcm9tIDx2YXJu YW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4 IDU1NzliOGIuLjc0ODc0MzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMTg1MSw2ICsxODUxLDEx IEBAIHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAg IDExOjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1 aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGEgbG9jayBvbiBhIHJlbW90ZSB0 cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBhIGxvZ2ljYWwgcmVwbGljYXRpb24g c3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5XYWl0aW5n IHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApp bmRleCA1ZmRkNDI5Li5jNmEwZTgwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMzEwMiw3ICszMTAyLDcg QEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJ RllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgUHJvdG9j b2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRlcmFsPjE8L2xpdGVyYWw+LCA8bGl0 ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1 cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPjQ8L2xp dGVyYWw+IGFyZSBzdXBwb3J0ZWQuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBWZXJzaW9uIDxsaXRlcmFsPjI8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2 ZXIgdmVyc2lvbiAxNApAQCAtMzExMiw2ICszMTEyLDExIEBAIHBzcWwgImRibmFtZT1wb3N0Z3Jl cyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgVmVy c2lvbiA8bGl0ZXJhbD4zPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZl cnNpb24gMTUKICAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtaW5nIG9mIHR3 by1waGFzZSBjb21taXRzLgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVmVy c2lvbiA8bGl0ZXJhbD40PC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZl cnNpb24gMTYKKyAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtcyBvZiBsYXJn ZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBiZSBhcHBsaWVkIGluIHBhcmFs bGVsLgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5 PgogCkBAIC02ODgyLDYgKzY4ODcsMjggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgPC9wYXJhPgogICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxp c3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIGFib3J0LiBU aGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICA0 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChUaW1lc3Rh bXBUeik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IEFib3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB2YWx1ZSBpcyBpbiBudW1i ZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAw LTAxLTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29s IHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCmluZGV4IGY5YTE3NzYuLmYxNzNhMDkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sCkBAIC0yMjgsMTMgKzIyOCwyOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFj ZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAg ICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAg IDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcg b2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0 aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGFyZSBmdWxseSBk ZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRvIHRoZQotICAgICAg ICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRp b24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LAorICAgICAg ICAgIG1lYW5pbmcgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVi bGlzaGVyIGFuZCBvbmx5CisgICAgICAgICAgdGhlbiBzZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFz IGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFy ZSB3cml0dGVuIHRvCisgICAgICAgICAgdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQg b25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAgICAgICBjb21taXR0ZWQgb24gdGhl IHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNjcmliZXIuCisgICAgICAgICA8L3Bh cmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5wYXJh bGxlbDwvbGl0ZXJhbD4sIGluY29taW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5CisgICAgICAgICAg YXBwbGllZCB2aWEgb25lIG9mIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBpZiBhdmFpbGFi bGUuIElmIG5vCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGZyZWUgdG8gaGFu ZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhlbgorICAgICAgICAgIHRoZSBjaGFuZ2VzIGFy ZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbGllZCBhZnRlciB0aGUKKyAgICAg ICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBw ZW5zIGluIGEKKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2ggTFNO IG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KKyAgICAgICAgICBtaWdodCBub3QgYmUgcmVwb3J0 ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggZDM4 YjQyYy4uM2E1NjEwZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMTM3OSw4ICsxMzc5LDkg QEAKICAgICAgICA8bGl0ZXJhbD52aXJ0dWFseGlkPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJh bD5zcGVjdG9rZW48L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPm9iamVjdDwvbGl0ZXJhbD4s Ci0gICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LCBvcgotICAgICAgIDxsaXRlcmFs PmFkdmlzb3J5PC9saXRlcmFsPi4KKyAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4s CisgICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LCBvcgorICAgICAgIDxsaXRlcmFs PmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+LgogICAgICAgIChTZWUgYWxzbyA8eHJlZiBsaW5r ZW5kPSJ3YWl0LWV2ZW50LWxvY2stdGFibGUiLz4uKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDgwODZiODUuLjAzMGM2 M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTIsNiArMTcxMiw3IEBAIFJl Y29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJbmNoaWxkcmVuOwog CVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3RfdGltZTsKKwlib29s CQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4gYXNzaWduZWQgYW4g WElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAtMTc0Miw2ICsxNzQz LDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCWVsb2coUEFO SUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJlYWR5IGNvbW1pdHRl ZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBv cmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQorCSAqIHdlIHJlcGxheWlu ZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2ggdGhlIGRhdGEgd2Ug bmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdldFBlbmRpbmdEZWxl dGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1pdHRlZENoaWxkcmVu KCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9y dChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFsaWRUcmFuc2FjdGlv bklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkvKiBNb3ZlIExTTnMg Zm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVwbG9yaWdpbl9zZXNz aW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCQkJCQkJCSAgIFhh Y3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3QgYXN5bmMgYWJvcnQg TFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1c2ggdGhpcyBhYm9y dC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0aGlzLCBzaW5jZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGQ2NzM1NTcuLjllNGI2 NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQly ZWZyZXNoOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFt aW5nOwogCWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpv cmlnaW47CkBAIC0xMDAsNiArMTAwLDYyIEBAIHN0YXRpYyB2b2lkIGNoZWNrX2R1cGxpY2F0ZXNf aW5fcHVibGlzdChMaXN0ICpwdWJsaXN0LCBEYXR1bSAqZGF0dW1zKTsKIHN0YXRpYyBMaXN0ICpt ZXJnZV9wdWJsaWNhdGlvbnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9v bCBhZGRwdWIsIGNvbnN0IGNoYXIgKnN1Ym5hbWUpOwogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENv bm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBj aGFyICplcnIpOwogCisvKgorICogRXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJv bSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBh Y2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIuCisgKi8KK2NoYXIKK2RlZkdl dFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVy IHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50LgorCSAqLworCWlmICghZGVmLT5h cmcpCisJCXJldHVybiBTVUJTVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxz ZSIsICJ0cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5v ZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZh bChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09G RjsKKwkJCQljYXNlIDE6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJZGVmYXVsdDoK KwkJCQkJLyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8KKwkJCQkJYnJlYWs7CisJCQl9 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFyCSAgICpzdmFsID0gZGVmR2V0 U3RyaW5nKGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBzZXQgb2Ygc3RyaW5ncyBhY2NlcHRl ZCBoZXJlIHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJCSAqIGdyYW1tYXIncyBvcHRfYm9v bGVhbl9vcl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAocGdfc3RyY2FzZWNt cChzdmFsLCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9mZiIp ID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21w KHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09 IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9QQVJBTExFTDsKKwkJ CX0KKwkJCWJyZWFrOworCX0KKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUg b3IgXCJwYXJhbGxlbFwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJF QU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQogCiAvKgogICogQ29tbW9uIG9w dGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBj b21tYW5kcy4KQEAgLTEzOCw3ICsxOTQsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAo SXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1p bmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29w aGFzZSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVf T05fRVJSKSkKQEAgLTI0MSw3ICsyOTcsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0 aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0g U1VCT1BUX1NUUkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVm ZWwpOworCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJ CX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkK IAkJewpAQCAtNjI5LDcgKzY4NSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFd ID0gQm9vbEdldERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3Rh dGUgLSAxXSA9CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDk4LDcgKzExNTQsNyBAQCBBbHRlclN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykp CiAJCQkJewogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PQotCQkJCQkJQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1 bShvcHRzLnN0cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCA0ZDA0MTVlLi42Mzk4 NDVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCkBAIC0xMywxMSArMTMsMTMgQEAKIAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIApAQCAtMTYyLDkgKzE2NCwxOSBAQCBtcV9w dXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIAkJcmVz dWx0ID0gc2htX21xX3NlbmR2KHBxX21xX2hhbmRsZSwgaW92LCAyLCB0cnVlLCB0cnVlKTsKIAog CQlpZiAocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCAhPSAwKQotCQkJU2VuZFByb2NTaWduYWwo cHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVT U0FHRSwKLQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJewor CQkJaWYgKElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIoKSkKKwkJCQlTZW5kUHJvY1NpZ25h bChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxf QVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9p ZCk7CisJCQllbHNlCisJCQl7CisJCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7CisJCQkJ U2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9D U0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2Jh Y2tlbmRfaWQpOworCQkJfQorCQl9CiAKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFfV09VTERfQkxP Q0spCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCAwZDcyZGUyLi4y ZGZhOWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAg c3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlX b3JrZXJNYWluCisJfSwKKwl7CisJCSJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVs QXBwbHlXb3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5k ZXggMWFlZDJlMi4uZTY0MDI5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9p bnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC05 OCw4ICs5OCw5IEBAIFNpZ25hbEhhbmRsZXJGb3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCiAgKiBz aHV0IGRvd24gYW5kIGV4aXQuCiAgKgogICogVHlwaWNhbGx5LCB0aGlzIGhhbmRsZXIgd291bGQg YmUgdXNlZCBmb3IgU0lHVEVSTSwgYnV0IHNvbWUgcHJvY2Vzc2VzIHVzZQotICogb3RoZXIgc2ln bmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNoZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBh bmQgdGhlCi0gKiBXQUwgd3JpdGVyIGV4aXRzIG9uIGVpdGhlciBTSUdJTlQgb3IgU0lHVEVSTS4K KyAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMg b24gU0lHVVNSMiwgYW5kIHRoZSBXQUwKKyAqIHdyaXRlciBhbmQgdGhlIGxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRzIG9uIGVpdGhlcgorICogU0lHSU5UIG9y IFNJR1RFUk0uCiAgKgogICogU2h1dGRvd25SZXF1ZXN0UGVuZGluZyBzaG91bGQgYmUgY2hlY2tl ZCBhdCBhIGNvbnZlbmllbnQgcGxhY2Ugd2l0aGluIHRoZQogICogbWFpbiBsb29wLCBvciBlbHNl IHRoZSBtYWluIGxvb3Agc2hvdWxkIGNhbGwgSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdh bHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwppbmRleCA3ZjY5N2IwLi4yMjVkYTgxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVj ZWl2ZXIuYwpAQCAtNDQzLDkgKzQ0Myw5IEBAIGxpYnBxcmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJl Y2VpdmVyQ29ubiAqY29ubiwKIAkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAicHJvdG9fdmVyc2lv biAnJXUnIiwKIAkJCQkJCSBvcHRpb25zLT5wcm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24pOwog Ci0JCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZyAmJgotCQkJUFFzZXJ2ZXJW ZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE0MDAwMCkKLQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmNtZCwgIiwgc3RyZWFtaW5nICdvbiciKTsKKwkJaWYgKG9wdGlvbnMtPnByb3RvLmxv Z2ljYWwuc3RyZWFtaW5nX3N0cikKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiwgc3RyZWFt aW5nICclcyciLAorCQkJCQkJCSBvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIp OwogCiAJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnR3b3BoYXNlICYmCiAJCQlQUXNlcnZl clZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZS4uMmRjMjVlMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUg JCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9 IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCisJYXBwbHlwYXJhbGxlbHdvcmtl ci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc0ZmY5YgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCkBAIC0wLDAgKzEsMTM4MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBhcHBseXBhcmFs bGVsd29ya2VyLmMKKyAqCSAgIFN1cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkg cGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkg IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisg KgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1 cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxB cHBseVdvcmtlckluZm8uCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGluIHRoZSBmaWxl IGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBh Ym91dCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqIExvY2tpbmcgQ29uc2lkZXJhdGlv bnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLQorICogU2luY2UgdGhlIGRhdGFiYXNlIHN0cnVjdHVy ZSAoc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMsIGV0Yy4pIG9mCisgKiBwdWJsaXNoZXIg YW5kIHN1YnNjcmliZXIgbWF5IGJlIGRpZmZlcmVudCwgYXBwbHlpbmcgdHJhbnNhY3Rpb25zIGlu IHBhcmFsbGVsCisgKiBtb2RlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgbWF5IGNhdXNlIHNvbWUg ZGVhZGxvY2sgcHJvYmxlbXMgdGhhdCBkbyBub3QKKyAqIG9jY3VyIG9uIHRoZSBwdWJsaXNoZXIg c2lkZS4KKyAqCisgKiBTdXBwb3NlIGEgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEg dW5pcXVlIGtleSBvbiB0aGUgcHVibGlzaGVyIGFuZAorICogaGFzIGEgdW5pcXVlIGtleSBvbiB0 aGUgc3Vic2NyaWJlci4KKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIFRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgKFBBKSBpcyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIKKyAqIChMQSkgaXMgZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBz dWJzY3JpYmVyLiBOb3csIExBIGlzIHdhaXRpbmcKKyAqIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1 bmlxdWUga2V5IG9mIHRoZSBzdWJzY3JpYmVkIHRhYmxlIHdoaWxlIFBBIGlzIHdhaXRpbmcKKyAq IGZvciBMQSB0byBzZW5kIGZ1cnRoZXIgbWVzc2FnZXMuCisgKgorICogSW4gb3JkZXIgZm9yIGxt Z3IgdG8gZGV0ZWN0IHRoaXMsIHdlIGhhdmUgTEEgYWNxdWlyZSBhIHNlc3Npb24gbG9jayBvbiB0 aGUKKyAqIHJlbW90ZSB0cmFuc2FjdGlvbiAoYnkgcGFfbG9ja19zdHJlYW0oKSkgYW5kIGhhdmUg UEEgd2FpdCBvbiB0aGUgbG9jayBiZWZvcmUKKyAqIHRyeWluZyB0byByZWNlaXZlIG1lc3NhZ2Vz LiBJbiBvdGhlciB3b3JkcywgTEEgYWNxdWlyZXMgdGhlIGxvY2sgYmVmb3JlCisgKiBzZW5kaW5n IFNUUkVBTV9TVE9QIGFuZCByZWxlYXNlcyBpdCBpZiBhbHJlYWR5IGFjcXVpcmVkIGJlZm9yZSBz ZW5kaW5nCisgKiBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVCAoZm9yIHRvcGxldmVsIHRyYW5z YWN0aW9uKSwgU1RSRUFNX1BSRVBBUkUgYW5kCisgKiBTVFJFQU1fQ09NTUlULiBGb3IgUEEsIGl0 IGFsd2F5cyBuZWVkcyB0byBhY3F1aXJlIHRoZSBsb2NrIGFmdGVyIHByb2Nlc3NpbmcKKyAqIFNU UkVBTV9TVE9QIGFuZCBTVFJFQU1fQUJPUlQgKGZvciBzdWJ0cmFuc2FjdGlvbikgYW5kIHRoZW4g cmVsZWFzZQorICogaW1tZWRpYXRlbHkgYWZ0ZXIgYWNxdWlyaW5nIGl0LiBUaGF0IHdheSwgd2hl biBQQSBpcyB3YWl0aW5nIGZvciBMQSwgd2UgY2FuCisgKiBoYXZlIGEgd2FpdC1lZGdlIGZyb20g UEEgdG8gTEEgaW4gbG1nciwgd2hpY2ggd2lsbCBtYWtlIGEgZGVhZGxvY2sgaW4gbG1ncgorICog bGlrZToKKyAqCisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlx dWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSBy ZW1vdGUgdHJhbnNhY3Rpb24pIC0+IExBCisgKgorICogMikgRGVhZGxvY2sgYmV0d2VlbiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VycworICoKKyAqIFRo aXMgc2NlbmFyaW8gaXMgc2ltaWxhciB0byB0aGUgZmlyc3QgY2FzZSBidXQgVFgtMSBhbmQgVFgt MiBhcmUgZXhlY3V0ZWQgYnkKKyAqIHR3byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChQQS0xIGFu ZCBQQS0yIHJlc3BlY3RpdmVseSkuIEluIHRoaXMgc2NlbmFyaW8sCisgKiBQQS0yIGlzIHdhaXRp bmcgZm9yIFBBLTEgdG8gY29tcGxldGUgaXRzIHRyYW5zYWN0aW9uIHdoaWxlIFBBLTEgaXMgd2Fp dGluZworICogZm9yIHN1YnNlcXVlbnQgaW5wdXQgZnJvbSBMQS4gQWxzbywgTEEgaXMgd2FpdGlu ZyBmb3IgUEEtMiB0byBjb21wbGV0ZSBpdHMKKyAqIHRyYW5zYWN0aW9uIGluIG9yZGVyIHRvIHBy ZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZXJlIGlzIGEgZGVhZGxvY2sgYW1vbmcKKyAqIHRo cmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywg d2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZQorICogdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVk aW5nIGluCisgKiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMuIFRoYXQgd2F5LCB3ZSBjYW4g aGF2ZSBhIHdhaXQtZWRnZSBmcm9tIExBIHRvIFBBCisgKiBpbiBsbWdyLCB3aGljaCB3aWxsIG1h a2UgYSBkZWFkbG9jayBpbiBsbWdyIGxpa2U6CisgKgorICogTEEgKHdhaXRpbmcgdG8gYWNxdWly ZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0bworICogYWNx dWlyZSB0aGUgbG9jayBvbiB0aGUgdW5pcXVlIGluZGV4KSAtPiBQQS0xICh3YWl0aW5nIHRvIGFj cXVpcmUgdGhlIGxvY2sKKyAqIG9uIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24pIC0+IExBCisgKgor ICogT25lIG1pZ2h0IHRoaW5rIHdlIGNhbiB1c2UgWGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhh Y3RMb2NrVGFibGVXYWl0KCkKKyAqIGNvbnNpZGVycyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBz dGlsbCBpbiBwcm9ncmVzcyB3aGljaCBtZWFucyB0aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFz ZWQgZXZlbiBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByZXBhcmVkIHRoZSB0cmFuc2Fj dGlvbi4KKyAqCisgKiAzKSBEZWFkbG9jayB3aGVuIHRoZSBzaG1fbXEgYnVmZmVyIGlzIGZ1bGwK KyAqCisgKiBUaGUgc2NlbmFyaW8gd2hlcmUgTEEgaGFzIHRvIHdhaXQgaXMgd2hlbiB0aGUgc2ht X21xIGJ1ZmZlciBpcyBmdWxsLiBJbiB0aGUKKyAqIGFib3ZlIHNjZW5hcmlvIChpZS4gUEEtMSBh bmQgUEEtMiBhcmUgZXhlY3V0aW5nIHRyYW5zYWN0aW9ucyBjb25jdXJyZW50bHkpLAorICogaWYg dGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBMQSBhbmQgUEEtMiBpcyBmdWxsLCBMQSBoYXMgdG8g d2FpdCB0byBzZW5kCisgKiBtZXNzYWdlcywgYW5kIHRoaXMgd2FpdCBkb2Vzbid0IGFwcGVhciBp biBsbWdyLgorICoKKyAqIFRvIHJlc29sdmUgdGhpcyBpc3N1ZSwgd2UgdXNlIG5vbi1ibG9ja2lu ZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4gSWYKKyAqIHRpbWVvdXQgaXMgZXhjZWVk ZWQsIHRoZSBMQSByZXBvcnRzIGFuIGVycm9yIGFuZCByZXN0YXJ0cyBsb2dpY2FsCisgKiByZXBs aWNhdGlvbi4KKyAqCisgKiA0KSBMb2NrIHR5cGUKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9j ayBhbmQgdGhlIHRyYW5zYWN0aW9uIGxvY2sgbWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lv bi1sZXZlbCBsb2NrcywgYmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJlIGFjcXVpcmVkIG91dHNp ZGUgdGhlCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9jayBpbiB0aGUgbGVhZGVy IG5lZWQgdG8gcGVyc2lzdCBhY3Jvc3MKKyAqIHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgdW50aWwg dGhlIGVuZCBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9wcWZvcm1h dC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNs dWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvbG1nci5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9p bnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2NhMDY3 CisKKy8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAgVW5saWtlIG90 aGVyIHBhcmFsbGVsIGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byB3 b3JyeSBhYm91dCBEU00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9kZV9pZCB3ZQorICog Y2FuIHVzZSBzbWFsbCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlf U0hBUkVECQkxCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9NUQkJCTIKKyNkZWZpbmUgUEFS QUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFCTMKKworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2 IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCSgxNiAqIDEwMjQgKiAxMDI0 KQorCisvKgorICogRXJyb3IgcXVldWUgc2l6ZSBvZiBEU00uIEl0IGlzIGRlc2lyYWJsZSB0byBt YWtlIGl0IGxhcmdlIGVub3VnaCB0aGF0IGEKKyAqIHR5cGljYWwgRXJyb3JSZXNwb25zZSBjYW4g YmUgc2VudCB3aXRob3V0IGJsb2NraW5nLiAgVGhhdCB3YXksIGEgd29ya2VyIHRoYXQKKyAqIGVy cm9ycyBvdXQgY2FuIHdyaXRlIHRoZSB3aG9sZSBtZXNzYWdlIGludG8gdGhlIHF1ZXVlIGFuZCB0 ZXJtaW5hdGUgd2l0aG91dAorICogd2FpdGluZyBmb3IgdGhlIHVzZXIgYmFja2VuZC4KKyAqLwor I2RlZmluZSBEU01fRVJST1JfUVVFVUVfU0laRQkJCSgxNiAqIDEwMjQpCisKKy8qCisgKiBUaGVy ZSBhcmUgdGhyZWUgZmllbGRzIGluIGVhY2ggbWVzc2FnZSByZWNlaXZlZCBieSB0aGUgcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlcjogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJl Y2F1c2Ugd2UgaGF2ZSB1cGRhdGVkIHRoZXNlCisgKiBzdGF0aXN0aWNzIGluIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyLCB3ZSBjYW4gaWdub3JlIHRoZXNlIGZpZWxkcyBpbiB0aGUKKyAqIHBhcmFs bGVsIGFwcGx5IHdvcmtlciAoc2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICov CisjZGVmaW5lIFNJWkVfU1RBVFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNp emVvZihUaW1lc3RhbXBUeikpCisKKy8qCisgKiBUaGUgdHlwZSBvZiBzZXNzaW9uLWxldmVsIGxv Y2sgb24gYSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVwbGlj YXRpb24gc3Vic2NyaWJlci4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVB TQkwCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVAkxCisKKy8qCisgKiBIYXNoIHRh YmxlIGVudHJ5IHRvIG1hcCB4aWQgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZS4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5Cit7CisJVHJhbnNh Y3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCVBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKK30gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5OworCisv KiBQYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2ggdGFibGUgKGluaXRpYWxpemVkIG9uIGZpcnN0 IHVzZSkuICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID0gTlVMTDsK KworLyoKKyAqIEEgbGlzdCB0byBtYWludGFpbiB0aGUgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBmb3IKKyAqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRv IHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorICogbGlzdCBl bnRyeSBpcyByZW1vdmVkIGlmIHRoZXJlIGFyZSBhbHJlYWR5IGVub3VnaCB3b3JrZXJzIGluIHRo ZSB3b3JrZXIKKyAqIHBvb2wgZWl0aGVyIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uIG9y IHdoaWxlIHRyeWluZyB0byBmaW5kIGEgZnJlZQorICogd29ya2VyIGZvciBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyAqIHBv b2wsIHNlZSBjb21tZW50cyBhdG9wIHdvcmtlci5jLgorICovCitzdGF0aWMgTGlzdCAqUGFyYWxs ZWxBcHBseVdvcmtlcnNMaXN0ID0gTklMOworCisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJl dHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICov CitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKwor LyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBzZW50IGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHRoYXQgdGhlIGxlYWRlciBhcHBseQorICogd29ya2VyIG5lZWRzIHRvIHJlY2VpdmU/CisgKi8K K3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxz ZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24g cmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rp b24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBvZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNo IHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5k IFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVh bV9hcHBseV93b3JrZXIgPSBOVUxMOworCisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNh Y3Rpb25zLCBpZiBhbnkuICovCitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworc3RhdGlj IGJvb2wgcGFfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsKK3N0YXRpYyBib29sIHBhX3Nl dHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICpwYV9pbml0X2FuZF9sYXVuY2hfd29ya2VyKHZvaWQpOworc3RhdGlj IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9nZXRfYXZhaWxhYmxlX3dvcmtlcih2b2lkKTsK K3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFy YWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CisKKy8qCisgKiBSZXR1cm5zIHRydWUg aWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90aGVy d2lzZS4KKyAqLworc3RhdGljIGJvb2wKK3BhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkK K3sKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CisKKwkvKgorCSAqIERvbid0 IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB0aGUgc3Vic2NyaXB0aW9uIGlz IG5vdAorCSAqIHVzaW5nIHBhcmFsbGVsIHN0cmVhbWluZyBtb2RlLCBvciBpZiB0aGUgcHVibGlz aGVyIGRvZXMgbm90IHN1cHBvcnQKKwkgKiBwYXJhbGxlbCBhcHBseS4KKwkgKi8KKwlpZiAoIU15 TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpCisJCXJldHVybiBmYWxzZTsKKworCS8q IE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybiBmYWxzZTsK KworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgd29ya2VyIGlmIHVzZXIgaGFz IHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0IHVzZXIgd2FudCB0byBza2lw IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlv biwgd2UgbmVlZCB0byBzcGlsbCB0aGUgdHJhbnNhY3Rpb24gdG8gZGlzayBzbyB0aGF0CisJICog d2UgY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRo ZXIgdG8gc2tpcAorCSAqIGJlZm9yZSBzdGFydGluZyB0byBhcHBseSB0aGUgY2hhbmdlLgorCSAq LworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJ CXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhh dCBhcmUgYmVpbmcgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyLCB3 ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQorCSAqIHJl bGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlCisJICogc2hvdWxkX2Fw cGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5 IHRoYXQKKwkgKiB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkp CisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogR2V0IGFuIGF2 YWlsYWJsZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgd29ya2VyIHBvb2wuCisgKi8K K3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9nZXRfYXZhaWxhYmxlX3dvcmtl cih2b2lkKQoreworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzID0gbGlzdF9jb3B5KFBhcmFsbGVs QXBwbHlXb3JrZXJzTGlzdCk7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBhY3Rp dmVfd29ya2VycykKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKworCQl3 aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJ CSAqIFdlIGZpcnN0IHRyeSB0byBmcmVlIHRoZSB3b3JrZXIgdG8gaW1wcm92ZSBvdXIgY2hhbmNl cyBvZiBmaW5kaW5nCisJCSAqIG9uZSB0aGF0IGlzIG5vdCBpbiB1c2UuIE5vcm1hbGx5LCB3ZSBm cmVlIHRoZSB3b3JrZXIgYWZ0ZXIgZW5zdXJpbmcKKwkJICogdGhhdCB0aGUgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgYnV0IGZvcgorCQkgKiByb2xsYmFj a3MsIHdlIGRvbid0IHdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBmaW5pc2ggc28gY2FuJ3Qg ZnJlZQorCQkgKiB0aGUgd29ya2VyIGluZm9ybWF0aW9uIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJ aWYgKHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB3aW5mby0+c2hhcmVkLT54aWQpKQorCQkJY29udGlu dWU7CisKKwkJaWYgKCF3aW5mby0+aW5fdXNlKQorCQkJcmV0dXJuIHdpbmZvOworCX0KKworCXJl dHVybiBOVUxMOworfQorCisvKgorICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg dGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdlIGZpcnN0 IHRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBhbnkgYW5k IHRoZW4gdHJ5CisgKiB0byBsYXVuY2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVsIGFsbG9j YXRpb24sIHJlbWVtYmVyIHRoZSB3b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBoYXNoIHRh YmxlIHNvIHRoYXQgd2UgY2FuIGdldCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUKKyAqIHN0 cmVhbWluZyBjaGFuZ2VzLgorICovCit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rp b25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvID0gTlVMTDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFw YV9jYW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBp bml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRhYmxlLiAqLworCWlmICghUGFyYWxsZWxBcHBs eVdvcmtlcnNIYXNoKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBz aXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSk7CisJCWN0bC5o Y3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCA9IGhhc2hf Y3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIs CisJCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAorCQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkvKgorCSAqIEZpcnN0LCB0cnkgdG8gZ2V0 IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHBvb2wsIGlmIGF2YWlsYWJsZS4KKwkg KiBPdGhlcndpc2UsIHRyeSB0byBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJ ICovCisJd2luZm8gPSBwYV9nZXRfYXZhaWxhYmxlX3dvcmtlcigpOworCWlmICghd2luZm8pCisJ eworCQl3aW5mbyA9IHBhX2luaXRfYW5kX2xhdW5jaF93b3JrZXIoKTsKKwkJaWYgKCF3aW5mbykK KwkJCXJldHVybjsKKwl9CisKKwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQg dHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5V29ya2Vy c0hhc2gsICZ4aWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQllbG9nKEVS Uk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qIEluaXRpYWxpemUgc2hhcmVkIG1l bW9yeSBhcmVhLiAqLworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwor CXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXdp bmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFyZWQt Pm11dGV4KTsKKworCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCWVudHJ5LT53aW5mbyA9IHdpbmZv OworCWVudHJ5LT54aWQgPSB4aWQ7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBhc3NpZ25lZCB3b3Jr ZXIgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiwgaWYgYW55LgorICovCitQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqCitwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29s CQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFUcmFu c2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghUGFyYWxsZWxB cHBseVdvcmtlcnNIYXNoKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2FjaGVk IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5X3dv cmtlcikKKwkJcmV0dXJuIHN0cmVhbV9hcHBseV93b3JrZXI7CisKKwkvKiBGaW5kIGFuIGVudHJ5 IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2go UGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYg KGZvdW5kKQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJ CUFzc2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJs ZSBmb3IgcmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2Vk LiBJZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3 b3JrZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQg anVzdCBtYXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAq IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRz IGF0b3Agd29ya2VyLmMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JrZXIgaXMgc3Rv cHBlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitwYV9mcmVlX3dvcmtlcihQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJCW5h cHBseXdvcmtlcnM7CisKKwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKwor CS8qIFdvcmtlciBpcyBhbHJlYWR5IGF2YWlsYWJsZSBmb3IgcmV1c2UuICovCisJaWYgKCF3aW5m by0+aW5fdXNlKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IGZyZWUgdGhlIHdv cmtlciBpZiB0aGUgdHJhbnNhY3Rpb24gaW4gdGhlIHdvcmtlciBpcyBzdGlsbCBpbgorCSAqIHBy b2dyZXNzLiBUaGlzIGNvdWxkIGhhcHBlbiBhcyB3ZSBkb24ndCB3YWl0IGZvciB0aGUgYXBwbHkg b2Ygcm9sbGJhY2sKKwkgKiB0byBmaW5pc2guCisJICovCisJaWYgKHBhX2dldF94YWN0X3N0YXRl KHdpbmZvLT5zaGFyZWQpICE9IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwg SEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQi KTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJ bmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJ LyogU3RvcCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9v bC4gKi8KKwlpZiAobmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdl bmVyYXRpb247CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ CWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9u OworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsK KwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJl cF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtl cl9pbmZvKHdpbmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0g ZmFsc2U7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpbmZvcm1hdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcl9pbmZv KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2luZm8pOworCisJ aWYgKHdpbmZvLT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7 CisKKwlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZykKKwkJZHNtX2RldGFjaCh3 aW5mby0+ZHNtX3NlZyk7CisKKwkvKgorCSAqIEVuc3VyZSB0aGlzIHdvcmtlciBpbmZvcm1hdGlv biB3b24ndCBiZSByZXVzZWQgZHVyaW5nIHdvcmtlciBhbGxvY2F0aW9uLgorCSAqLworCVBhcmFs bGVsQXBwbHlXb3JrZXJzTGlzdCA9IGxpc3RfZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2Vy c0xpc3QsCisJCQkJCQkJCQkJCSAgIHdpbmZvKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyoK KyAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGVhY2ggcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpCit7CisJ TGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3Qp CisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9t cV9oYW5kbGUpOworCQl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwl9Cit9CisKKy8q CisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2 b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoU2h1dGRvd25SZXF1ZXN0 UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBm aW5pc2hlZCIsCisJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCWFwcGx5X3dvcmtl cl9jbGVhbl9leGl0KGZhbHNlKTsKKwl9CisKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7 CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdD X1NJR0hVUCk7CisJfQorfQorCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAq Lworc3RhdGljIHZvaWQKK0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICpt cWgpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBl cnJjYWxsYmFjazsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0 OworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFu IHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLwor CUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0 LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NT RVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBj YWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFu Z2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsK KwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29u dGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpk YXRhOworCQlTaXplCQlsZW47CisKKwkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7 CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBj b250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7 CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsK KworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9E YXRhIHM7CisJCQlpbnQJCQljOworCisJCQlpZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwg ImludmFsaWQgbWVzc2FnZSBsZW5ndGgiKTsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhs ZW4gPSAtMTsKKwkJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKwor CQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIg YXBwbHkgd29ya2VyIHRvCisJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJl ICd3Jy4KKwkJCSAqLworCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cn KQorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJ CS8qCisJCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRl ZCBieSB0aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29y ICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCisJCQlN ZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisJCX0KKwkJZWxzZSBpZiAo c2htcV9yZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQl7CisJCQlpbnQJCQlyYzsKKworCQkJ aWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdl IGRpZG4ndCBnZXQgYW55IHRyYW5zYWN0aW9ucyBmb3IgYSB3aGlsZSB0aGVyZSBtaWdodAorCQkJ CSAqIGJlIHVuY29uc3VtZWQgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZSwgY29u c3VtZQorCQkJCSAqIHRoZW0gbm93LgorCQkJCSAqLworCQkJCUFjY2VwdEludmFsaWRhdGlvbk1l c3NhZ2VzKCk7CisJCQkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOworCQkJfQorCisJCQlN ZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKKworCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLworCQkJcmMg PSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTAwMEwsCisJCQkJCQkgICBXQUlUX0VW RU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7CisKKwkJCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQl9CisJCWVsc2UKKwkJeworCQkJQXNz ZXJ0KHNobXFfcmVzID09IFNITV9NUV9ERVRBQ0hFRCk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VyIikpKTsKKwkJfQorCX0KKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBz dGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byByZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVl IG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJkcyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdl IGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGluZworICogYW4gRXJyb3JSZXNwb25zZSwgZm9y IGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2FsbHMgcHJvY19leGl0IGRpcmVjdGx5LgorICov CitzdGF0aWMgdm9pZAorcGFfc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTZW5k UHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJICAg UFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCSAgIEludmFsaWRCYWNrZW5kSWQp OworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2ludGVyKGFyZykpOwor fQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IHBvaW50LgorICovCit2b2lk CitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21l bnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFu ZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCVJlcE9yaWdpbklkIG9yaWdp bmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcu ICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlw cXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOworCXBxc2ln bmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisK KwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9y IHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICogZmluZCBpdHMgdGFibGUgb2YgY29udGVudHMu CisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3ZSBkb24ndCBuZWVkIHJlc291cmNlIG93 bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFyYWxsZWxXb3JrZXJNYWluLgorCSAqLworCW1l bWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5k bGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7CisJaWYgKCFzZWcpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NI TV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsKKwlpZiAoIXRvYykKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVtYmVyIGluIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1lbV9leGl0KHBhX3NodXRkb3duLCBQ b2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBMb29rIHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRp b24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlf U0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNoYXJlZCA9IHNoYXJlZDsKKworCS8qCisJICog QXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVy KG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkv KgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuIE5vdywgd2UgY2FuIGF0 dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRhdGEgdG8KKwkgKiB0aGUgdW5pbml0aWFsaXpl ZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9z bG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15 UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxS ZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3Jr ZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNo YXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAq LworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVF VUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWgg PSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJcHFfcmVkaXJlY3RfdG9fc2htX21x KHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdv cmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJ TXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+ bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOwor CisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmln aW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlv bk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQs CisJCQkJCQkJCQkgICBvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOworCW9yaWdpbmlk ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOworCWlmICghT2lkSXNWYWxp ZChvcmlnaW5pZCkpCisJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7 CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1v bm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBh Y3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQpOwor CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qCisJICogU2V0dXAgY2FsbGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRo YXQgd2Uga25vdyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzIGluCisJICogdGhlIHN1YnNjcmlwdGlv biByZWxhdGlvbiBzdGF0ZS4KKwkgKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhT VUJTQ1JJUFRJT05SRUxNQVAsCisJCQkJCQkJCSAgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0 YXRlcywKKwkJCQkJCQkJICAoRGF0dW0pIDApOworCisJLyoKKwkgKiBBbGxvY2F0ZSB0aGUgb3Jp Z2luIG5hbWUgaW4gYSBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBt ZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1l bW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lu bmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3AobXFoKTsKKworCS8qCisJICogVGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzaG91bGQgbm90IGdldCBoZXJlLCBiZWNhdXNlIHRoZSBw YXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciBzaG91bGQgb25seSBzdG9wIHdoZW4gaXQgcmVjZWl2 ZXMgYSBTSUdURVJNIG9yIFNJR0lOVCBmcm9tCisJICogdGhlIGxlYWRlciBvciBkZXRlY3RzIGEg Y2hhbmdlIGluIHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbi4KKwkgKi8KKwlBc3NlcnQoZmFsc2Up OworfQorCisvKgorICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbWVzc2FnZS4KKyAqCisgKiBOb3RlOiB0aGlzIGlzIGNh bGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFn CisgKiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBp bnZva2UKKyAqIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lkCitIYW5k bGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0 Y2goTXlMYXRjaCk7Cit9CisKKy8qCisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2Fn ZSByZWNlaXZlZCBmcm9tIGEgc2luZ2xlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8K K3N0YXRpYyB2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sIFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwlt c2d0eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJ Y2FzZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRh dGE7CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9y bm90aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qCisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEg Y29udGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3Bh Z2F0ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0 IGNhbiBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQor CQkJCSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJCWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQll ZGF0YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4lcyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJ CQkJCSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJ CQllbHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3RyZHVwKF8oImxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJl eW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICog dGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJ CQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJ CQkvKgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3IgbXVzdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkg dGhlIHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBw bHkgd29ya2VyIGV4aXRlZCBhYm5vcm1hbGx5IiksCisJCQkJCQkgZXJyY29udGV4dCgiJXMiLCBl ZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBh bnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFz IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNl bmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAn QSc6CisJCQlicmVhazsKKworCQkJLyoKKwkJCSAqIFJlc3RhcnQgcmVwbGljYXRpb24gaWYgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkIGJlY2F1c2Ugb2YKKwkJCSAqIHN1YnNjcmlwdGlv biBpbmZvcm1hdGlvbiBjaGFuZ2UuCisJCQkgKi8KKwkJY2FzZSAnWCc6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZXhpdGVkIGJlY2F1c2Ugb2Ygc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uIGNoYW5nZSIp KSk7CisJCQlicmVhazsgLyogU2lsZW5jZSBjb21waWxlciB3YXJuaW5nLiAqLworCQlkZWZhdWx0 OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJv bSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2Ug bGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJIG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8q CisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlcyh2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4 dDsKKworCXN0YXRpYyBNZW1vcnlDb250ZXh0IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgor CSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBz b21lIG9mIHRoZQorCSAqIGZ1bmN0aW9ucyBpdCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBp ZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2VpdmVkIHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVu Y2xlYXIgdGhhdCByZWN1cnNpdmUgZW50cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qg c2VlbSB1c2VmdWwKKwkgKiBldmVuIGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVy cnVwdHMgdW50aWwgZG9uZS4KKwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICog TW9yZW92ZXIsIEN1cnJlbnRNZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBh bnl3aGVyZS4gV2UKKwkgKiBkb24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9u Zy1saXZlZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJp dmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICgh aHBhbV9jb250ZXh0KQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwYW1fY29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkhh bmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocGFtX2NvbnRleHQpOworCisJUGFy YWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxl bEFwcGx5V29ya2Vyc0xpc3QpCisJeworCQlzaG1fbXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5 dGVzOworCQl2b2lkCSAgICpkYXRhOworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8g PSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlyZXMgPSBzaG1f bXFfcmVjZWl2ZSh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7 CisKKwkJLyoKKwkJICogVGhlIGxlYWRlciB3aWxsIGRldGFjaCBmcm9tIHRoZSBlcnJvciBxdWV1 ZSBhbmQgc2V0IGl0IHRvIE5VTEwKKwkJICogYmVmb3JlIHByZXBhcmluZyB0byBzdG9wIGFsbCBw YXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB3ZSBkb24ndAorCQkgKiBuZWVkIHRvIGhhbmRsZSBl cnJvciBtZXNzYWdlcyBhbnltb3JlLgorCQkgKi8KKwkJaWYgKCF3aW5mby0+ZXJyb3JfbXFfaGFu ZGxlKQorCQkJY29udGludWU7CisKKwkJaWYgKHJlcyA9PSBTSE1fTVFfV09VTERfQkxPQ0spCisJ CQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlT dHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5k QmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCQkJSGFuZGxlUGFyYWxsZWxB cHBseU1lc3NhZ2Uod2luZm8sICZtc2cpOworCQkJcGZyZWUobXNnLmRhdGEpOworCQl9CisJCWVs c2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8g dGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKKwl9CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkvKiBNaWdodCBhcyB3ZWxs IGNsZWFyIHRoZSBjb250ZXh0IG9uIG91ciB3YXkgb3V0ICovCisJTWVtb3J5Q29udGV4dFJlc2V0 KGhwYW1fY29udGV4dCk7CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICogU2V0 IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEg Y29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIGZpeGVkLXNpemUgd29ya2VyIGluZm8KKyAq IChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwgYSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4gZXJy b3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1 cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlk c21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICptcTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNN X1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVldWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9T SVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQu CisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0 IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBl YWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0 ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB0d28gb3RoZXIKKwkgKiBrZXlzIHRv IHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1lc3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJvciBt ZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigm ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90b2Nf ZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOwor CisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRh YmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgm ZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2Ny ZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp LAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLwor CXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPnhh Y3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXBnX2F0b21pY19pbml0X3UzMigm KHNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQpLCAwKTsKKworCXNobV90b2NfaW5zZXJ0KHRv YywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNz YWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9j X2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0 KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIobXEs IE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9oYW5kbGUg PSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0IHVwIGVycm9yIHF1ZXVl IGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRl KHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUpOworCXNo bV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJ c2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUu ICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVM TCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRzbV9zZWcg PSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisv KgorICogU3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNo YXJlZCBtZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KgorcGFfaW5pdF9hbmRfbGF1bmNoX3dvcmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xk Y29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87CisKKwkvKgorCSAqIFRoZSB3b3JrZXIgaW5mbyBjYW4gYmUgdXNlZCBmb3IgdGhlIGVudGly ZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvCisJICogY3JlYXRlIGl0IGluIGEgcGVybWFuZW50 IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFsbG9j MChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKworCS8qIFNldHVwIHNoYXJlZCBt ZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20od2luZm8pKQorCXsKKwkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5mbyk7CisJCXJldHVybiBOVUxMOwor CX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdv cmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlk LAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdp bmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJeworCQlQYXJhbGxlbEFwcGx5V29y a2Vyc0xpc3QgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCX0K KwllbHNlCisJeworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKwkJd2luZm8gPSBOVUxM OworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3 aW5mbzsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxl bCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICovCit2b2lkCitw YV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywg Y29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsK KwlUaW1lc3RhbXBUeiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSk7CisKKyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAwMAorI2RlZmlu ZSBTSE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9N UykKKworCWZvciAoOzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFu ZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQgPT0gU0hNX01R X1NVQ0NFU1MpCisJCQlicmVhazsKKwkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hF RCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRh IHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChyZXN1bHQgPT0gU0hNX01R X1dPVUxEX0JMT0NLKTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBX YWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAor CQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsK KworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGF0 dGVtcHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwgd2UgcmVzdGFy dAorCQkgKiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRs b2NrcyB3aXRoIGFub3RoZXIKKwkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBSZWZlciB0byB0 aGUgY29tbWVudHMgYXRvcAorCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMgZm9yIGRldGFpbHMu CisJCSAqLworCQlpZiAoc3RhcnRUaW1lID09IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7CisJCWVsc2UgaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0 VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VU X01TKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElP Tl9GQUlMVVJFKSwKKwkJCQkJIGVycm1zZygidGVybWluYXRpbmcgbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZHVlIHRvIHRpbWVvdXQiKSkpOworCX0KK30KKworLyoK KyAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0 YXRlIGhhcyByZWFjaGVkIG9yCisgKiBleGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAq Lworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvLAorCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sK Kwlmb3IgKDs7KQorCXsKKwkJLyoKKwkJICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUg aGFzIHJlYWNoZWQgb3IgZXhjZWVkZWQgdGhlIGdpdmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAq LworCQlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkK KwkJCWJyZWFrOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9Q QVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3 ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVy cnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8KK3ZvaWQKK3BhX3dh aXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwkv KgorCSAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0YXRl IHRvCisJICogUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCB3aGljaCBtZWFucyBpdCBoYXMgYWNxdWly ZWQgdGhlIHRyYW5zYWN0aW9uCisJICogbG9jay4gVGhpcyBpcyB0byBwcmV2ZW50IGxlYWRlciBh cHBseSB3b3JrZXIgZnJvbSBhY3F1aXJpbmcgdGhlCisJICogdHJhbnNhY3Rpb24gbG9jayBlYXJs aWVyIHRoYW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlwYV93YWl0X2Zvcl94 YWN0X3N0YXRlKHdpbmZvLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKworCS8qCisJICogV2Fp dCBmb3IgdGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVxdWly ZWQgdG8gZGV0ZWN0CisJICogZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzLiBTZWUgY29tbWVudHMgYXRvcCB0aGlzCisJICogZmlsZS4KKwkgKi8KKwlwYV9s b2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CisJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVz aXZlTG9jayk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBzdGF0ZSBiZWNvbWVzIFBBUkFMTEVM X1RSQU5TX0ZJTklTSEVEIGluIGNhc2UgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzIGNhdXNpbmcgdGhlIGxvY2sgdG8gYmUKKwkgKiBy ZWxlYXNlZC4KKwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0g UEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi bG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciIpKSk7Cit9CisKKy8qCisgKiBTZXQgYW4gZW51bSBpbmRpY2F0aW5nIHRoZSB0cmFu c2FjdGlvbiBzdGF0ZSBmb3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisg Ki8KK3ZvaWQKK3BhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndz aGFyZWQsCisJCQkJICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGluTG9j a0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT54YWN0X3N0YXRlID0geGFjdF9z dGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdl dCBhbiBlbnVtIGluZGljYXRpbmcgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4g cGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0 ZQorcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkK K3sKKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCVNwaW5Mb2NrQWNxdWlyZSgm d3NoYXJlZC0+bXV0ZXgpOworCXhhY3Rfc3RhdGUgPSB3c2hhcmVkLT54YWN0X3N0YXRlOworCVNw aW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIHhhY3Rfc3RhdGU7Cit9 CisKKy8qCisgKiBTZXQgdGhlIHdvcmtlciB0aGF0IHJlcXVpcmVkIGZvciBhcHBseWluZyB0aGUg Y3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQKK3BhX3NldF9zdHJlYW1f YXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlzdHJlYW1f YXBwbHlfd29ya2VyID0gd2luZm87Cit9CisKKy8qCisgKiBGb3JtIGEgdW5pcXVlIHNhdmVwb2lu dCBuYW1lIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBk aWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBmb3IgcHVibGljYXRpb25zIG9uIGRpZmZlcmVudCBub2Rl cyBjYW4KKyAqIHJlY2VpdmUgc2FtZSByZW1vdGUgeGlkLCBzbyB3ZSBuZWVkIHRvIHVzZSBzdWJz Y3JpcHRpb24gaWQgYWxvbmcgd2l0aCBpdC4KKyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgaW4gdGhl IHN1cHBsaWVkIGJ1ZmZlci4KKyAqLworc3RhdGljIHZvaWQKK3BhX3NhdmVwb2ludF9uYW1lKE9p ZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpzcG5hbWUsIFNpemUgc3pzcCkKK3sK KwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30K KworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBj YW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFuc2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQgYnkg Y2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGEgZGlmZmVyZW50IHhpZC4g SW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2UgYXJl IGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAqIGlmIHJlcXVpcmVkLgorICovCit2b2lkCitwYV9z dGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRv cF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHRvcF94aWQgJiYKKwkJIWxpc3RfbWVtYmVy X3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRj dHg7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUo TXlTdWJzY3JpcHRpb24tPm9pZCwgY3VycmVudF94aWQsCisJCQkJCQkgIHNwbmFtZSwgc2l6ZW9m KHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAiZGVmaW5pbmcgc2F2ZXBvaW50ICVzIGluIGxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkv KiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5U LiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlpZiAoIUlzVHJhbnNh Y3Rpb25TdGF0ZSgpKQorCQkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCUJlZ2lu VHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0K KworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJ ICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayAoc2VlCisJ CSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSkuCisJCSAqLworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rp b25Db250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5kX3hpZChzdWJ4YWN0bGlzdCwgY3Vy cmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9CisKKy8q CisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2Fz IGFwcGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9z dHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlU cmFuc2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1Ynhp ZCA9IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBz byB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4g Y2FzZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFi b3J0X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFt cCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBh cmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAq IGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJ eworCQkvKgorCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3Npbmcg YW4gZW1wdHkgc3RyZWFtaW5nCisJCSAqIHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2UgdGhlIGxv Y2sgd29uJ3QgYmUgcmVsZWFzZWQgZHVyaW5nCisJCSAqIHRyYW5zYWN0aW9uIHJvbGxiYWNrLgor CQkgKi8KKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQlBYm9y dEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJ eworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVM TCk7CisKKwkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQpOworCX0KKwllbHNlCisJeworCQkvKiBPSywgc28gaXQncyBhIHN1YnhhY3Qu IFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuICovCisJCWludAkJCWk7CisJCWNoYXIJCXNwbmFt ZVtOQU1FREFUQUxFTl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9p ZCwgc3VieGlkLCBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJv bGxpbmcgYmFjayB0byBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qCisJCSAqIFNlYXJjaCB0aGUgc3VieGFj dGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0IHRyYWNrZWQgZm9yIHRoZQorCQkgKiBzdWJ4YWN0 LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCSAqCisJCSAqIE5vdGUgdGhhdCBJZiBpdCdzIGFu IGVtcHR5IHN1Yi10cmFuc2FjdGlvbiB0aGVuIHdlIHdpbGwgbm90IGZpbmQgdGhlCisJCSAqIHN1 YnhpZCBoZXJlLgorCQkgKi8KKwkJZm9yIChpID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0g MTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgeGlkX3RtcCA9IGxmaXJzdF94 aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwgaSkpOworCisJCQlpZiAoeGlkX3RtcCA9PSBz dWJ4aWQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShz dWJ4YWN0bGlzdCwgaSArIDEpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJfQorfQorCisv KgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3Ig ZWFjaCBzdHJlYW0gYmxvY2suCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVM X0FQUExZX0xPQ0tfU1RSRUFNIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiBzdHJlYW0gbG9j ay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCBhcHBseXBhcmFsbGVsd29ya2Vy LmMgdG8gc2VlIGhvdyB0aGUgc3RyZWFtIGxvY2sKKyAqIGlzIHVzZWQuCisgKi8KK3ZvaWQKK3Bh X2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlM b2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSwgbG9ja21vZGUpOwor fQorCit2b2lkCitwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBs b2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJF QU0sIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBh bmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggbG9jYWwgdHJhbnNhY3Rpb24KKyAqIGFwcGx5Lgor ICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QgdG8g aW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHRyYW5zYWN0aW9uIGxvY2suCisgKgorICogTm90ZSB0 aGF0IGFsbCB0aGUgY2FsbGVycyBtdXN0IHBhc3MgYSByZW1vdGUgdHJhbnNhY3Rpb24gSUQgaW5z dGVhZCBvZiBhCisgKiBsb2NhbCB0cmFuc2FjdGlvbiBJRCBhcyB4aWQuIFRoaXMgaXMgYmVjYXVz ZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gSUQgd2lsbAorICogb25seSBiZSBhc3NpZ25lZCB3aGls ZSBhcHBseWluZyB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSBidXQKKyAq IGl0J3MgcG9zc2libGUgdGhhdCB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaXMgYmxvY2tlZAorICogYnkgYSBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHRyYW5z YWN0aW9uIGluIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQorICogY2FuIG9ubHkg Y29tbXVuaWNhdGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSBsZWFkZXIgYWZ0ZXIg YXBwbHlpbmcKKyAqIHRoZSBmaXJzdCBjaGFuZ2Ugc28gaXQgd29uJ3QgYmUgYWJsZSB0byB3YWl0 IGFmdGVyIHNlbmRpbmcgdGhlIHhhY3QgZmluaXNoCisgKiBjb21tYW5kIHVzaW5nIHRoaXMgbG9j ay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCBhcHBseXBhcmFsbGVsd29ya2Vy LmMgdG8gc2VlIGhvdyB0aGUgdHJhbnNhY3Rpb24KKyAqIGxvY2sgaXMgdXNlZC4KKyAqLwordm9p ZAorcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21v ZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2Nr bW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Np b24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQ UExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMKaW5kZXggMmNjMGFjOS4uMzAzNTU3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC02NTIsOSArNjUyLDEwIEBAIERlY29kZUNvbW1pdChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7Ci0JCQlSZW9yZGVy QnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmln cHRyKTsKKwkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1Ynhh Y3RzW2ldLCBidWYtPm9yaWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsKIAkJfQotCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIpOworCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIsIGNvbW1pdF90 aW1lKTsKIAogCQlyZXR1cm47CiAJfQpAQCAtODIyLDEwICs4MjMsMTEgQEAgRGVjb2RlQWJvcnQo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZv ciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVm ZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1 Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIs IGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwg eGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+ cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGlt ZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDczNTk0YzYuLjk1MDM2YzUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU1LDYgKzU1 LDcgQEAKIC8qIEdVQyB2YXJpYWJsZXMgKi8KIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0g MjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy OwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogCkBAIC0x NTIsOCArMTUzLDEwIEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMg aXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2Ug dGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRo ZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAog V2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwK IAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2Vy SGFuZGxlICpoYW5kbGUpCkBAIC0xNjksMTEgKzE3MiwxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25X b3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUo TG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBk aWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3Jr ZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwog CQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2Vy LT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK QEAgLTE4OCw3ICsxOTEsNyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNh bFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0 aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1Jl bGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNl OwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2ICsyMTMsOCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3Jr ZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3Jr ZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vi c2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGlu IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyLgogICovCiBMb2dp Y2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVs aWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjI0LDYgKzIyOSwxMCBAQCBsb2dpY2FscmVwX3dv cmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJ CUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkv KiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlX b3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09 IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5w cm9jKSkKIAkJewpAQCAtMjYwLDExICsyNjksMTMgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQo T2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgbG9naWNhbCBy ZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKgorICogUmV0dXJu cyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpz dWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQs IGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpAQCAtMjczLDcgKzI4NCwxMiBAQCBs b2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAq c3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90ID0gMDsKIAlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKKwlpbnQJCQlucGFyYWxsZWxh cHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3BhcmFsbGVsX2FwcGx5 X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBT YW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2VyIGNhbm5vdCBiZSBhIHN1YndvcmtlciAqLwor CUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkp OwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTEs NyArMzY3LDI2IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtl cnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50 KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZhbHNlIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBsaW1pdAorCSAqIHBlciBzdWJzY3JpcHRpb24u CisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAmJgorCQlucGFyYWxsZWxhcHBs eXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikK Kwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJCWVyZXBvcnQo TE9HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCks CisJCQkJIGVycm1zZygib3V0IG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMiKSwKKwkJCQkgZXJy aGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbi4iKSkpOworCisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpA QCAtMzY1LDcgKzQwMCw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJB VElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGlu Y3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOwor CQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBA IC0zODAsNiArNDE1LDggQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFU RV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJ d29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlk ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3 b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtl ci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3Jr ZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVj dl90aW1lKTsKQEAgLTM5NywxOSArNDM0LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5E X0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFy dF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1df TUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJH V19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93 b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBh cmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0 aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1Zh bGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAi bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwg c3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNu cHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJ ZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJp bnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy Iik7CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25w cmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJh bGxlbCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExF TiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGlt ZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsK IAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJh bGxlbF9hcHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2Rz bSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3Vu ZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29y a2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ3NCwyMyBA QCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVE RUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJ CSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nl cy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1 bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29y a2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9u V29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0g KiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlm IGFueSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJ bnRlcm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0 YWNoZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJf c3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlM b2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxv Z2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3Jr ZXIsIG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVs ZEJ5TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkg KiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVj ayBpZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9z dG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBh IGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3Jr ZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAog CQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlp ZiAod29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzNiw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29y a2VyIC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29y a2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGll LiAqLwogCWZvciAoOzspCkBAIC01MjMsNiArNTYyLDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9n aWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVw V29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBM V19TSEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVs aWQsIGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBs eVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3Jr ZXIsIFNJR1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoK KyAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVS TSB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhp dHMgY2xlYW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xv dF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwor CisJQXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRp b25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJ QXNzZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBz dG9wIHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBp cyBhbGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYg d29ya2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwg U0lHSU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAt NTk1LDExICs2ODEsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQog CiAvKgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgor ICogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhl IGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAq Lwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0 b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJ CS8qCisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxl bCBhcHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGVtIHRvIHByZXZlbnQg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZnJvbQorCQkgKiByZWNlaXZpbmcgdGhlIHdvcmtlciB0 ZXJtaW5hdGlvbiBtZXNzYWdlcyB3aGljaCB3aWxsIGNhdXNlIHRoZQorCQkgKiBsZWFkZXIgdG8g ZXhpdC4KKwkJICovCisJCXBhX2RldGFjaF9hbGxfZXJyb3JfbXEoKTsKKworCQlMV0xvY2tBY3F1 aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJCXdvcmtlcnMgPSBsb2dp Y2FscmVwX3dvcmtlcnNfZmluZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwkJ Zm9yZWFjaChsYywgd29ya2VycykKKwkJeworCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dp Y2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7CisKKwkJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3Jr ZXIodykpCisJCQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3LCBTSUdURVJNKTsK KwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCX0KKwogCS8q IEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAqLwogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTYyMiw2ICs3MzcsOCBAQCBsb2dpY2FscmVw X3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJp ZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5y ZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gSW52YWxpZFBp ZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CiB9CiAKIC8qCkBAIC02NTMsNiAr NzcwLDEzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQog CWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ICE9IE5VTEwpCiAJCUZpbGVT ZXREZWxldGVBbGwoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CiAKKwkvKgor CSAqIFNlc3Npb24gbGV2ZWwgbG9ja3MgbWF5IGJlIGFjcXVpcmVkIG91dHNpZGUgb2YgYSB0cmFu c2FjdGlvbiBpbiBwYXJhbGxlbAorCSAqIGFwcGx5IG1vZGUgYW5kIHdpbGwgbm90IGJlIHJlbGVh c2VkIHdoZW4gdGhlIHdvcmtlciB0ZXJtaW5hdGVzLCBzbworCSAqIG1hbnVhbGx5IHJlbGVhc2Ug YWxsIGxvY2tzIGJlZm9yZSB0aGUgd29ya2VyIGV4aXRzLgorCSAqLworCUxvY2tSZWxlYXNlQWxs KERFRkFVTFRfTE9DS01FVEhPRCwgdHJ1ZSk7CisKIAlBcHBseUxhdW5jaGVyV2FrZXVwKCk7CiB9 CiAKQEAgLTY4MSw2ICs4MDUsMzMgQEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQg c3ViaWQpCiB9CiAKIC8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBu b3QgbmVjZXNzYXJpbHkgcnVubmluZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEg c3Vic2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBz dWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVs ZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNo ZWQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywgb25seSBjb3VudGluZyB0aG9zZSB3aGljaAorCSAq IGhhdmUgdGhlIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwg bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdv cmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9 PSBzdWJpZCAmJiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQlyZXMrKzsKKwl9CisKKwly ZXR1cm4gcmVzOworfQorCisvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1 dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CiAg Ki8KQEAgLTg2OSw3ICsxMDIwLDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQkJCXdhaXRfdGltZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQls b2dpY2FscmVwX3dvcmtlcl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAot CQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93 bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApAQCAt OTUyLDYgKzExMDMsMTAgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQpCiAJ CQljb250aW51ZTsKIAorCQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKKwkJCWNvbnRpbnVl OworCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9IE9i amVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL21lc29uLmJ1aWxkCmluZGV4IDc3MzU4M2EuLjI2YmZjMGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZApAQCAtMSw0ICsxLDUgQEAKIGJhY2tl bmRfc291cmNlcyArPSBmaWxlcygKKyAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCiAgICdkZWNv ZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCBmMTM0ZTQ0Li44YjA4Mzc4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNzUsMTIgKzEwNzUsMjAgQEAg UmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0dW0gYXJnKQogICogYXJy YXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGluZwogICogcmVwbG9yaWdp bl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25seSBvbmUgc3VjaCBjYWNo ZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKLSAqIGNhY2hl ZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlz IHRvcm4gZG93bgotICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqIE5vcm1h bGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3Mgc28g dGhlIGNhY2hlZAorICogdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2 aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24gd2l0aAorICogcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0 KCkuIEZvciB0aGlzIG5vcm1hbCBjYXNlIHBhc3MgYWNxdWlyZWRfYnkgPSAwCisgKiAobWVhbmlu ZyB0aGUgc2xvdCBpcyBub3QgYWxsb3dlZCB0byBiZSBhbHJlYWR5IGFjcXVpcmVkIGJ5IGFub3Ro ZXIgcHJvY2VzcykuCisgKgorICogSG93ZXZlciwgc29tZXRpbWVzIG11bHRpcGxlIHByb2Nlc3Nl cyBjYW4gc2FmZWx5IHJlLXVzZSB0aGUgc2FtZSBvcmlnaW4gc2xvdAorICogKGZvciBleGFtcGxl LCBtdWx0aXBsZSBwYXJhbGxlbCBhcHBseSBwcm9jZXNzZXMgY2FuIHNhZmVseSB1c2UgdGhlIHNh bWUKKyAqIG9yaWdpbiwgcHJvdmlkZWQgdGhleSBtYWludGFpbiBjb21taXQgb3JkZXIgYnkgYWxs b3dpbmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSkuIEZvciB0aGlz IGNhc2UgdGhlIGZpcnN0IHByb2Nlc3MgbXVzdCBwYXNzIGFjcXVpcmVkX2J5ID0KKyAqIDAsIGFu ZCB0aGVuIHRoZSBvdGhlciBwcm9jZXNzZXMgc2hhcmluZyB0aGF0IHNhbWUgb3JpZ2luIGNhbiBw YXNzCisgKiBhY3F1aXJlZF9ieSA9IFBJRCBvZiB0aGUgZmlyc3QgcHJvY2Vzcy4KICAqLwogdm9p ZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0 YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMw LDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChj dXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vy c3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9i eSAhPSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcgKzExNjEsMTEgQEAg cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vz c2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwog Ci0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJ aWYgKGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVp cmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUt PmFjcXVpcmVkX2J5ICE9IGFjcXVpcmVkX2J5KQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZp bmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggT0lE ICV1IHdoaWNoIHdhcyBhY3F1aXJlZCBieSAlZCIsCisJCQkgbm9kZSwgYWNxdWlyZWRfYnkpOwog CiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzM3LDcgKzEz NDksNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9B UkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIo UEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUs IGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4g PSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBm Zjg1MTNlLi5kNjE2MGU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CkBAIC0xMTYzLDEwICsxMTYzLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBX cml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5k IHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFi b3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRf bHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9p ZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0 aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBUcmFu c2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBUaW1lc3Rh bXBUeiBhYm9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2VuZGJ5dGUo b3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIApAQCAtMTE3NSwxOSArMTE3OSw0 MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNh Y3Rpb25JZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4 aWQpOwogCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfaW5m bykKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChv dXQsIGFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20g dGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRydWUsIHJl YWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9u J3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBp biwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCits b2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2lj YWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9y dF9pbmZvKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7 CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEt PnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGlu LCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlpZiAocmVhZF9hYm9ydF9p bmZvKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOwor CQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwllbHNl CisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJYWJv cnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCAzMWY3MzgxLi5kZWQ0NmE5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YwpAQCAtMjg0Niw3ICsyODQ2LDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZvaWQKLVJl b3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHogYWJvcnRf dGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4NTcsNiArMjg1OCw4IEBA IFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54 YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJh bnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlm IChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKQEAgLTI5MzEsNyArMjkzNCw4IEBAIFJlb3Jk ZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RS dW5uaW5nWGlkKQogICogdG8gdGhpcyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRoZSB0cmFuc2FjdGlv biBpbmNvbXBsZXRlbHkuCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZm ZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbiwKKwkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhO ICp0eG47CiAKQEAgLTI5NDIsNiArMjk0Niw4IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhu ID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9y dF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90 ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkK IAkJcmItPnN0cmVhbV9hYm9ydChyYiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggOTRlODEzYS4uZGFlZWE2YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xNCw3ICsxNCw3IEBA CiAgKgkgIFRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIGlzIGRvbmUgc2VwYXJhdGVs eSBmb3IgZWFjaCB0YWJsZSwKICAqCSAgaW4gYSBzZXBhcmF0ZSBhcHBseSB3b3JrZXIgdGhhdCBv bmx5IGZldGNoZXMgdGhlIGluaXRpYWwgc25hcHNob3QgZGF0YQogICoJICBmcm9tIHRoZSBwdWJs aXNoZXIgYW5kIHRoZW4gc3luY2hyb25pemVzIHRoZSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtIHdp dGgKLSAqCSAgdGhlIG1haW4gYXBwbHkgd29ya2VyLgorICoJICB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlci4KICAqCiAgKgkgIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMgZm9yIGRvaW5nIHRoZSBz eW5jaHJvbml6YXRpb24gdGhpcyB3YXk6CiAgKgkgICAtIEl0IGFsbG93cyB1cyB0byBwYXJhbGxl bGl6ZSB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbgpAQCAtMTUzLDcgKzE1Myw3IEBA IGZpbmlzaF9zeW5jX3dvcmtlcih2b2lkKQogCQkJCQlnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVw V29ya2VyLT5yZWxpZCkpKSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBG aW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAqLworCS8qIEZpbmQgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KIAlsb2dpY2FscmVwX3dvcmtl cl93YWtldXAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgSW52YWxpZE9pZCk7CiAKIAkvKiBT dG9wIGdyYWNlZnVsbHkgKi8KQEAgLTYwOSw3ICs2MDksOCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFi bGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJIE15U3Vi c2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJCQkJ CQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkgcnN0YXRl LT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSBEU01f SEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBub3c7CiAJ CQkJCX0KIAkJCQl9CkBAIC02MzAsNiArNjMxLDE0IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNf Zm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNpbmdf dGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJLyoKKwkgKiBTa2lwIGZvciBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2UgdGhleSBvbmx5IG9wZXJhdGUgb24gdGFibGVzIHRo YXQKKwkgKiBhcmUgaW4gYSBSRUFEWSBzdGF0ZS4gU2VlIHBhX2Nhbl9zdGFydCgpIGFuZAorCSAq IHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoKS4KKwkgKi8KKwlpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkp CiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3VycmVudF9sc24pOwogCWVsc2UK QEAgLTEyNDcsNyArMTI1Niw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRy ICpvcmlnaW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUgd2UgdXNlIHRoZSBzbG90IG5hbWUg aW5zdGVhZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMgdGhlCi0JICogYXBwbGljYXRpb25f bmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbWFpbiBhcHBseSB3b3JrZXIs CisJICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5bmNocm9ub3VzIHJlcGxpY2F0aW9u IGNhbiBkaXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPQpA QCAtMTI5NSw3ICsxMzA0LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIg Km9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQu CiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxz ZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4g PSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRf cHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xNDA2LDcgKzE0MTUsNyBAQCBMb2dpY2FsUmVwU3luY1Rh YmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBn byBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9p ZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJl cGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5p ZDsKIAl9CiAJZWxzZQpAQCAtMTQ2MSw4ICsxNDcwLDggQEAgY29weV90YWJsZV9kb25lOgogCVNw aW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxtdXRleCk7CiAKIAkvKgotCSAq IEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRvIGNh dGNoIHVwIGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29wIGRv IGl0LgorCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGVs bHMgdXMgdG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1cm4gdG8gbGV0IExvZ2ljYWxSZXBB cHBseUxvb3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29ya2VyX3N0YXRlX2NoYW5nZShTVUJS RUxfU1RBVEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZTQ4YTNmNS4uMzVkZWIzMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiw1NCBAQAogICogU1RS RUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVk IHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1p dCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBp bnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRo ZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBz dHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAx KSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogSWYgc3RyZWFtaW5nID0gcGFyYWxsZWws IHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKGlmCisgKiBhdmFpbGFibGUp IGFzIHNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0gaXMgcmVjZWl2ZWQuIFRoZSBsZWFk ZXIgYXBwbHkKKyAqIHdvcmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldyB3b3JrZXIg dmlhIHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcworICogd29ya2VyIGFzc2lnbmVkIHRpbGwg dGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvcgorICog dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcworICogZmlsZSBJL08gaW4gbW9zdCBjYXNlcywgYWx0aG91Z2ggd2Ug c3RpbGwgbmVlZCB0byBzcGlsbCB0byBhIGZpbGUgaWYgdGhlcmUKKyAqIGlzIG5vIHdvcmtlciBh dmFpbGFibGUuIEl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIgdG8gYXZv aWQKKyAqIGZhaWx1cmVzIGR1ZSB0byAoYSkgdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzLCBzYXkg aWYgd2UgaW5zZXJ0IGEgcm93IGluIHRoZQorICogZmlyc3QgdHJhbnNhY3Rpb24gYW5kIHVwZGF0 ZSBpdCBpbiB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIHRoZW4gYWxsb3dpbmcgdG8KKyAqIGFwcGx5 IGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBpbiB0aGUgdXBkYXRlLiAoYikg ZGVhZGxvY2tzLAorICogYWxsb3dpbmcgdHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRlIHRoZSBzYW1l IHNldCBvZiByb3dzL3RhYmxlcyBpbiBvcHBvc2l0ZQorICogb3JkZXIgdG8gYmUgYXBwbGllZCBp biBwYXJhbGxlbCBjYW4gbGVhZCB0byBkZWFkbG9ja3MuCisgKgorICogV2UgbWFpbnRhaW4gYSB3 b3JrZXIgcG9vbCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVhY2ggc3RyZWFtaW5n CisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBpbmZvcm1hdGlvbiBp biB0aGUKKyAqIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxh dW5jaGluZyBhIG5ldyB3b3JrZXIsIGl0cworICogaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhl IFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBh cHBseWluZyB0aGUgdHJhbnNhY3Rpb24sIHdlIG1hcmsgaXQgYXZhaWxhYmxlIGZvciByZS11c2Uu IE5vdywKKyAqIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBwbHkgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiwgd2UgY2hlY2sKKyAqIHRoZSBsaXN0IGZvciBhbnkgYXZhaWxhYmxl IHdvcmtlci4gTm90ZSB0aGF0IHdlIG1haW50YWluIGEgbWF4aW11bSBvZiBoYWxmCisgKiB0aGUg bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRo ZSBwb29sIGFuZAorICogYWZ0ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRl ciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wg dGhyZXNob2xkIGlzIGEgYml0IGFyYml0cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAq IHZhcmlhYmxlIGZvciB0aGlzIGluIHRoZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhl IGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBjcmVhdGUgc2VwYXJhdGUgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhcnRz LiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3QgY291bnQg aG93IG1hbnkgd29ya2VycyB3aWxsIGJlIHN0YXJ0ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bwor ICogYWxsb2NhdGUgZW5vdWdoIHNoYXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24g dGhlIG1heGltdW0gbnVtYmVyIG9mCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKSwgYnV0IHRoaXMKKyAqIHdvdWxk IHdhc3RlIG1lbW9yeSBpZiBubyBwcm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICog VGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHdpbGwgY29udGFpbiAoYSkgYSBzaG1f bXEgdGhhdCBpcyB1c2VkIHRvCisgKiBzZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZy b20gbGVhZGVyIGFwcGx5IHdvcmtlciB0byBwYXJhbGxlbCBhcHBseQorICogd29ya2VyIChiKSBh bm90aGVyIHNobV9tcSB0aGF0IGlzIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlciBtZXNz YWdlcworICogcmVwb3J0ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHRvIGxlYWRlciBhcHBseQorICogd29ya2VyIChjKSBuZWNlc3NhcnkgaW5mb3Jt YXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqIGFuZCBs ZWFkZXIgYXBwbHkgd29ya2VyIChpLmUuIG1lbWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZCkuCisgKgorICogSWYgbm8gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGF2YWlsYWJsZSB0 byBoYW5kbGUgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uCisgKiB3ZSBmb2xsb3cgYXBwcm9hY2gg Mi4KKyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhl IGZpbmFsIGNvbW1pdCBhcnJpdmVzCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3Ry ZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhh bmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5z YWN0aW9ucy4gVGhpcwpAQCAtMTUwLDYgKzE5Niw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxp YnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJt Yi9wZ193Y2hhci5oIgpAQCAtMjE5LDIwICsyNjYsMzkgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlF eGVjdXRpb25EYXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlv biByb3V0aW5nIGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9y IHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5 cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZworLyoKKyAqIFdoYXQgYWN0aW9uIHRv IHRha2UgZm9yIHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBUUkFOU19MRUFERVJfQVBQTFk6Cisg KiBUaGUgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBjaGFuZ2VzIG9mIHRoZQorICogdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkg YnkgdGhlIHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorICogVGhlIGFj dGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJs ZSBzeW5jIHdvcmtlci4KKyAqIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCB0aGVuIGFwcGxpZWQgd2hlbiB0aGUgZmluYWwKKyAqIGNvbW1pdCBhcnJpdmVzLgorICoK KyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorICogVGhlIGFjdGlvbiBtZWFucyB0 aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVlZCB0byBzZW5kIHRo ZQorICogY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5T X1BBUkFMTEVMX0FQUExZOgorICogVGhlIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mIHRoZQorICogdHJhbnNhY3Rpb24g YXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCiB7 Ci0JTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNh bFJlcFJlbE1hcEVudHJ5ICpyZWw7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVhbWluZyB0 cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAogCi0JLyogUmVtb3RlIG5vZGUg aW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICov Ci0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQlj aGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCS8qIEFjdGlv bnMgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX1NFUklBTEla RSwKKwlUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKKwlUUkFOU19QQVJBTExFTF9BUFBM WQorfSBUcmFuc0FwcGx5QWN0aW9uOwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFw cGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5 RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5k ID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICszMDgsOSBAQCBzdGF0aWMgQXBwbHlFcnJv ckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0g TlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBO VUxMOworRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBO VUxMOworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5 Q29udGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9y IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI1MSwyNyArMzE5LDM2IEBAIHN0YXRpYyBN ZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2VpdmVy Q29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAqTXlT dWJzY3JpcHRpb24gPSBOVUxMOwotc3RhdGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZh bHNlOworYm9vbAkJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9yZW1v dGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9s c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9j ZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbiA9IGZhbHNlOworYm9vbAkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKIAogc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIGFwcGxpZWQgYnkgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4KKyAqLworc3RhdGlj IHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCisvKgogICogV2UgZW5hYmxl IHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwg ZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24n cyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNr aXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdl cyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0 ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQg ZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAq IGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBk ZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhh dC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiks CisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2lu Y2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFu Z2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAq IGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBh cHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRo ZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisg KiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMgd2hlbiB1c2luZworICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHdl IGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlIGFwcGx5aW5nCisgKiB0aGUgY2hhbmdl cy4gU28sIHdlIGRvbid0IHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIGZpbmlzaCBM U04gaXMgc2V0CisgKiBieSB0aGUgdXNlci4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94 YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdf Y2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNo X2xzbikpKQpAQCAtMzIxLDEzICszOTgsOCBAQCBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRiYWNrKFhM b2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwogCiBzdGF0 aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCi1z dGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwotCiBzdGF0aWMgdm9p ZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyogcHJvdG90eXBlIG5lZWRl ZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rpc3BhdGNo KFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJu YWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5 X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJ CQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM2MCwxMCArNDMyLDI2IEBAIHN0YXRp YyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsKIHN0YXRpYyB2b2lkIGNsZWFyX3N1 YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogCiAvKiBGdW5jdGlv bnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBhcHBseV9lcnJvcl9j YWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9lcnJvcl9j b250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0YXRpYyBp bmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAKK3N0YXRp YyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rp b25JZCB4aWQsCisJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8p OworCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdv cmtlci4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X3dvcmtlcl9uYW1lKHZvaWQpCit7 CisJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGlj YXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciIpOworCWVsc2UgaWYgKGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJh bGxlbCBhcHBseSB3b3JrZXIiKTsKKwllbHNlCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciIpOworfQorCiAvKgogICogRm9ybSB0aGUgb3JpZ2luIG5hbWUgZm9y IHRoZSBzdWJzY3JpcHRpb24uCiAgKgpAQCAtMzkzLDE5ICs0ODEsNDEgQEAgUmVwbGljYXRpb25P cmlnaW5OYW1lRm9yTG9naWNhbFJlcChPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAgKgogICogVGhp cyBpcyBtYWlubHkgbmVlZGVkIGZvciBpbml0aWFsIHJlbGF0aW9uIGRhdGEgc3luYyBhcyB0aGF0 IHJ1bnMgaW4KICAqIHNlcGFyYXRlIHdvcmtlciBwcm9jZXNzIHJ1bm5pbmcgaW4gcGFyYWxsZWwg YW5kIHdlIG5lZWQgc29tZSB3YXkgdG8gc2tpcAotICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIG1h aW4gYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgorICogY2hhbmdlcyBj b21pbmcgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9mIGEgdGFi bGUuCiAgKgogICogTm90ZSB3ZSBuZWVkIHRvIGRvIHNtYWxsZXIgb3IgZXF1YWxzIGNvbXBhcmlz b24gZm9yIFNZTkNET05FIHN0YXRlIGJlY2F1c2UKICAqIGl0IG1pZ2h0IGhvbGQgcG9zaXRpb24g b2YgZW5kIG9mIGluaXRpYWwgc2xvdCBjb25zaXN0ZW50IHBvaW50IFdBTAogICogcmVjb3JkICsg MSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlU IG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQg d2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisg KgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5n IGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIsIHdlIGRpc2FsbG93IGFw cGx5aW5nIGNoYW5nZXMgb24gYSB0YWJsZSB0aGF0IGlzIG5vdCBpbgorICogdGhlIFJFQURZIHN0 YXRlLCBiZWNhdXNlIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdl IGFzIHdlCisgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoK KyAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGlzIGluIHBhX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3Np Z25pbmcgdGhlCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIHdvcmtl ciwgYnV0IGl0IGFsc28gbmVlZHMgdG8gYmUKKyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRo ZSB1c2VyIGV4ZWN1dGVzIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElD QVRJT04gaW4gcGFyYWxsZWwsIHRoZSBuZXcgdGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNj cmlwdGlvbl9yZWwKKyAqIHdoaWxlIGFwcGx5aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0 YXRpYyBib29sCiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqcmVsKQogewogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxv Z2ljYWxSZXBXb3JrZXItPnJlbGlkID09IHJlbC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlpZiAocmVsLT5zdGF0ZSAhPSBTVUJSRUxf U1RBVEVfUkVBRFkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCBzdG9wIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSksCisJCQkJCSBlcnJkZXRh aWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb25zIHVzaW5n IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdW50aWwgYWxsIHRhYmxlcyBoYXZlIGJlZW4gc3luY2hy b25pemVkLiIpKSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwt PnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJF TF9TVEFURV9TWU5DRE9ORSAmJgpAQCAtNDUxLDQzICs1NjEsODcgQEAgZW5kX3JlcGxpY2F0aW9u X3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisg KiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMuCiAgKgotICogSWYgaW4g c3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9u KSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9w bGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBJbiBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxv Y2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3Igc2VyaWFsaXplCisgKiBtb2RlLCBzaW1w bHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0 aW9uLCBhbmQKKyAqIGZvciBwYXJhbGxlbCBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3 aWxsIHNlbmQgdGhlIGNoYW5nZXMgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMgYW5kIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBkZWZpbmUgc2F2ZXBvaW50cyBpZgorICogbmVl ZGVkLiAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNo YW5nZXMgd2lsbCBiZQorICogYXBwbGllZCBieSBib3RoIGxlYWRlciBhcHBseSB3b3JrZXIgYW5k IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMpLgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBGb3Ig bm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBmYWxzZS4KKyAqIEZvciBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgdHJ1ZSBpZiBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLCBm YWxzZQorICogb3RoZXJ3aXNlLgorICoKKyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVp bmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01TR19SRUxBVElPTgorICogb3IgTE9HSUNBTF9S RVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJl IHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMgYm9vbAog aGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3Ry aW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVu dF94aWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rp b24gYXBwbHlfYWN0aW9uOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2Rl ICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09 IFRSQU5TX0xFQURFUl9BUFBMWSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9m ZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwog CiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMg dGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8K LQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQo cywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2Fj dGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImlu dmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24i KSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJl YWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJc3dpdGNoIChhcHBseV9h Y3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlBc3NlcnQoc3Ry ZWFtX2ZkKTsKKworCQkJLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVz cyBhbHJlYWR5IHRoZXJlKS4gKi8KKwkJCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOwor CisJCQkvKiBXcml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVh bV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJCXJldHVybiB0cnVlOworCisJCWNhc2UgVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYV9z ZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhl IHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUK KwkJCSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28g dXBkYXRlIHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBT ZWUgZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCXJl dHVybiAoYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rpb24g IT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQlwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgKz0gMTsKIAotCS8qIHdyaXRlIHRoZSBjaGFu Z2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBz KTsKKwkJCS8qIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRlZC4gKi8K KwkJCXBhX3N0YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsKKwkJCXJldHVy biBmYWxzZTsKIAotCXJldHVybiB0cnVlOworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCXJldHVybiBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KIH0K IAogLyoKQEAgLTkyMyw4ICsxMDc3LDExIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFs KExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5z YWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxv Y2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4K IAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwlpZiAo IUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBC ZWdpbiBjb21tYW5kLiAqLworCX0KIAogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3 ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05OTMsNiAr MTE1MCwxMiBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBI YW5kbGUgYSBDT01NSVQgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIHRyYW5zYWN0 aW9uLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUg dHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4g SW4gdGhhdCBjYXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICog dG8gZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5z dXJlIGFsbCB0aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBl bmVkIGluIHRoZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBj YW4gY2F1c2UgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8K IHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykK QEAgLTEwMzYsNiArMTE5OSwxMiBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmlu Z0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIFJPTExCQUNLIFBSRVBBUkVEIG9mIGEgcHJldmlv dXNseSBQUkVQQVJFRCBUUkFOU0FDVElPTi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVl ZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBw YXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRl ZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQg dHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNv bmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRl cGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxiYWNr X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwODksMTUgKzEyNTgsMTMgQEAgYXBwbHlfaGFu ZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJF QU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkg YWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFz IHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUo U3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRh OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFw cGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChF UlJPUiwKQEAgLTExMTMsMjQgKzEyODAsODIgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJl KFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnByZXBh cmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlk LCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBw cmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOwor CWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9kYXRh LnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4g Ki8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0 YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5T X0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJl ZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKwkJ CS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBz byByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVw YXJlX2xzbik7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsgdGhl IHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50 ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVw YXJlX2RhdGEuZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQo d2luZm8pOworCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28g dGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiBjb250aW51ZSB0byByZWNlaXZl IGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJCQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5z aGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIFBS RVBBUkUgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2Vu ZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2Vu ZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0IGZvcgorCQkJ ICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBj b21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rp b24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlwYV93YWl0 X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisJCQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8s IHByZXBhcmVfZGF0YS54aWQpOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6 ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCQkJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlz dCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFy ZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQs IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihNeVBh cmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJCWVsb2coREVCVUcxLCAi ZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQiKTsKKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQor CisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0 aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTY3LDYgKzEzOTIsOCBAQCBh cHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkJCQkgZXJybXNnX2ludGVybmFsKCJP UklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIpKSk7CiB9CiAKKworCiAvKgogICogSGFu ZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCkBAIC0xMTc0LDIxICsxNDAxLDE0IEBAIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHsKIAli b29sCQlmaXJzdF9zZWdtZW50OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlU cmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJ T0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBt ZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3Rh cnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFt IHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0J ICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBX ZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNl ZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5m by4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxl IG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwMiwzNiArMTQyMiw5NSBAQCBhcHBs eV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoKLQkgKiBJ bml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4g VGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29y a2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0 aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJh bnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3Rh cnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0 aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2VyIGZv ciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50KQorCQlw YV9hbGxvY2F0ZV93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRSQU5TX0xF QURFUl9TRVJJQUxJWkU6CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5 Q29udGV4dCk7CisJCQkvKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3Rh cnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJl YW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBj YXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICog bWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmls ZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3Vi eGFjdCBpbmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkp OwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJ CS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBo YXZlbid0IHlldC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0 aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBhIHBlcm1hbmVudCBjb250 ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJICogc3RyZWFtaW5nIG1l c3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCisJCQkg KiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUg YQorCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0 aGVuIHdlIHdvbid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJ CQkgKi8KKwkJCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwkJCXsK KwkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKLQl9CisJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4 dCk7CisKKwkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNp emVvZihGaWxlU2V0KSk7CisJCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0 aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKKwkJCX0KIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4 aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9p bmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkvKiBP cGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29w ZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdt ZW50KTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJ CQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4 YWN0IGZpbGUuICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3Jl YWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CiAKLQllbmRfcmVwbGlj YXRpb25fc3RlcCgpOworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOwor CisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyCisJCQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBjaGFu Z2VzLgorCQkJICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJcGFfdW5sb2NrX3N0cmVh bSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKgorCQkJ ICogSW5jcmVtZW50IHRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJl IHByb2Nlc3NlZAorCQkJICogYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlw Z19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291 bnQsIDEpOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJ CS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24u ICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQlicmVhazsKKwor CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQl7 CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4g Ki8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJB TExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCX0KKworCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2Vz ID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJl YWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsK IH0KIAogLyoKQEAgLTEyNDAsNTggKzE1MTksOTcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFy dChTdHJpbmdJbmZvIHMpCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0 cmluZ0luZm8gcykKIHsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNB cHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKIAlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFU SU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2Vf ZmlsZSgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3Ry ZWFtX3hpZCwgJndpbmZvKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlv biBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dpdGNoIChhcHBs eV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBDb21t aXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJCS8qCisJCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdl cywgYW5kIHNlcmlhbGl6ZQorCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRo ZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2Nsb3NlX2Zp bGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkvKiBXZSBtdXN0 IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJc1RyYW5zYWN0 aW9uU3RhdGUoKSk7CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlD b250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29tbWl0IHRoZSBw ZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlDb250ZXh0UmVz ZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5 KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBMb2NrIGJl Zm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlcgor CQkJICogY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2lsbCB3YWl0CisJCQkgKiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxvY2suCisJCQkg Ki8KKwkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CisKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJ cGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisKKwkJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFM TEVMX0FQUExZOgorCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhlIHN0 cmVhbWluZyBjaHVuayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7CisKKwkJCS8q CisJCQkgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2luZyB0 aGUgY2hhbmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1pbmcg YmxvY2tzLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZQorCQkJICogaXMgbm8gbWVzc2Fn ZSBsZWZ0IGluIHRoZSBxdWV1ZS4KKwkJCSAqLworCQkJaWYgKHBnX2F0b21pY19zdWJfZmV0Y2hf dTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSkgPT0gMCkKKwkJ CXsKKwkJCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJl TG9jayk7CisJCQkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQl9CisKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURM RUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2Vy dChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZh bHNlOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0g YWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0 cmFuc2FjdGlvbiB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0 KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlv bklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ug d2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBz YW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRl bGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBz dWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhM b2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxNSw4ICsxNjMzLDYgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFs c2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQxLDcgKzE2NTcsNiBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJ CQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQog CkBAIC0xMzY0LDYgKzE2NzksMTAzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisg Ki8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykK K3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCWJvb2wJCXRvcGxldmVs X3hhY3Q7CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2df aW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwor CisJLyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5 IGluIHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0 X2RhdGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KTsKKwor CXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCXRv cGxldmVsX3hhY3QgPSAoeGlkID09IHN1YnhpZCk7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0g Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoK KwkJCSAqIFdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0 aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXNlcmlh bGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJ CQkgKiBGb3IgdGhlIGNhc2Ugb2YgYWJvcnRpbmcgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLCB1 bmxvY2sgdGhlCisJCQkgKiBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgY2FuIGNvbnRpbnVlIHRvCisJCQkgKiByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2Vz LgorCQkJICoKKwkJCSAqIFhYWCBGb3IgdGhlIGNhc2Ugb2YgYWJvcnRpbmcgdGhlIHN1YnRyYW5z YWN0aW9uLCB3ZSBvbmx5CisJCQkgKiBpbmNyZW1lbnQgdGhlIG51bWJlciBvZiBzdHJlYW1pbmcg YmxvY2tzIHdpdGhvdXQgcmVsZWFzaW5nIHRoZQorCQkJICogbG9jay4gVGhpcyBtYXkgc2xpZ2h0 bHkgZGVsYXkgdGhlIHByb2Nlc3Npbmcgb2YgU1RSRUFNX0FCT1JUCisJCQkgKiBtZXNzYWdlIGJ1 dCBjYW4gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKKwkJ CSAqIG9uIHRoZSBsb2NrIGZvciB0aGUgbmV4dCBzZXQgb2YgY2hhbmdlcyBhZnRlciBwcm9jZXNz aW5nIHRoZQorCQkJICogU1RSRUFNX0FCT1JUIG1lc3NhZ2UuCisJCQkgKi8KKwkJCWlmICh0b3Bs ZXZlbF94YWN0KQorCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKKwkJCWVsc2UKKwkJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+ cGVuZGluZ19zdHJlYW1fY291bnQsIDEpOworCisJCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNz YWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJCQlwYV9zZW5kX2RhdGEod2lu Zm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJCSh2b2lk KSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKKwkJCXBhX3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSk7CisKKwkJ CS8qCisJCQkgKiBXZSBuZWVkIHRvIHdhaXQgYWZ0ZXIgcHJvY2Vzc2luZyByb2xsYmFjayB0byBz YXZlcG9pbnQgZm9yIHRoZQorCQkJICogbmV4dCBzZXQgb2YgY2hhbmdlcy4KKwkJCSAqCisJCQkg KiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2luZyB0aGUgY2hh bmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1pbmcgYmxvY2tz LiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZSBpcworCQkJICogbm8gbWVzc2FnZSBsZWZ0 IGluIHRoZSBxdWV1ZS4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0ICYmCisJCQkJcGdf YXRvbWljX3N1Yl9mZXRjaF91MzIoJk15UGFyYWxsZWxTaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2Nv dW50LCAxKSA9PSAwKQorCQkJeworCQkJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQt PnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxT aGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCX0KKworCQkJZWxvZyhERUJVRzEsICJm aW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCIpOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAK IAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTE0OTUsNiArMTkwNyw4 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2Fj dGlvbklkIHhpZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247 CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0x NTA0LDE0ICsxOTE4LDc0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g cykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEp OwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRf bHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbiAldSIsIHhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAKLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNl IFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFs KCZjb21taXRfZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNl cmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0 aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRh LmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRf ZGF0YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMg YW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9j ayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNh bgorCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLwor CQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKiBT ZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAq LworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJ ICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3 YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0 byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUg dG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICov CisJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwkJCXBnc3RhdF9yZXBvcnRf c3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS5lbmRfbHNu KTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQkodm9pZCkgcGFfZnJlZV93b3Jr ZXIod2luZm8sIHhpZCk7CisKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaXMgZWl0aGVy IG5vbi1lbXB0eSBvciBza2lwcGVkLCBzbyB3ZSBjbGVhciB0aGUKKwkJCSAqIHN1YnNraXBsc24u CisJCQkgKi8KKwkJCWNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihjb21taXRfZGF0YS5jb21t aXRfbHNuKTsKKworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKIAotCS8qIHVu bGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAq LwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7 CisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCXBh X3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVE KTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJ CWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOwor CQkJYnJlYWs7CisJfQogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1p dF9kYXRhLmVuZF9sc24pOwpAQCAtMTU1NSw2ICsyMDI5LDEzIEBAIGFwcGx5X2hhbmRsZV9jb21t aXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQlyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOwog CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxv Y2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAK IAkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOwpAQCAtMjUwNiw3 ICsyOTg3LDcgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykKIC8qCiAgKiBM b2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KICAqLwotc3Rh dGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2Fs UmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAtMjY3NSw2ICszMTU2LDEw IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIHsKIAlGbHVz aFBvc2l0aW9uICpmbHVzaHBvczsKIAorCS8qIFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMuICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkv KiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIApAQCAtMjczOSw2ICszMjI0LDcgQEAgTG9naWNhbFJl cEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJh Y2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9y X2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlh cHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRo aXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0y OTUzLDYgKzM0MzksNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNl aXZlZCkKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2Vu ZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMwNTMsNyArMzU0 MCw3IEBAIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29s IHJlcXVlc3RSZXBseSkKIC8qCiAgKiBSZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYgbmVlZGVk LiBNb3N0IGNoYW5nZXMgd2lsbCBiZSBleGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogbWF5 YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwpA QCAtMzA4MywyMiArMzU3MCwyMiBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJ aWYgKCFuZXdzdWIpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsICIKLQkJ CQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCi0JCQkJCQlN eVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhl IG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IHdhcyByZW1vdmVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9jbGVhbl9leGl0KHRy dWUpOwogCX0KIAogCS8qIEV4aXQgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQuICov CiAJaWYgKCFuZXdzdWItPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNn KCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJs ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZp cnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJ KGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhl IHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2Vy X2NsZWFuX2V4aXQodHJ1ZSk7CiAJfQogCiAJLyogIXNsb3RuYW1lIHNob3VsZCBuZXZlciBoYXBw ZW4gd2hlbiBlbmFibGVkIGlzIHRydWUuICovCkBAIC0zMTA5LDcgKzM1OTYsMTAgQEAgbWF5YmVf cmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCiAJLyoKIAkgKiBFeGl0IGlmIGFueSBwYXJhbWV0 ZXIgdGhhdCBhZmZlY3RzIHRoZSByZW1vdGUgY29ubmVjdGlvbiB3YXMgY2hhbmdlZC4KLQkgKiBU aGUgbGF1bmNoZXIgd2lsbCBzdGFydCBhIG5ldyB3b3JrZXIuCisJICogVGhlIGxhdW5jaGVyIHdp bGwgc3RhcnQgYSBuZXcgd29ya2VyIGJ1dCBub3RlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJ ICogd29ya2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBp cyBjaGFuZ2VkIGZyb20KKwkgKiAncGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0aGUg c2VydmVyIGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUKKwkgKiBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbi4KIAkgKi8KIAlpZiAoc3RyY21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9u LT5jb25uaW5mbykgIT0gMCB8fAogCQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlv bi0+bmFtZSkgIT0gMCB8fApAQCAtMzEyMCwxMSArMzYxMCwxNyBAQCBtYXliZV9yZXJlYWRfc3Vi c2NyaXB0aW9uKHZvaWQpCiAJCW5ld3N1Yi0+b3duZXIgIT0gTXlTdWJzY3JpcHRpb24tPm93bmVy IHx8CiAJCSFlcXVhbChuZXdzdWItPnB1YmxpY2F0aW9ucywgTXlTdWJzY3JpcHRpb24tPnB1Ymxp Y2F0aW9ucykpCiAJewotCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxp Y2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQg YmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CisJCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9H LAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRl ciBjaGFuZ2UiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQllbHNlCisJCQll cmVwb3J0KExPRywKKwkJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIs CisJCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0J CXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2NsZWFuX2V4aXQodHJ1ZSk7CiAJfQogCiAJ LyogQ2hlY2sgZm9yIG90aGVyIGNoYW5nZXMgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHRvby4g Ki8KQEAgLTM2MDgsMzcgKzQxMDQsMTYgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5f c3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0vKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFw cGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAqIENvbW1vbiBpbml0aWFsaXphdGlvbiBm b3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAq IEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRp b24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQogewot CWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29u dGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0 cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3Ru YW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVy X3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0 dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNp Z25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJ R1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgot CSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVj ZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1 eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRz IHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGlt ZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRo ZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2 ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJv bGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVw bGljYSIsCkBAIC0zNjY2LDEwICs0MTQxLDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAl dSB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBy ZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQp KSk7Ci0JCXByb2NfZXhpdCgwKTsKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2Ny aXB0aW9uICV1IHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVt b3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCkpKTsKKworCQlhcHBseV93b3JrZXJfY2xlYW5fZXhpdChmYWxzZSk7 CiAJfQogCiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CkBAIC0zNjc4LDExICs0MTU0LDEx IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9u LT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBs aWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3QgIgot CQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5n IHN0YXJ0dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0 b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICov CisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3Qgc3RhcnQg YmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJ CQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJv Y19leGl0KDApOworCQlhcHBseV93b3JrZXJfY2xlYW5fZXhpdChmYWxzZSk7CiAJfQogCiAJLyog U2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNlcidzIHdpc2hlcyAq LwpAQCAtMzY5NywxMyArNDE3Myw0OSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAotCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlk KSkpKTsKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJZ2V0X3JlbF9uYW1lKE15 TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCi0JCQkJ KGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJ CS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFz IHN0YXJ0ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1l KSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8qIExvZ2ljYWwgUmVw bGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCit2b2lkCitBcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMy KG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKwlYTG9nUmVjUHRy CW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOworCWNoYXIJICAgKm15c2xvdG5h bWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKKwlpbnQJCQlzZXJ2ZXJf dmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0 YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLworCXBxc2ln bmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lH VEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJ ICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNl aXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4 UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkgKi8KKworCS8qIEluaXRpYWxpc2Ugc3RhdHMg dG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1l ID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdv cmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qIExvYWQgdGhl IGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZl ciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwogCiAJLyogQ29ubmVjdCB0 byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVwbGljYXRpb24uICovCiAJZWxvZyhERUJVRzEs ICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2luZyBjb25uZWN0aW9uIHN0cmluZyBcIiVzXCIi LApAQCAtMzcyNiw3ICs0MjM4LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQog CX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29ya2VyICovCisJCS8qIFRo aXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7 CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1MCw3 ICs0MjYyLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9 IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlk KG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7 Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vz c2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBv cmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9n cmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc5MSwxMyAr NDMwMywzNiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVy c2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlv cHRpb25zLnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49 IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoK IAkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9W RVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJP VE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsK IAogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNhdGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0 aW9uLT5wdWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vi c2NyaXB0aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZyA9IE15 U3Vic2NyaXB0aW9uLT5zdHJlYW07CisKKwkvKgorCSAqIEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUg b3B0aW9uIHZhbHVlIGZvciBzdHJlYW1pbmcgb3B0aW9uIGFjY29yZGluZyB0bworCSAqIHRoZSAn c3RyZWFtaW5nJyBtb2RlIGFuZCB0aGUgcHVibGlzaGVyJ3MgYWJpbGl0eSB0byBzdXBwb3J0IHRo YXQgbW9kZS4KKwkgKi8KKwlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwICYmCisJCU15U3Vi c2NyaXB0aW9uLT5zdHJlYW0gPT0gU1VCU1RSRUFNX1BBUkFMTEVMKQorCXsKKwkJb3B0aW9ucy5w cm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBwc3RyZHVwKCJwYXJhbGxlbCIpOworCQlNeUxv Z2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc2Vy dmVyX3ZlcnNpb24gPj0gMTQwMDAwICYmCisJCQkgTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBT VUJTVFJFQU1fT0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIg PSBwc3RyZHVwKCJvbiIpOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0g ZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdf c3RyID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNl OworCX0KKwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlv bnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4p OwogCkBAIC0zODMxLDExICs0MzY2LDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2Fy ZykKIAogCQllcmVwb3J0KERFQlVHMSwKIAkJCQkoZXJybXNnX2ludGVybmFsKCJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB0d29fcGhhc2Ug aXMgJXMiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCi0JCQkJCQlNeVN1YnNjcmlwdGlv bi0+dHdvcGhhc2VzdGF0ZSA9PSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FCTEVEID8g IkRJU0FCTEVEIiA6Ci0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+dHdvcGhhc2VzdGF0ZSA9PSBMT0dJ Q0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgPyAiUEVORElORyIgOgotCQkJCQkJTXlTdWJz Y3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9FTkFC TEVEID8gIkVOQUJMRUQiIDoKLQkJCQkJCSI/IikpKTsKKwkJCQkJCQkJIE15U3Vic2NyaXB0aW9u LT5uYW1lLAorCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCA/ICJESVNBQkxFRCIgOgorCQkJCQkJCQkgTXlT dWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9Q RU5ESU5HID8gIlBFTkRJTkciIDoKKwkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0 YXRlID09IExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRU5BQkxFRCA/ICJFTkFCTEVEIiA6CisJ CQkJCQkJCSAiPyIpKSk7CiAJfQogCWVsc2UKIAl7CkBAIC0zODQ2LDcgKzQzODEsNyBAQCBBcHBs eVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJLyogUnVuIHRoZSBtYWluIGxvb3AuICovCiAJ c3RhcnRfYXBwbHkob3JpZ2luX3N0YXJ0cG9zKTsKIAotCXByb2NfZXhpdCgwKTsKKwlhcHBseV93 b3JrZXJfY2xlYW5fZXhpdChmYWxzZSk7CiB9CiAKIC8qCkBAIC0zODgyLDcgKzQ0MTcsNyBAQCBE aXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQogCQkJZXJybXNnKCJzdWJzY3JpcHRpb24g XCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAogCQkJCSAgIE15 U3Vic2NyaXB0aW9uLT5uYW1lKSk7CiAKLQlwcm9jX2V4aXQoMCk7CisJYXBwbHlfd29ya2VyX2Ns ZWFuX2V4aXQoZmFsc2UpOwogfQogCiAvKgpAQCAtMzg5NSw2ICs0NDMwLDE1IEBAIElzTG9naWNh bFdvcmtlcih2b2lkKQogfQogCiAvKgorICogSXMgY3VycmVudCBwcm9jZXNzIGEgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI/CisgKi8KK2Jvb2wKK0lzTG9naWNhbFBh cmFsbGVsQXBwbHlXb3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gSXNMb2dpY2FsV29ya2VyKCkgJiYg YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCk7Cit9CisKKy8qCiAgKiBTdGFydCBza2lwcGluZyBj aGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0aGUgZ2l2ZW4gTFNOIG1hdGNoZXMgdGhlCiAg KiBMU04gc3BlY2lmaWVkIGJ5IHN1YnNjcmlwdGlvbidzIHNraXBsc24uCiAgKi8KQEAgLTM5NTYs NyArNDUwMCw3IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlz aF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsK IAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0lu dmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tp cGxzbikpIHx8IGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAo IUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQpAQCAtNDAyOCw3ICs0NTcyLDcgQEAgY2xlYXJfc3Vic2Ny aXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2Fs bGJhY2sgdG8gZ2l2ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFw cGxpZWQgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICph cmcpCiB7CiAJQXBwbHlFcnJvckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnOwpAQCAtNDA1NiwyMyArNDYwMCw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2 b2lkICphcmcpCiAJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90 ZV9hdHRudW0gPCAwKQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciBy ZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBm aW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJl bG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJH UyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAg IGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJy YXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0J CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJh cmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xz bikpOworCXsKKwkJaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChY TG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgi cHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJp bmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwi JXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1l LAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJ CQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGlj YXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGlj YXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNo ZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxv Z2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs LnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAo WExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQo InByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVy aW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBc IiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJh cmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJn LT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAg IGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2lu ZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2Fn ZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJ CQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5 cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNw bmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwK KwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhl cnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGlu Zm9ybWF0aW9uIG9mIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCkBAIC00MDkyLDMgKzQ2NjAsNTgg QEAgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpCiAJYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnLnJlbW90ZV9hdHRudW0gPSAtMTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94 YWN0KEludmFsaWRUcmFuc2FjdGlvbklkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CisKKy8qCisg KiBSZXR1cm4gdGhlIGFjdGlvbiB0byB0YWtlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICp3 aW5mbyBpcyBhc3NpZ25lZCB0bworICogdGhlIGRlc3RpbmF0aW9uIHBhcmFsbGVsIHdvcmtlciBp bmZvIChpZiB0aGUgYWN0aW9uIGlzCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCks IG90aGVyd2lzZSAqd2luZm8gaXMgYXNzaWduZWQgTlVMTC4KKyAqLworc3RhdGljIFRyYW5zQXBw bHlBY3Rpb24KK2dldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQs IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCit7CisJKndpbmZvID0gTlVMTDsKKwor CWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwl7CisJCXJldHVybiBUUkFOU19QQVJB TExFTF9BUFBMWTsKKwl9CisJZWxzZSBpZiAoaW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCXsKKwkJ cmV0dXJuIFRSQU5TX0xFQURFUl9BUFBMWTsKKwl9CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGFy ZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorCSAq IHdvcmtlci4KKwkgKi8KKwkqd2luZm8gPSBwYV9maW5kX3dvcmtlcih4aWQpOworCisJaWYgKCp3 aW5mbykKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwl9CisJ ZWxzZQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CisJfQorfQorCisvKgor ICogRXhpdCByb3V0aW5lIGZvciBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5X3dvcmtl cl9jbGVhbl9leGl0KGJvb2wgb25fc3ViaW5mb19jaGFuZ2UpCit7CisJaWYgKGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpICYmIG9uX3N1YmluZm9fY2hhbmdlKQorCXsKKwkJLyoKKwkJICogSWYg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdHMgZHVlIHRvIHRoZSBzdWJzY3JpcHRpb24gaW5m b3JtYXRpb24KKwkJICogY2hhbmdlLCB3ZSBub3RpZnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg c28gdGhhdCB0aGUgbGVhZGVyIGNhbgorCQkgKiByZXBvcnQgbW9yZSBtZWFuaW5nZnVsIG1lc3Nh Z2UgaW4gdGltZSBhbmQgcmVzdGFydCB0aGUgbG9naWNhbAorCQkgKiByZXBsaWNhdGlvbi4KKwkJ ICovCisJCXBxX3B1dG1lc3NhZ2UoJ1gnLCBOVUxMLCAwKTsKKwl9CisKKwlwcm9jX2V4aXQoMCk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCAy ZWNhYTViLi5iZWFmODI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNlX291 dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29s CQlvcmlnaW5fb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsK LQlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwlkYXRhLT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1f T0ZGOwogCWRhdGEtPm1lc3NhZ2VzID0gZmFsc2U7CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFsc2U7 CiAKQEAgLTM2OSw3ICszNzAsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRp b25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciBy ZWR1bmRhbnQgb3B0aW9ucyIpKSk7CiAJCQlzdHJlYW1pbmdfZ2l2ZW4gPSB0cnVlOwogCi0JCQlk YXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCWRhdGEtPnN0cmVhbWlu ZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChk ZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTQ2MSwxMyArNDYyLDIw IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQ bHVnaW5PcHRpb25zICpvcHQsCiAJCSAqIHdlIG9ubHkgYWxsb3cgaXQgd2l0aCBzdWZmaWNpZW50 IHZlcnNpb24gb2YgdGhlIHByb3RvY29sLCBhbmQgd2hlbgogCQkgKiB0aGUgb3V0cHV0IHBsdWdp biBzdXBwb3J0cyBpdC4KIAkJICovCi0JCWlmICghZGF0YS0+c3RyZWFtaW5nKQorCQlpZiAoZGF0 YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9PRkYpCiAJCQljdHgtPnN0cmVhbWluZyA9IGZhbHNl OwotCQllbHNlIGlmIChkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fVkVSU0lPTl9OVU0pCisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJTVFJF QU1fT04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBw cm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhp Z2hlciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJT VFJFQU1fUEFSQUxMRUwgJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxS RVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBl cnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgcGFyYWxs ZWwgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCisJCQkJCQkJZGF0YS0+cHJvdG9jb2xf dmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pKSk7 CiAJCWVsc2UgaWYgKCFjdHgtPnN0cmVhbWluZykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtMTgzOSw2ICsxODQ3 LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCiAJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24pCiB7CiAJUmVvcmRlckJ1ZmZlclRY TiAqdG9wdHhuOworCVBHT3V0cHV0RGF0YSAqZGF0YSA9IChQR091dHB1dERhdGEgKikgY3R4LT5v dXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJYm9vbAkJd3JpdGVfYWJvcnRfaW5mbyA9IChkYXRhLT5z dHJlYW1pbmcgPT0gU1VCU1RSRUFNX1BBUkFMTEVMKTsKIAogCS8qCiAJICogVGhlIGFib3J0IHNo b3VsZCBoYXBwZW4gb3V0c2lkZSBzdHJlYW1pbmcgYmxvY2ssIGV2ZW4gZm9yIHN0cmVhbWVkCkBA IC0xODUyLDcgKzE4NjIsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlBc3NlcnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhuKSk7 CiAKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKLQlsb2dpY2FscmVwX3dy aXRlX3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkKTsKKwlsb2dp Y2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlk LCBhYm9ydF9sc24sCisJCQkJCQkJCSAgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSwgd3JpdGVf YWJvcnRfaW5mbyk7CisKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51 cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jCmluZGV4IDc3Njc2NTcuLjdjMDA5ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3lu Yy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93 YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC02NTcsNiArNjU4LDkgQEAgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xP R19NRU1PUllfQ09OVEVYVCkpCiAJCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsK IAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkK KwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IDEwNDMwNjguLjJmMTcxZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYwpAQCAtMTExNyw2ICsxMTE3LDQ1IEBAIFVubG9ja1NoYXJlZE9iamVjdEZv clNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCUxvY2tS ZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKIH0KIAorLyoKKyAqCQlMb2NrQXBwbHlUcmFu c2FjdGlvbkZvclNlc3Npb24KKyAqCisgKiBPYnRhaW4gYSBzZXNzaW9uLWxldmVsIGxvY2sgb24g YSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVwbGljYXRpb24g c3Vic2NyaWJlci4gU2VlIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbiBmb3Igbm90ZXMgYWJvdXQK KyAqIHNlc3Npb24tbGV2ZWwgbG9ja3MuCisgKi8KK3ZvaWQKK0xvY2tBcHBseVRyYW5zYWN0aW9u Rm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAor CQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9M T0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJ CQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwko dm9pZCkgTG9ja0FjcXVpcmUoJnRhZywgbG9ja21vZGUsIHRydWUsIGZhbHNlKTsKK30KKworLyoK KyAqCQlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICovCit2b2lkCitVbmxvY2tB cHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwg dWludDE2IG9iamlkLAorCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpCit7CisJTE9DS1RBRwkJ dGFnOworCisJU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04odGFnLAorCQkJCQkJCQkgIE15 RGF0YWJhc2VJZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJCSAgeGlkLAorCQkJCQkJCQkg IG9iamlkKTsKKworCUxvY2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKK30KIAogLyoK ICAqIEFwcGVuZCBhIGRlc2NyaXB0aW9uIG9mIGEgbG9ja2FibGUgb2JqZWN0IHRvIGJ1Zi4KQEAg LTEyMDIsNiArMTI0MSwxMyBAQCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNvbnN0 IExPQ0tUQUcgKnRhZykKIAkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKIAkJCQkJCQkgdGFn LT5sb2NrdGFnX2ZpZWxkNCk7CiAJCQlicmVhazsKKwkJY2FzZSBMT0NLVEFHX0FQUExZX1RSQU5T QUNUSU9OOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCisJCQkJCQkJIF8oInJlbW90ZSB0cmFu c2FjdGlvbiAldSBvZiBzdWJzY3JpcHRpb24gJXUgb2YgZGF0YWJhc2UgJXUiKSwKKwkJCQkJCQkg dGFnLT5sb2NrdGFnX2ZpZWxkMywKKwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMiwKKwkJCQkJ CQkgdGFnLT5sb2NrdGFnX2ZpZWxkMSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLAogCQkJCQkJCSBfKCJ1bnJlY29nbml6ZWQgbG9ja3RhZyB0eXBlICVk IiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMzA4MjA5My4uZjUyZTViYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwpAQCAtMzM3OSw2ICszMzc5LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChM b2dNZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1 cHQoKTsKKworCWlmIChQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcpCisJCUhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlcygpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCmluZGV4IGIyYWJkNzUuLjFmYWI0NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMKQEAgLTIzMCw2ICsyMzAsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfYWN0 aXZpdHkoV2FpdEV2ZW50QWN0aXZpdHkgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfTEFV TkNIRVJfTUFJTjoKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbExhdW5jaGVyTWFpbiI7CiAJCQli cmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTjoKKwkJ CWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlNYWluIjsKKwkJCWJyZWFrOwogCQlj YXNlIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTToKIAkJCWV2ZW50X25hbWUgPSAiUmVj b3ZlcnlXYWxTdHJlYW0iOwogCQkJYnJlYWs7CkBAIC0zODgsNiArMzkxLDkgQEAgcGdzdGF0X2dl dF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JPV19C VUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWluc2Vy dCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlf U1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0YXRl Q2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6 CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9sb2NrZnVuY3MuYwppbmRleCBmOWIzMjRlLi4zYmYwNDgzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2xvY2tmdW5jcy5jCkBAIC0zNywxMCArMzcsMTEgQEAgY29uc3QgY2hhciAqY29uc3QgTG9ja1Rh Z1R5cGVOYW1lc1tdID0gewogCSJzcGVjdG9rZW4iLAogCSJvYmplY3QiLAogCSJ1c2VybG9jayIs Ci0JImFkdmlzb3J5IgorCSJhZHZpc29yeSIsCisJImFwcGx5dHJhbnNhY3Rpb24iCiB9OwogCi1T dGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdUeXBlTmFtZXMpID09IChMT0NLVEFHX0FE VklTT1JZICsgMSksCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdUeXBlTmFtZXMp ID09IChMT0NLVEFHX0xBU1RfVFlQRSArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNo Iik7CiAKIC8qIFRoaXMgbXVzdCBtYXRjaCBlbnVtIFByZWRpY2F0ZUxvY2tUYXJnZXRUeXBlIChw cmVkaWNhdGVfaW50ZXJuYWxzLmgpICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmlu ZGV4IDFiZjE0ZWUuLjkxZjA0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBA IC0yOTgyLDYgKzI5ODIsMTggQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRb XSA9CiAJfSwKIAogCXsKKwkJeyJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJ CWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBw ZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9wYXJhbGxlbF9hcHBs eV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIsIDAsIE1BWF9QQVJBTExFTF9XT1JLRVJf TElNSVQsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCisJewogCQl7ImxvZ19yb3RhdGlvbl9h Z2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKIAkJCQkJCSAibG9nIGZp bGUgcm90YXRpb24uIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKaW5kZXggMDQzODY0NS4uMjJiMDJlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzU5LDYgKzM1OSw3IEBACiAjbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJfcHJv Y2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9zeW5jX3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMKKyNtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u ID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGRhNDI3ZjQuLjUxNDFhNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwpAQCAtNDQ4MSw3ICs0NDgxLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LApAQCAtNDYxOCw4ICs0NjE4LDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwg Y29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1 YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmlu YXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0g MCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJj bXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAyZWFl NTE5Li43NDBiMTM1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjQ5OSwxMSArNjQ5OSwyNCBAQCBkZXNjcmliZVN1 YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJLyog QmluYXJ5IG1vZGUgYW5kIHN0cmVhbWluZyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdjE0IGFuZCBo aWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQorCQl7CiAJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxuIgotCQkJ CQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgi QmluYXJ5IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJCQkJCQkg ICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFy eSIpKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgKENBU0Ugc3Vic3RyZWFtXG4iCisJCQkJCQkJCSAg IiAgICBXSEVOICdmJyBUSEVOICdvZmYnXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICd0JyBUSEVO ICdvbidcbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ3AnIFRIRU4gJ3BhcmFsbGVsJ1xuIgorCQkJ CQkJCQkgICIgICBFTkQpIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0 cmVhbWluZyIpKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ CQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJT dHJlYW1pbmciKSk7CisJCX0KIAogCQkvKiBUd29fcGhhc2UgYW5kIGRpc2FibGVfb25fZXJyb3Ig YXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNSBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDdi OTg3MTQuLjAxNmFmYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAt ODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJl bGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmJpbmFyeTsJ CS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUKIAkJCQkJCQkJICogcHVibGlz aGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0 cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3Vic3RyZWFtOwkJLyog U3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gU2VlCisJCQkJCQkJCSAqIFNVQlNUUkVB TV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFt IHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0LDcgKzEyNSw4IEBAIHR5cGVkZWYg c3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhl IHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJCS8qIEluZGljYXRl cyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJICogYmluYXJ5IGZv cm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25z dGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFtaW5nIHR3by1w aGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBp ZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRp c2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiArMTM5LDIxIEBAIHR5cGVkZWYgc3Ry dWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCiB9IFN1YnNj cmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cy4gKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09GRiAnZicKKworLyoKKyAqIFN0cmVhbWluZyBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQK KyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHVw c3RyZWFtLgorICovCisjZGVmaW5lIFNVQlNUUkVBTV9PTiAndCcKKworLyoKKyAqIFN0cmVhbWlu ZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEg cGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fUEFSQUxM RUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQs IGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1YnNjcmlw dGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1YmlkKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaAppbmRleCAyY2JlN2Q3Li43Nzk0 NzRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCkBAIC0yNiw0ICsy Niw2IEBAIGV4dGVybiB2b2lkIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQg KnN0bXQsIGJvb2wgaXNUb3BMZXZlbCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclN1YnNj cmlwdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2 b2lkIEFsdGVyU3Vic2NyaXB0aW9uT3duZXJfb2lkKE9pZCBzdWJpZCwgT2lkIG5ld093bmVySWQp OwogCitleHRlcm4gY2hhciBkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZik7CisKICNl bmRpZgkJCQkJCQkvKiBTVUJTQ1JJUFRJT05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFlMjgyMS4uZDUxM2VmNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247Citl eHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4 dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggN2VhYTRjOS4uMWRhN2IwMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAq IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJv dG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29k aW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNB TFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJv dG9jb2wgdmVyc2lvbgorICogd2hlcmUgd2Ugc3VwcG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsLgorICogSW50cm9kdWNlZCBpbiBQRzE2LgogICov CiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RS RUFNX1ZFUlNJT05fTlVNIDIKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJT SU9OX05VTSAzCi0jZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lD QUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9U T19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9O X05VTQogCiAvKgogICogTG9naWNhbCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBA IHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJ CWdpZFtHSURTSVpFXTsKIH0gTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisv KgorICogVHJhbnNhY3Rpb24gcHJvdG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5z YWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRf bHNuOworCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERh dGE7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQs IFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVn aW4oU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9k YXRhKTsKQEAgLTI0Niw5ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVy biBUcmFuc2FjdGlvbklkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g aW4sCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwog ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwot ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBU cmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJ CQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIg YWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwKKwkJCQkJCQkJ CQkgIGJvb2wgd3JpdGVfYWJvcnRfaW5mbyk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1B Ym9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKTsK IGV4dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24pOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOC4uZGM2OGNkOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsOCArMTIsMTYgQEAKICNp Zm5kZWYgTE9HSUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCisjaW5jbHVk ZSA8c2lnbmFsLmg+CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOworCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgUGFyYWxsZWxBcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7Citl eHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOworZXh0ZXJuIHZv aWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9p ZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBM T0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29y aWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5kZXggMmE1MGQxMC4u YzdiMWFkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0 ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwg Ym9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhM b2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29t bWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBu b2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBu b2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3Jl c2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9n cmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggMDIw Mjc1NS4uM2MzMGRhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRw dXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCkBAIC0yNiw3ICsy Niw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQogCUxpc3QJICAgKnB1YmxpY2F0aW9u X25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJ c3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQltZXNzYWdlczsKIAlib29sCQl0 d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRl cmJ1ZmZlci5oCmluZGV4IGIyM2Q4Y2MuLmIyYTcwMjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9y ZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsKIAkJVGltZXN0YW1w VHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwogCX0JCQl4YWN0X3Rp bWU7CiAKIAkvKgpAQCAtNjYzLDkgKzY2NCwxMSBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVy QXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBj b21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBU aW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9s ZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKLWV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9y Z2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24s CisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1 ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRCYXNlU25hcHNob3Qo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmgKaW5kZXggOTMzOWYyOS4uMGM4YmJkZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oCkBAIC0xODIsNyArMTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJ CXVpbnQzMgkJcHJvdG9fdmVyc2lvbjsJLyogTG9naWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJ CQlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsJLyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRp b25zICovCiAJCQlib29sCQliaW5hcnk7IC8qIEFzayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAq LwotCQkJYm9vbAkJc3RyZWFtaW5nOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25z ICovCisJCQljaGFyCSAgICpzdHJlYW1pbmdfc3RyOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJh bnNhY3Rpb25zICovCiAJCQlib29sCQl0d29waGFzZTsJLyogU3RyZWFtaW5nIG9mIHR3by1waGFz ZSB0cmFuc2FjdGlvbnMgYXQKIAkJCQkJCQkJCSAqIHByZXBhcmUgdGltZSAqLwogCQkJY2hhcgkg ICAqb3JpZ2luOyAvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAyYjcxMTRmLi42MDNk Y2IxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTcs OCArMTcsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgor I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxh dGlvbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9z aG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiArNjQsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCSAqLwogCUZpbGVTZXQgICAgKnN0 cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2YgbGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0 aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciwgSW52YWxp ZFBpZCBvdGhlcndpc2UuCisJICovCisJcGlkX3QJCWFwcGx5X2xlYWRlcl9waWQ7CisKKwkvKiBJ bmRpY2F0ZXMgd2hldGhlciBhcHBseSBjYW4gYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLwor CWJvb2wJCXBhcmFsbGVsX2FwcGx5OworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0 X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzgxLDEwMSBAQCB0 eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsK IH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3Rvcmlu ZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUVy cm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGlu dmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKworCS8qIFJlbW90ZSBub2Rl IGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAq LworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9nUmVjUHRyCWZpbmlzaF9sc247CisJ Y2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKKworLyoKKyAq IFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgor ICogVGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxU cmFuc1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQQVJBTExFTF9UUkFOU19T VEFSVEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECit9IFBhcmFsbGVsVHJhbnNTdGF0ZTsK KworLyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBh cHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0eXBlZGVm IHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisK KwlUcmFuc2FjdGlvbklkCXhpZDsKKworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29t bWl0IG9yZGVyaW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNl dCBpdCB0byBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0 cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJ ICogd2FpdCBmb3IgaXQgdG8gYmVjb21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBw cm9jZWVkaW5nIGluCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVB TV9DT01NSVQvU1RSRUFNX1BSRVBBUkUpLgorCSAqLworCVBhcmFsbGVsVHJhbnNTdGF0ZQkJeGFj dF9zdGF0ZTsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNh bFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlv bjsKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCisJLyoKKwkgKiBJbmRpY2F0 ZXMgd2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzIGluIHRoZSBxdWV1 ZS4gVGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sgaXQgYmVmb3JlIHN0 YXJ0aW5nIHRvIHdhaXQuCisJICovCisJcGdfYXRvbWljX3VpbnQzMglwZW5kaW5nX3N0cmVhbV9j b3VudDsKK30gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9u IHdoaWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8K K3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRs ZSAqbXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBlcnJv ciBtZXNzYWdlcyBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKwkgKiB0byB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7 CisKKwlkc21fc2VnbWVudCAqZHNtX3NlZzsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2Vy IGlzIGJlaW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rp b24uIEZhbHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4K KwkgKi8KKwlib29sCQlpbl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFy ZWQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0 IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwog ZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4g UEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4g UEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3Rh Y2s7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRpb25W YWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15 UGFyYWxsZWxTaGFyZWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlzdDsK KwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3Ry dWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzksMTgg KzE4NCwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlv bjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3Jr ZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKK2V4 dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOwogCiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxS ZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJ CQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93 b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAq c3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wg bG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIg KnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRz bV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9z dG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcGFfd29y a2VyX3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7 CiAKIGV4dGVybiBpbnQJbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwor ZXh0ZXJuIGludAlsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRl cm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE9pZCBzdWJvaWQsIE9p ZCByZWxpZCwKIAkJCQkJCQkJCQkJICAgY2hhciAqb3JpZ2lubmFtZSwgU2l6ZSBzem9yaWdpbm5h bWUpOwpAQCAtMTAzLDEwICsyMTIsNTggQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3Rh YmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3lu Y2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWlu dDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8g cyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CisKK2V4 dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQgYXBw bHlfd29ya2VyX2NsZWFuX2V4aXQoYm9vbCBvbl9zdWJpbmZvX2NoYW5nZSk7CisKKy8qIEZ1bmN0 aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFu ZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2Fj dGlvbklkIHhpZCk7CitleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29y a2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3NldF94YWN0X3N0YXRlKFBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJICBQYXJhbGxlbFRyYW5z U3RhdGUgaW5feGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworZXh0ZXJuIGJvb2wgcGFfZnJlZV93b3Jr ZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCk7Citl eHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOworCitleHRlcm4gdm9pZCBw YV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd3NoYXJlZCk7 CitleHRlcm4gdm9pZCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv LCBTaXplIG5ieXRlcywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZv aWQgcGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rp b25JZCB0b3BfeGlkKTsKK2V4dGVybiB2b2lkIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0o VHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX2xv Y2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwor ZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUg bG9ja21vZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9u SWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKKyNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29y a2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCisK IHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVy biBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5s aW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gKCFPaWRJ c1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpICYmCisJCQkhaXNQYXJhbGxlbEFwcGx5 V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2Ft X3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiBpc1BhcmFsbGVsQXBwbHlX b3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktFUl9J TlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IGJlMWQyYzkuLjVhM2JkMDMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG1nci5oCkBAIC0xMDcsNiArMTA3LDExIEBAIGV4dGVybiB2b2lkIExvY2tTaGFyZWRPYmplY3RG b3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIGV4dGVy biB2b2lkIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmpp ZCwgdWludDE2IG9ianN1YmlkLAogCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKK2V4 dGVybiB2b2lkIExvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFu c2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2tt b2RlKTsKK2V4dGVybiB2b2lkIFVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBz dWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJCSBMT0NL TU9ERSBsb2NrbW9kZSk7CisKIC8qIERlc2NyaWJlIGEgbG9ja3RhZyBmb3IgZXJyb3IgbWVzc2Fn ZXMgKi8KIGV4dGVybiB2b2lkIERlc2NyaWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1ZiwgY29uc3Qg TE9DS1RBRyAqdGFnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRleCBlNGUxNDk1Li43NzY2MTIzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2xvY2suaApAQCAtMTQ5LDEwICsxNDksMTIgQEAgdHlwZWRlZiBlbnVtIExvY2tUYWdUeXBl CiAJTE9DS1RBR19TUEVDVUxBVElWRV9UT0tFTiwJLyogc3BlY3VsYXRpdmUgaW5zZXJ0aW9uIFhp ZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFHX09CSkVDVCwJCQkJLyogbm9uLXJlbGF0aW9uIGRhdGFi YXNlIG9iamVjdCAqLwogCUxPQ0tUQUdfVVNFUkxPQ0ssCQkJLyogcmVzZXJ2ZWQgZm9yIG9sZCBj b250cmliL3VzZXJsb2NrIGNvZGUgKi8KLQlMT0NLVEFHX0FEVklTT1JZCQkJLyogYWR2aXNvcnkg dXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQURWSVNPUlksCQkJLyogYWR2aXNvcnkgdXNlciBsb2Nr cyAqLworCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04JLyogdHJhbnNhY3Rpb24gYmVpbmcgYXBw bGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJCQkJICogcmVwbGljYXRpb24gc3Vic2NyaWJlciAqLwog fSBMb2NrVGFnVHlwZTsKIAotI2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFHX0FEVklT T1JZCisjZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04K IAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNb XTsKIApAQCAtMjc4LDYgKzI4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMT0NLVEFHCiAJIChsb2Nr dGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FEVklTT1JZLCBcCiAJIChsb2NrdGFnKS5sb2Nr dGFnX2xvY2ttZXRob2RpZCA9IFVTRVJfTE9DS01FVEhPRCkKIAorLyoKKyAqIElEIGluZm8gZm9y IGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9uIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpYmVy IGlzOiBEQgorICogT0lEICsgU1VCU0NSSVBUSU9OIE9JRCArIFRSQU5TQUNUSU9OIElEICsgT0JK SUQKKyAqLworI2RlZmluZSBTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTihsb2NrdGFnLGRi b2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwKKwkoKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQxID0gKGRi b2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDIgPSAoc3Vib2lkKSwgXAorCSAobG9j a3RhZykubG9ja3RhZ19maWVsZDMgPSAoeGlkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVs ZDQgPSAob2JqaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FQUExZ X1RSQU5TQUNUSU9OLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IERFRkFV TFRfTE9DS01FVEhPRCkKIAogLyoKICAqIFBlci1sb2NrZWQtb2JqZWN0IGxvY2sgaW5mb3JtYXRp b246CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGVlNjM2OTAuLjkzYTUxZjQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bQogCVBS T0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUg Zm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBp bnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5k IHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9N RVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLwogCiAJLyog UmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf REFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9z cmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggMGIyMTAwYi4uNzYzZmJlYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlU X0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlO LAogCVdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOLAorCVdBSVRfRVZFTlRfTE9HSUNB TF9QQVJBTExFTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwK IAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9NQUlOLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01B SU4sCkBAIC0xMDUsNiArMTA2LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dS T1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNU LAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9M T0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxf U1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlU X0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0CmluZGV4IGMxM2QyMTguLjFlZDZmNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTExNyw3ICsxMTcsNyBAQCBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24g c2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9u ZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAo b3JpZ2luID0gYW55KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9IGFueSk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTEzOCw3ICsxMzgsNyBAQCBFUlJPUjogIGludmFsaWQg Y29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBj b25uZWN0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElD QVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTgs NyArMTU4LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24g PSAnMC8xMjM0NScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAt LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9 IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgMC8xMjM0NQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgx IHJvdykKIAogLS0gb2sgLSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE3MCw3ICsxNzAsNyBAQCBFUlJP UjogIGludmFsaWQgV0FMIGxvY2F0aW9uIChMU04pOiAwLzAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAg ICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDAvMAogKDEgcm93KQogCiBCRUdJTjsKQEAgLTIwNSw3ICsyMDUsNyBAQCBISU5UOiAg QXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwg b2ZmLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKICAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9m b28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0 cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBs b2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAo MSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBAIC0yNDIs NyArMjQyLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBmYWxzZSk7CkBAIC0yNTEsMTMgKzI1MSwx MyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0g c3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJv b2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0 cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9SOiAgc3Ry ZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcgcmVxdWly ZXMgYSBCb29sZWFuIHZhbHVlIG9yICJwYXJhbGxlbCIKIC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBi dXQgaXMgbm90IGNvbm5lY3RlZApAQCAtMjY2LDcgKzI2NiwxNSBAQCBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24g c2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KygxIHJvdykKKworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVh bWluZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g ZmFsc2UpOwpAQCAtMjc1LDcgKzI4Myw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYg ICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBh bHJlYWR5IGV4aXN0cwpAQCAtMjkzLDcgKzMwMSw3IEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0 ZXN0cHViMn0gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGVuIG9uY2UK QEAgLTMxMSw3ICszMTksNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIERS T1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzUwLDcgKzM1OCw3IEBAIEhJTlQ6ICBUbyBp bml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNh dGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiAtLWZhaWwgLSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBz dXBwb3J0ZWQuCkBAIC0zNjIsNyArMzcwLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg dCAgICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzc1LDcgKzM4Myw3IEBA IEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zOTEsNyArMzk5LDcgQEAgSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJl cGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CkBAIC0zOTksNyArNDA3LDcgQEAgQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVl KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IGVhZWFkZTgu Ljc5OTFhYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMTY3LDcg KzE2Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogCi0tLSBm YWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0 IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKIAogLS0g bm93IGl0IHdvcmtzCkBAIC0xNzUsNiArMTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVC CiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJl YW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggMmY1ODAyMS4uMGUxMWNiNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTE0NzIsNiArMTQ3Miw3IEBAIExvZ2ljYWxSZXBSZWxJZAogTG9naWNhbFJlcFJlbE1hcEVu dHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0 YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNh bFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTY2Myw2ICsxNjY0LDkgQEAgT3ZlcnJpZGVT dGFja0VudHJ5CiBPdmVycmlkaW5nS2luZAogUEFDRV9IRUFERVIKIFBBQ0wKK1BhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeQorUGFyYWxsZWxBcHBseVdvcmtlckluZm8KK1BhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQKIFBBVEgKIFBCT09MCiBQQ3R4dEhhbmRsZQpAQCAtMTg5NCw2ICsxODk4LDcgQEAg UGFyYWxsZWxTbG90UmVzdWx0SGFuZGxlcgogUGFyYWxsZWxTdGF0ZQogUGFyYWxsZWxUYWJsZVNj YW5EZXNjCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCitQYXJhbGxlbFRyYW5zU3RhdGUKIFBh cmFsbGVsVmFjdXVtU3RhdGUKIFBhcmFsbGVsV29ya2VyQ29udGV4dAogUGFyYWxsZWxXb3JrZXJJ bmZvCkBAIC0yNzgyLDYgKzI3ODcsNyBAQCBUcmFuc2FjdGlvblN0bXRLaW5kCiBUcmFuc2Zvcm1J bmZvCiBUcmFuc2Zvcm1Kc29uU3RyaW5nVmFsdWVzU3RhdGUKIFRyYW5zaXRpb25DYXB0dXJlU3Rh dGUKK1RyYW5zQXBwbHlBY3Rpb24KIFRyZ21BcmMKIFRyZ21BcmNJbmZvCiBUcmdtQm91bmQKLS0g CjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v53-0002-Serialize-partial-changes-to-a-file-when-the-att.patch" Content-Description: v53-0002-Serialize-partial-changes-to-a-file-when-the-att.patch Content-Disposition: attachment; filename="v53-0002-Serialize-partial-changes-to-a-file-when-the-att.patch"; size=39233; creation-date="Tue, 29 Nov 2022 04:12:32 GMT"; modification-date="Tue, 29 Nov 2022 04:48:24 GMT" Content-Transfer-Encoding: base64 RnJvbSBjYTk0NGZkOTZiYmYzZWZkYTFkMGVkYWJlNmE0ZjYwNDk4ODQyOTk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDI5IE5vdiAyMDIyIDA5OjM5OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTMgMi81XSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGEgZmlsZSB3aGVuIHRoZSBhdHRl bXB0CiB0bwoKc2VuZCBkYXRhIHRpbWVzIG91dC4KCkluIHBhdGNoIDAwMDEgaWYgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgdGltZXMgb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8Kc2VuZCBhIG1lc3Nh Z2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpdCByZXN1bHRzIGluIGFuIEVSUk9SLgoK VGhpcyBwYXRjaCAoMDAwMikgbW9kaWZpZXMgdGhhdCBiZWhhdmlvdXIsIHNvIGluc3RlYWQgb2Yg ZXJyb3JpbmcgaXQKd2lsbCBzd2l0Y2ggdG8gInBhcnRpYWwgc2VyaWFsaXplIiBtb2RlIC0gIGlu IHRoaXMgbW9kZSB0aGUgbGVhZGVyCnNlcmlhbGl6ZXMgYWxsIHJlbWFpbmluZyBjaGFuZ2VzIHRv IGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlIHBhcmFsbGVsCmFwcGx5IHdvcmtlcnMgdG8gcmVhZCBh bmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4KLS0tCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8IDIwMiArKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAg IHwgMzQ2ICsrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmggICAgICAgICAgfCAgNTAgKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDQ4 MCBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA2NzRmZjli Li4zYWNmOWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNzQsOCArNzQsMTAgQEAKICAqIG1lc3NhZ2VzLCBh bmQgdGhpcyB3YWl0IGRvZXNuJ3QgYXBwZWFyIGluIGxtZ3IuCiAgKgogICogVG8gcmVzb2x2ZSB0 aGlzIGlzc3VlLCB3ZSB1c2Ugbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1l b3V0LiBJZgotICogdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHJlcG9ydHMgYW4gZXJyb3Ig YW5kIHJlc3RhcnRzIGxvZ2ljYWwKLSAqIHJlcGxpY2F0aW9uLgorICogdGltZW91dCBpcyBleGNl ZWRlZCwgdGhlIExBIHdpbGwgc2VyaWFsaXplIHRoZSBtZXNzYWdlIHRvIGEgZmlsZSBhbmQKKyAq IGluZGljYXRlIFBBLTIgdGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJl bWFpbmluZyBtZXNzYWdlcy4KKyAqIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21t aXQgd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYgYW55LgorICogKFNlZSBwYV9zZW5kX2Rh dGEoKSBhbmQgdHlwZWRlZiBlbnVtIFRyYW5zQXBwbHlBY3Rpb24pCiAgKgogICogNCkgTG9jayB0 eXBlCiAgKgpAQCAtMjEyLDEwICsyMTQsMTAgQEAgcGFfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQg eGlkKQogCiAJLyoKIAkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYgdXNl ciBoYXMgc2V0IHNraXBsc24gYXMgaXQncwotCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRv IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCi0JICogc3RyZWFtaW5nIHRyYW5z YWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQK LQkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ug d2hldGhlciB0byBza2lwCi0JICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2Uu CisJICogcG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLiBGb3Igc3RyZWFtaW5nCisJICogdHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc2VyaWFs aXplIHRoZSB0cmFuc2FjdGlvbiB0byBhIGZpbGUgc28gdGhhdCB3ZQorCSAqIGNhbiBnZXQgdGhl IGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAgYmVm b3JlCisJICogc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KIAkgKi8KIAlpZiAoIVhMb2dS ZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQogCQlyZXR1cm4gZmFsc2U7 CkBAIC0zMTksOSArMzIxLDExIEBAIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhp ZCkKIAlTcGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKIAl3aW5mby0+c2hh cmVkLT54YWN0X3N0YXRlID0gUEFSQUxMRUxfVFJBTlNfVU5LTk9XTjsKIAl3aW5mby0+c2hhcmVk LT54aWQgPSB4aWQ7CisJd2luZm8tPnNoYXJlZC0+ZmlsZXNldF9zdGF0ZSA9IEZTX1VOS05PV047 CiAJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CiAKIAl3aW5mby0+aW5f dXNlID0gdHJ1ZTsKKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKIAllbnRyeS0+ d2luZm8gPSB3aW5mbzsKIAllbnRyeS0+eGlkID0geGlkOwogfQpAQCAtMzk1LDggKzM5OSwxOCBA QCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0 aW9uSWQgeGlkKQogCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKIAlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKIAotCS8qIFN0b3AgdGhlIHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtl cnMgaW4gdGhlIHBvb2wuICovCi0JaWYgKG5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCS8qCisJICogU3RvcCB0aGUgd29y a2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKwkgKgorCSAqIFhY WCBUaGUgd29ya2VyIGlzIGFsc28gc3RvcHBlZCBpZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBu ZWVkZWQgdG8KKwkgKiBzZXJpYWxpemUgcGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gZGF0YSBkdWUg dG8gYSBzZW5kIHRpbWVvdXQuIFRoaXMgaXMKKwkgKiBiZWNhdXNlIHRoZSBtZXNzYWdlIGNvdWxk IGJlIHBhcnRpYWxseSB3cml0dGVuIHRvIHRoZSBxdWV1ZSBkdWUgdG8gc2VuZAorCSAqIHRpbWVv dXQgYW5kIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhhbiByZXNl bmRpbmcgdGhlCisJICogbWVzc2FnZSB1bnRpbCBpdCBzdWNjZWVkcy4gVG8gYXZvaWQgY29tcGxl eGl0eSwgd2UgZGlyZWN0bHkgc3RvcCB0aGUKKwkgKiB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAq LworCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgfHwKKwkJbmFwcGx5d29ya2VycyA+ICht YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCiAJewogCQlp bnQJCQlzbG90X25vOwogCQl1aW50MTYJCWdlbmVyYXRpb247CkBAIC00MTMsMTIgKzQyNywyMCBA QCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0 aW9uSWQgeGlkKQogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKiBVbmxpbmsgYW55IGZpbGVzIHRo YXQgd2VyZSBuZWVkZWQgdG8gc2VyaWFsaXplIHBhcnRpYWwgY2hhbmdlcy4gKi8KKwlpZiAod2lu Zm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQpOworCiAJd2luZm8tPmluX3VzZSA9 IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOwogCiAJcmV0dXJuIGZh bHNlOwogfQogCi0vKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24u ICovCisvKgorICogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIGFu ZCB1bmxpbmsgdGhlIGZpbGVzIHdpdGgKKyAqIHNlcmlhbGl6ZWQgY2hhbmdlcyBpZiBhbnkuCisg Ki8KIHN0YXRpYyB2b2lkCiBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbykKIHsKQEAgLTQzMCw2ICs0NTIsMTAgQEAgcGFfZnJlZV93b3JrZXJfaW5mbyhQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5k bGUpCiAJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CiAKKwkvKiBVbmxp bmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLiAqLworCWlmICh3aW5mby0+c2Vy aWFsaXplX2NoYW5nZXMpCisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKIAlpZiAod2luZm8tPmRzbV9zZWcpCiAJ CWRzbV9kZXRhY2god2luZm8tPmRzbV9zZWcpOwogCkBAIC00NjAsNiArNDg2LDQzIEBAIHBhX2Rl dGFjaF9hbGxfZXJyb3JfbXEodm9pZCkKIH0KIAogLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBt ZXNzYWdlcyBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRoZSBsZWFkZXIgYXBwbHkK KyAqIHdvcmtlciBoYXMgZmluaXNoZWQgc2VyaWFsaXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4K KyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRfbWVzc2FnZXModm9pZCkKK3sKKwlQYXJ0aWFs RmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwkvKgorCSAqIENoZWNrIGlmIGNoYW5nZXMg aGF2ZSBiZWVuIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBpZiBzbywgcmVhZCBhbmQgYXBwbHkKKwkg KiB0aGVtLgorCSAqLworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgp OworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBJZiB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBpcyBzdGlsbCAoYnVzeSkgc2VyaWFsaXppbmcgcGFydGlh bCBjaGFuZ2VzCisJICogdGhlbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFjcXVpcmVzIHRo ZSBzdHJlYW0gbG9jayBub3cuIE90aGVyd2lzZSwKKwkgKiBpdCB3b3VsZCBub3QgaGF2ZSBhIGNo YW5jZSB0byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgKGFuZCBhY3F1aXJlIHRoZQorCSAqIHN0cmVh bSBsb2NrKSB1bnRpbCB0aGUgbGVhZGVyIGhhZCBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzLgorCSAq LworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX0JVU1kpCisJeworCQlwYV9sb2NrX3N0cmVhbShN eVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJl YW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKwllbHNlIGlm IChmaWxlc2V0X3N0YXRlID09IEZTX1JFQURZKQorCXsKKwkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cygmTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwKKwkJCQkJCQkgICBNeVBhcmFsbGVsU2hhcmVk LT54aWQsCisJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIpOworCQlwYV9zZXRfZmlsZXNldF9z dGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19VTktOT1dOKTsKKwl9Cit9CisKKy8qCiAgKiBJbnRl cnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAq Lwogc3RhdGljIHZvaWQKQEAgLTU1NCw2ICs2MTcsOCBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxv b3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQl7CiAJCQlpbnQJCQlyYzsKIAorCQkJcGFfc3Bvb2xl ZF9tZXNzYWdlcygpOworCiAJCQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQkJewog CQkJCS8qCkBAIC0xMDI4LDYgKzEwOTMsMTIgQEAgcGFfaW5pdF9hbmRfbGF1bmNoX3dvcmtlcih2 b2lkKQogLyoKICAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKICAqIHF1ZXVlLgorICoKKyAqIElmIHRoZSBhdHRl bXB0IHRvIHNlbmQgZGF0YSB2aWEgc2hhcmVkIG1lbW9yeSB0aW1lcyBvdXQsIHRoZW4gd2Ugd2ls bCBzd2l0Y2gKKyAqIHRvICJQQVJUSUFMX1NFUklBTElaRSBtb2RlIiBmb3IgdGhlIGN1cnJlbnQg dHJhbnNhY3Rpb24gdG8gcHJldmVudCBwb3NzaWJsZQorICogZGVhZGxvY2tzIHdpdGggYW5vdGhl ciBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wCisgKiBh cHBseXBhcmFsbGVsd29ya2VyLmMgZm9yIGRldGFpbHMpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGN1 cnJlbnQgZGF0YSBhbmQgYW55CisgKiBzdWJzZXF1ZW50IGRhdGEgZm9yIHRoaXMgdHJhbnNhY3Rp b24gd2lsbCBiZSBzZXJpYWxpemVkIHRvIGEgZmlsZS4KICAqLwogdm9pZAogcGFfc2VuZF9kYXRh KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQg KmRhdGEpCkBAIC0xMDM3LDYgKzExMDgsNyBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlUaW1lc3Rh bXBUeiBzdGFydFRpbWUgPSAwOwogCiAJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJ QXNzZXJ0KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOwogCiAjZGVmaW5lIFNITV9TRU5EX1JF VFJZX0lOVEVSVkFMX01TIDEwMDAKICNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAw IC0gU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCkBAIC0xMDY2LDE5ICsxMTM4LDYwIEBAIHBh X3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBj b25zdCB2b2lkICpkYXRhKQogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCi0JCS8q Ci0JCSAqIElmIHRoZSBhdHRlbXB0IHRvIHNlbmQgZGF0YSB2aWEgc2hhcmVkIG1lbW9yeSB0aW1l cyBvdXQsIHdlIHJlc3RhcnQKLQkJICogdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gdG8gcHJldmVu dCBwb3NzaWJsZSBkZWFkbG9ja3Mgd2l0aCBhbm90aGVyCi0JCSAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AKLQkJICogYXBwbHlwYXJhbGxlbHdvcmtl ci5jIGZvciBkZXRhaWxzLgotCQkgKi8KIAkJaWYgKHN0YXJ0VGltZSA9PSAwKQogCQkJc3RhcnRU aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCQllbHNlIGlmIChUaW1lc3RhbXBEaWZmZXJl bmNlRXhjZWVkcyhzdGFydFRpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQkJCQkJ U0hNX1NFTkRfVElNRU9VVF9NUykpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShF UlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1ZSB0byB0aW1lb3V0Iikp KTsKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCQkJTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uOworCisJCQkvKgorCQkJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtaWdodCBiZSBz dHVjayBmb3Igc29tZSByZWFzb24sIHNvCisJCQkgKiBzdG9wIHNlbmRpbmcgZGF0YSBkaXJlY3Rs eSB0byBpdCBhbmQgc3RhcnQgdG8gc2VyaWFsaXplIGRhdGEgdG8KKwkJCSAqIGZpbGVzIGluc3Rl YWQuCisJCQkgKi8KKwkJCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7CisKKwkJCWlu aXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRh LCBuYnl0ZXMpOworCisJCQkvKiBTa2lwIGZpcnN0IGJ5dGUgYW5kIHN0YXRpc3RpY3MgZmllbGRz LiAqLworCQkJbXNnLmN1cnNvciArPSAxICsgU0laRV9TVEFUU19NRVNTQUdFOworCisJCQkvKiBJ bml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwkJCXNlcmlhbGl6ZV9zdHJlYW1fc3Rh cnQod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsKKworCQkJLyogV3JpdGUgdGhpcyBtZXNzYWdl IHRvIGEgZmlsZS4gKi8KKwkJCWFjdGlvbiA9IHBxX2dldG1zZ2J5dGUoJm1zZyk7CisJCQlzdHJl YW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgJm1zZyk7CisKKwkJCS8qCisJCQkgKiBUaGUgc3RyZWFt IGxvY2sgaXMgcmVsZWFzZWQgd2hlbiBwcm9jZXNzaW5nIGNoYW5nZXMgaW4gYQorCQkJICogc3Ry ZWFtaW5nIGJsb2NrLCBzbyB0aGUgbGVhZGVyIG5lZWRzIHRvIGFjcXVpcmUgdGhlIGxvY2sgaGVy ZQorCQkJICogYmVmb3JlIGVudGVyaW5nIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgdG8gZW5zdXJl IHRoYXQgdGhlCisJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUg bGVhZGVyIHRvIHJlbGVhc2UgdGhlCisJCQkgKiBzdHJlYW0gbG9jay4KKwkJCSAqLworCQkJaWYg KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYmCisJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01T R19TVFJFQU1fU1RPUCkKKwkJCXsKKwkJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJfQorCisJCQkvKgorCQkJICogQ2xvc2UgdGhl IHN0cmVhbSBmaWxlIGlmIG5vdCBpbiBhIHN0cmVhbWluZyBibG9jayBvciB0aGUKKwkJCSAqIG1l c3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIHRoZSBsYXN0IG1lc3NhZ2Ugb2YgYSBzdHJlYW1pbmcK KwkJCSAqIGJsb2NrLgorCQkJICovCisJCQllbHNlCisJCQl7CisJCQkJc2VyaWFsaXplX3N0cmVh bV9zdG9wKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisJCQl9CisKKwkJCXBhX3NldF9maWxlc2V0X3N0 YXRlKHdpbmZvLT5zaGFyZWQsIEZTX0JVU1kpOworCQkJYnJlYWs7CisJCX0KIAl9CiB9CiAKQEAg LTEzMTMsOSArMTQyNiw0MCBAQCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YSAqYWJvcnRfZGF0YSkKIAogCQkJaWYgKHhpZF90bXAgPT0gc3VieGlkKQogCQkJeworCQkJ CWJvb2wJCXJlb3Blbl9zdHJlYW1fZmQgPSBmYWxzZTsKKwkJCQlpbnQJCQlmaWxlbm87CisJCQkJ b2ZmX3QJCW9mZnNldDsKKworCQkJCS8qCisJCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBpcyBhcHBseWluZyB0aGUgc3Bvb2xlZAorCQkJCSAqIG1lc3NhZ2VzIGZyb20gdGhlIHNw b29sIGZpbGUsIHdlIHNhdmUgdGhlIGN1cnJlbnQgZmlsZQorCQkJCSAqIHBvc2l0aW9uIGFuZCBj bG9zZSB0aGUgZmlsZSB0byBwcmV2ZW50IHRoZSBmaWxlIGZyb20gYmVpbmcKKwkJCQkgKiBhY2Np ZGVudGFsbHkgY2xvc2VkIG9uIHJvbGxiYWNrLgorCQkJCSAqLworCQkJCWlmIChzdHJlYW1fZmQp CisJCQkJeworCQkJCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOwor CQkJCQlCdWZGaWxlQ2xvc2Uoc3RyZWFtX2ZkKTsKKwkJCQkJcmVvcGVuX3N0cmVhbV9mZCA9IHRy dWU7CisJCQkJfQorCiAJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOwogCQkJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShz dWJ4YWN0bGlzdCwgaSArIDEpOworCisJCQkJLyoKKwkJCQkgKiBSZW9wZW4gdGhlIGZpbGUgYW5k IHNldCB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgc2F2ZWQKKwkJCQkgKiBwb3NpdGlvbi4KKwkJ CQkgKi8KKwkJCQlpZiAocmVvcGVuX3N0cmVhbV9mZCkKKwkJCQl7CisJCQkJCWNoYXIJCXBhdGhb TUFYUEdQQVRIXTsKKworCQkJCQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CisJCQkJCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldCgm TXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwKKwkJCQkJCQkJCQkJCSAgIHBhdGgsIE9fUkRPTkxZ LCBmYWxzZSk7CisJCQkJCUJ1ZkZpbGVTZWVrKHN0cmVhbV9mZCwgZmlsZW5vLCBvZmZzZXQsIFNF RUtfU0VUKTsKKwkJCQl9CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTEzMjUsNiArMTQ2OSwy OCBAQCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0 YSkKIH0KIAogLyoKKyAqIFNldCB0aGUgZmlsZXNldCBzdGF0ZSBmb3IgdGhlIGdpdmVuIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4gVGhlCisgKiBzdHJlYW1fZmlsZXNldCBvZiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciB3aWxsIGJlIHdyaXR0ZW4gaW50byB0aGUgc2hhcmVkCisgKiBtZW1vcnkgaWYg dGhlIGZpbGVzZXRfc3RhdGUgaXMgRlNfUkVBRFkuCisgKi8KK3ZvaWQKK3BhX3NldF9maWxlc2V0 X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCSBQYXJ0aWFs RmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVk LT5tdXRleCk7CisJd3NoYXJlZC0+ZmlsZXNldF9zdGF0ZSA9IGZpbGVzZXRfc3RhdGU7CisKKwlp ZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFEWSkKKwl7CisJCUFzc2VydChhbV9sZWFkZXJfYXBw bHlfd29ya2VyKCkpOworCQlBc3NlcnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCk7CisJCXdzaGFyZWQtPmZpbGVzZXQgPSAqTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldDsKKwl9CisKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoK ICAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVh Y2ggc3RyZWFtIGJsb2NrLgogICoKICAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9B UFBMWV9MT0NLX1NUUkVBTSB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMzVkZWIzMS4uYjVmYjc0NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC02OSw3ICs2OSw3IEBACiAgKiBJ ZiBubyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGUgc3Ry ZWFtZWQgdHJhbnNhY3Rpb24KICAqIHdlIGZvbGxvdyBhcHByb2FjaCAyLgogICoKLSAqIDIpIFdy aXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFy cml2ZXMKKyAqIDIpIFNlcmlhbGl6ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4g dGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24t c3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRv IGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRy YW5zYWN0aW9ucy4gVGhpcwpAQCAtMjE5LDcgKzIxOSw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTI3OCw2ICsyNzcsMTggQEAg dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAgKiBDaGFuZ2VzIGFyZSB3cml0dGVu IHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlIGZpbmFsCiAgKiBj b21taXQgYXJyaXZlcy4KICAqCisgKiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6Cisg KiBUaGUgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBoYXZlIHNlbnQgc29tZQorICogY2hhbmdlcyBkaXJlY3RseSB0byB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nCisgKiBkYXRhIHRoZSBy ZW1haW5pbmcgY2hhbmdlcyBuZWVkIHRvIGJlIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBUaGUgcGFy YWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aWxsIGFwcGx5IHRoZXNlIHNlcmlhbGl6ZWQgY2hhbmdl cyB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBMRUFERVJfU0VSSUFMSVpF IGNvdWxkIG5vdCBiZSB1c2VkIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRkaXRpb24gdG8K KyAqIHNlcmlhbGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28gbmVlZHMgdG8g c2VyaWFsaXplIHRoZSBTVFJFQU1fWFhYCisgKiBtZXNzYWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQg Zm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNoIHRoZQorICogdHJhbnNhY3Rp b24gd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gU28gdGhp cyBuZXcKKyAqIGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBtYWtlIHRoZSBsb2dpYyBjbGVhcmVy LgorICoKICAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogICogVGhlIGFjdGlvbiBt ZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVlZCB0byBz ZW5kIHRoZQogICogY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgpAQCAtMjkz LDYgKzMwNCw3IEBAIHR5cGVkZWYgZW51bQogCiAJLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRy YW5zYWN0aW9ucy4gKi8KIAlUUkFOU19MRUFERVJfU0VSSUFMSVpFLAorCVRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRSwKIAlUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKIAlUUkFO U19QQVJBTExFTF9BUFBMWQogfSBUcmFuc0FwcGx5QWN0aW9uOwpAQCAtMzU0LDcgKzM2Niw3IEBA IHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQ dHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJ c0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKIAogLyogQnVmRmlsZSBoYW5kbGUgb2Yg dGhlIGN1cnJlbnQgc3RyZWFtaW5nIGZpbGUgKi8KLXN0YXRpYyBCdWZGaWxlICpzdHJlYW1fZmQg PSBOVUxMOworQnVmRmlsZSAgICAqc3RyZWFtX2ZkID0gTlVMTDsKIAogdHlwZWRlZiBzdHJ1Y3Qg U3ViWGFjdEluZm8KIHsKQEAgLTM3NSw3ICszODcsNiBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseVN1 YlhhY3REYXRhCiBzdGF0aWMgQXBwbHlTdWJYYWN0RGF0YSBzdWJ4YWN0X2RhdGEgPSB7MCwgMCwg SW52YWxpZFRyYW5zYWN0aW9uSWQsIE5VTEx9OwogCiBzdGF0aWMgaW5saW5lIHZvaWQgc3VieGFj dF9maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLXN0 YXRpYyBpbmxpbmUgdm9pZCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogCiAvKgogICogSW5mb3JtYXRpb24gYWJvdXQgc3VidHJhbnNh Y3Rpb25zIG9mIGEgZ2l2ZW4gdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCkBAIC0zODgsMTAgKzM5OSw5 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAg KiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5nZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNh Y3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3Vi aWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwotc3Rh dGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsK K3N0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4 aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3Nl X2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2 cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CkBAIC00MjMsOSArNDMzLDYgQEAg c3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRh ICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29fcGhhc2UgdHJhbnNhY3Rpb25zICovCiBz dGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lkKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAotLyogQ29tbW9uIHN0cmVhbWluZyBmdW5j dGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFw cGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsK LQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFuZ2VzICovCiBzdGF0aWMgdm9pZCBtYXli ZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMg dm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CkBAIC01ODUsNiArNTkyLDcgQEAgaGFu ZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5n SW5mbyBzKQogCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CiAJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCVN0cmluZ0lu Zm9EYXRhIG9yaWdpbmFsX21zZzsKIAogCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9h cHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIApAQCAtNTk0LDYgKzYwMiw4IEBAIGhh bmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmlu Z0luZm8gcykKIAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAK KwlvcmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg WElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2Us IHNvIGV4dHJhY3QgaXQuCkBAIC02MTcsMTAgKzYyNywxNCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJh bnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJCQlzdHJl YW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAorCQljYXNlIFRS QU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9U T19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJCXBhX3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKKwkJCWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUwpCisJCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEp OworCQkJZWxzZQorCQkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmb3JpZ2luYWxfbXNn KTsKIAogCQkJLyoKIAkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMg c2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQpAQCAtMTI2NSw2ICsxMjc5LDcgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5E YXRhIHByZXBhcmVfZGF0YTsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJh bnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNn ID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1Is CkBAIC0xMjkwLDcgKzEzMDUsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQogCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmls ZSwgc28gcmVwbGF5IGFsbCB0aGUKIAkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KIAkJCSAqLwot CQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEu cHJlcGFyZV9sc24pOworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0LAorCQkJCQkJCQkgICBwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJl X2RhdGEucHJlcGFyZV9sc24pOwogCiAJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVw YXJlZC4gKi8KIAkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEp OwpAQCAtMTMwNiw2ICsxMzIyLDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmlu Z0luZm8gcykKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdp bmZvKTsKIAogCQkJLyoKQEAgLTEzMTUsMTMgKzEzMzIsMjEgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJl ZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAogCQkJLyogU2VuZCBTVFJFQU0gUFJFUEFS RSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlpZiAoYXBwbHlfYWN0aW9uID09IFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVu LCBzLT5kYXRhKTsKKwkJCWVsc2UKKwkJCQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKHBy ZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBB UkUsCisJCQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJaWYgKHdpbmZvLT5zZXJpYWxp emVfY2hhbmdlcykKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19S RUFEWSk7CiAKIAkJCS8qCi0JCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCi0JCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2gu IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAotCQkJICogb3JkZXIgd2hpY2gg YXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCi0JCQkg KiBkZWFkbG9ja3MuCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgb3IKKwkJCSAqIHNlcmlhbGl6aW5nIGRhdGEgdG8gZmlsZSwgd2FpdCBm b3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzCisJCQkgKiBpcyBuZWNlc3NhcnkgdG8gbWFp bnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUKKwkJCSAqIHRvIHRy YW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tzLgogCQkJICovCiAJCQlwYV93YWl0 X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CiAJCQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8s IHByZXBhcmVfZGF0YS54aWQpOwpAQCAtMTMzMiw2ICsxMzU3LDE0IEBAIGFwcGx5X2hhbmRsZV9z dHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogQ2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1p dHRpbmcgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcworCQkJICogYXBwbHlpbmcgc3Bv b2xlZCBtZXNzYWdlcy4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xv c2VfZmlsZSgpOworCiAJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKIAkJCWxpc3RfZnJl ZShzdWJ4YWN0bGlzdCk7CkBAIC0xMzkyLDcgKzE0MjUsNDYgQEAgYXBwbHlfaGFuZGxlX29yaWdp bihTdHJpbmdJbmZvIHMpCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2Vu dCBvdXQgb2Ygb3JkZXIiKSkpOwogfQogCisvKgorICogSW5pdGlhbGl6ZSBmaWxlc2V0IChpZiBu b3QgYWxyZWFkeSBkb25lKS4KKyAqCisgKiBDcmVhdGUgYSBuZXcgZmlsZSB3aGVuIGZpcnN0X3Nl Z21lbnQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIG9wZW4gdGhlIGV4aXN0aW5nCisgKiBmaWxlLgorICov Cit2b2lkCitzZXJpYWxpemVfc3RyZWFtX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZp cnN0X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkgKiBJ bml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4g VGhpcyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29y a2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0 aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55CisJICogdHJh bnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3Rh cnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0 aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCisJCU15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJRmls ZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBm b3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkvKiBJZiB0aGlzIGlzIG5vdCB0 aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJaWYgKCFm aXJzdF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKK30KIAogLyoKICAqIEhhbmRs ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KQEAgLTE0MDMsNiArMTQ3NSw3IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CiAJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTQzMyw0MyArMTUwNiwyNSBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJY2FzZSBUUkFOU19M RUFERVJfU0VSSUFMSVpFOgogCiAJCQkvKgotCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBz dHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQotCQkJICogY29tbWl0dGVkIG9u IHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCi0JCQkg KiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRo ZQotCQkJICogbWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0 aGUgYnVmZmlsZSwKLQkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0 YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICogRnVuY3Rpb24gc2VyaWFsaXplX3N0cmVhbV9zdGFy dCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcworCQkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBj b21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5 bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAq IHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZv cgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBz dHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1YnhhY3QgaW5mby4KIAkJCSAqLwotCQkJYmVnaW5f cmVwbGljYXRpb25fc3RlcCgpOworCQkJc2VyaWFsaXplX3N0cmVhbV9zdGFydChzdHJlYW1feGlk LCBmaXJzdF9zZWdtZW50KTsKKwkJCWJyZWFrOwogCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJ QUxfU0VSSUFMSVpFOgogCQkJLyoKLQkJCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVh bV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzCi0JCQkgKiB3aWxsIGJlIHVzZWQgZm9y IHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQKLQkJCSAqIGlu IGEgcGVybWFuZW50IGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0Ci0J CQkgKiBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2Ug aXQgZm9yIHRoaXMKLQkJCSAqIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3cs IHdlIGNvdWxkIGNyZWF0ZSBhCi0JCQkgKiBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29y a2VyIGFzIHdlbGwgYnV0IHRoZW4gd2Ugd29uJ3QgYmUKLQkJCSAqIHN1cmUgdGhhdCBpdCB3aWxs IGV2ZXIgYmUgdXNlZC4KKwkJCSAqIFRoZSBtZXNzYWdlIHNwb29sIGZpbGUgd2FzIGFscmVhZHkg Y3JlYXRlZCB3aGVuIGVudGVyaW5nCisJCQkgKiBQQVJUSUFMX1NFUklBTElaRSBtb2RlLiBUaGUg dHJhbnNhY3Rpb24gc3RhcnRlZCBpbgorCQkJICogc2VyaWFsaXplX3N0cmVhbV9zdGFydCB3aWxs IGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AuCiAJCQkgKi8KLQkJCWlmICghTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKLQkJCXsKLQkJCQlNZW1vcnlDb250ZXh0IG9s ZGN0eDsKLQotCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OwotCi0JCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXpl b2YoRmlsZVNldCkpOwotCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQpOwotCi0JCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JCQl9CisJ CQlzZXJpYWxpemVfc3RyZWFtX3N0YXJ0KHN0cmVhbV94aWQsIGZhbHNlKTsKKwkJCXN0cmVhbV93 cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwgJm9yaWdpbmFsX21zZyk7 CiAKLQkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCi0J CQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQs IGZpcnN0X3NlZ21lbnQpOwotCi0JCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVu dCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCi0JCQlpZiAoIWZpcnN0X3NlZ21lbnQp Ci0JCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFt X3hpZCk7Ci0KLQkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlicmVhazsKIAogCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTUxNCw2ICsxNTY5LDM0IEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogVXBkYXRl IHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBhbmQgY2xvc2UgdGhlIGZpbGUuCisgKgor ICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHNlcmlhbGl6ZV9zdHJl YW1fc3RhcnQgZnVuY3Rpb24gaGFzCisgKiBiZWVuIGNhbGxlZC4KKyAqLwordm9pZAorc2VyaWFs aXplX3N0cmVhbV9zdG9wKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCS8qCisJICogU2VyaWFsaXpl IGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24s IHRoZW4KKwkgKiBjbG9zZSB0aGUgc3RyZWFtIG1lc3NhZ2VzIHNwb29sIGZpbGUuCisJICovCisJ c3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKworCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlv biBzdGF0ZSAqLworCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKwkvKiBDb21taXQg dGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCU1lbW9yeUNvbnRleHRSZXNl dChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOworfQorCisvKgogICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2Uu CiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xNTMyLDI0ICsxNjE1LDEzIEBAIGFwcGx5X2hhbmRsZV9z dHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewogCQlj YXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlzZXJpYWxpemVfc3RyZWFtX3N0b3Aoc3Ry ZWFtX3hpZCk7CisJCQlicmVhazsKIAotCQkJLyoKLQkJCSAqIENsb3NlIHRoZSBmaWxlIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplCi0JCQkgKiBpbmZvcm1hdGlvbiBhYm91 dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCQkJICovCi0JCQlzdWJ4 YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0J CQlzdHJlYW1fY2xvc2VfZmlsZSgpOwotCi0JCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJh bnNhY3Rpb24gc3RhdGUgKi8KLQkJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7Ci0KLQkJ CS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwotCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Ci0KLQkJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCQkJ TWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKLQotCQkJcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJY2FzZSBUUkFOU19MRUFERVJf UEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01T R19TVFJFQU1fU1RPUCwgcyk7CisJCQlzZXJpYWxpemVfc3RyZWFtX3N0b3Aoc3RyZWFtX3hpZCk7 CisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKIAkJCWJyZWFrOwogCiAJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CkBAIC0xNTk5LDcgKzE2NzEsNyBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogfQogCiAvKgotICogSGFuZGxl IFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBzcGlsbGVkIHRv IGRpc2suCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rp b24gd2FzIHNlcmlhbGl6ZWQgdG8gZmlsZS4KICAqLwogc3RhdGljIHZvaWQKIHNlcmlhbGl6ZV9z dHJlYW1fYWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9uSWQgc3VieGlkKQpAQCAt MTY5Miw2ICsxNzY0LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CiAJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOwogCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJp bmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAlib29sCQl0b3BsZXZlbF94YWN0OwogCiAJ aWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQpAQCAtMTcyMiw2ICsxNzk1LDI2IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJc2VyaWFsaXplX3N0cmVhbV9h Ym9ydCh4aWQsIHN1YnhpZCk7CiAJCQlicmVhazsKIAorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJU SUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBQYXJhbGxl bCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hhbmdlcywgc28gd3JpdGUK KwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0IGNhbiByb2xsYmFjayB0 aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAqLworCQkJc3RyZWFtX29w ZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQsCisJ CQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCXsK KwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGFf c2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfUkVBRFkpOworCQkJCSh2b2lkKSBw YV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKwkJCX0KKworCQkJYnJlYWs7CisKIAkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKQEAgLTE3 NDYsNyArMTgzOSwxMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykK IAkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKIAogCQkJaWYgKHRvcGxl dmVsX3hhY3QpCisJCQl7CisJCQkJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJCQkJ cGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwKKwkJCQkJCQkJCQkgRlNfUkVBRFkp OworCiAJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCQkJfQogCiAJCQli cmVhazsKIApAQCAtMTc4MywxNyArMTg4MiwxOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gcykKIC8qCiAgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3NpbmcuCiAgKi8K LXN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbikKK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3Ry ZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVjUHRyIGxzbikK IHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFyCQlwYXRoW01B WFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4 dDsKLQlCdWZGaWxlICAgICpmZDsKIAotCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNu KTsKKwlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQltYXliZV9zdGFydF9za2lw cGluZ19jaGFuZ2VzKGxzbik7CiAKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBvcGVuIHRyYW5z YWN0aW9uICovCiAJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwpAQCAtMTgwOSw4ICsxOTA5LDgg QEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBs c24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIs IHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2UpOworCXN0cmVhbV9m ZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZh bHNlKTsKKwlzdHJlYW1feGlkID0geGlkOwogCiAJYnVmZmVyID0gcGFsbG9jKEJMQ0tTWik7CiAJ aW5pdFN0cmluZ0luZm8oJnMyKTsKQEAgLTE4NDEsNyArMTk0MSw3IEBAIGFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCiAJCS8qIHJlYWQgbGVuZ3RoIG9mIHRoZSBvbi1kaXNrIHJlY29yZCAq LwotCQluYnl0ZXMgPSBCdWZGaWxlUmVhZChmZCwgJmxlbiwgc2l6ZW9mKGxlbikpOworCQluYnl0 ZXMgPSBCdWZGaWxlUmVhZChzdHJlYW1fZmQsICZsZW4sIHNpemVvZihsZW4pKTsKIAogCQkvKiBo YXZlIHdlIHJlYWNoZWQgZW5kIG9mIHRoZSBmaWxlPyAqLwogCQlpZiAobmJ5dGVzID09IDApCkBA IC0xODYyLDcgKzE5NjIsNyBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbikKIAkJYnVmZmVyID0gcmVwYWxsb2MoYnVmZmVyLCBsZW4pOwog CiAJCS8qIGFuZCBmaW5hbGx5IHJlYWQgdGhlIGRhdGEgaW50byB0aGUgYnVmZmVyICovCi0JCWlm IChCdWZGaWxlUmVhZChmZCwgYnVmZmVyLCBsZW4pICE9IGxlbikKKwkJaWYgKEJ1ZkZpbGVSZWFk KHN0cmVhbV9mZCwgYnVmZmVyLCBsZW4pICE9IGxlbikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBmcm9tIHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNoYW5nZXMgZmlsZSBcIiVzXCI6ICVtIiwK QEAgLTE4ODEsMTggKzE5ODEsMzIgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CiAKKwkJLyoKKwkJICogQnJlYWsgdGhlIGxvb3AgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcKKwkJICogdGhlIHRyYW5zYWN0aW9uLiBUaGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIHNob3VsZCBoYXZlIGNsb3NlZCB0aGUKKwkJICogZmlsZSBiZWZv cmUgY29tbWl0dGluZy4KKwkJICovCisJCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSAm JgorCQkJTXlQYXJhbGxlbFNoYXJlZC0+eGFjdF9zdGF0ZSA9PSBQQVJBTExFTF9UUkFOU19GSU5J U0hFRCkKKwkJCWdvdG8gZG9uZTsKKwogCQluY2hhbmdlcysrOwogCi0JCWlmIChuY2hhbmdlcyAl IDEwMDAgPT0gMCkKKwkJLyoKKwkJICogTm8gbmVlZCB0byBvdXRwdXQgdGhlIERFQlVHIG1lc3Nh Z2UgaGVyZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkKKwkJICogd29ya2VyIGFzIHNpbWlsYXIgbWVz c2FnZXMgd2lsbCBiZSBvdXRwdXQgd2hlbiBoYW5kbGluZyBTVFJFQU1fU1RPUAorCQkgKiBtZXNz YWdlLgorCQkgKi8KKwkJaWYgKCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSAmJiBuY2hhbmdl cyAlIDEwMDAgPT0gMCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5ZWQgJWQgY2hhbmdlcyBmcm9t IGZpbGUgXCIlc1wiIiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9z ZShmZCk7Ci0KKwlzdHJlYW1fY2xvc2VfZmlsZSgpOwogCXBmcmVlKGJ1ZmZlcik7CiAJcGZyZWUo czIuZGF0YSk7CiAKK2RvbmU6CiAJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCAoYWxsKSBjaGFu Z2VzIGZyb20gZmlsZSBcIiVzXCIiLAogCQkgbmNoYW5nZXMsIHBhdGgpOwogCkBAIC0xOTA5LDYg KzIwMjMsNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJTG9n aWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCVN0cmluZ0luZm9EYXRh IG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQll cmVwb3J0KEVSUk9SLApAQCAtMTkyOCw3ICsyMDQzLDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlh bGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKIAkJCSAqIHNwb29sZWQgb3BlcmF0aW9u cy4KIAkJCSAqLwotCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pOworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0LCB4aWQsCisJCQkJCQkJCSAgIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24p OwogCiAJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKQEAg LTE5MzcsNiArMjA1Myw3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g cykKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJ CWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsK IAogCQkJLyoKQEAgLTE5NDYsMTMgKzIwNjMsMjEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOwogCiAJCQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLiAqLwotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRh dGEpOworCQkJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TCkKKwkJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQllbHNlCisJ CQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJF QU1fQ09NTUlULAorCQkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCWlmICh3aW5mby0+ c2VyaWFsaXplX2NoYW5nZXMpCisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJl ZCwKKwkJCQkJCQkJCSBGU19SRUFEWSk7CiAKIAkJCS8qCi0JCQkgKiBBZnRlciBzZW5kaW5nIHRo ZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCi0JCQkgKiB0aGF0 IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAot CQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBl bmRlbmNpZXMgYW5kCi0JCQkgKiBkZWFkbG9ja3MuCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBk YXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgb3IKKwkJCSAqIHNlcmlhbGl6aW5nIGRh dGEgdG8gZmlsZSwgd2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzCisJCQkgKiBp cyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJl cyBkdWUKKwkJCSAqIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tzLgog CQkJICovCiAJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CiAKQEAgLTE5NzEsNiAr MjA5NiwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQli cmVhazsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogQ2xv c2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBpcworCQkJICogYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcy4KKwkJCSAqLworCQkJaWYgKHN0 cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCiAJCQlsaXN0X2ZyZWUoc3VieGFj dGxpc3QpOwogCQkJc3VieGFjdGxpc3QgPSBOSUw7CiAKQEAgLTM4NTgsNyArMzk5MSw3IEBAIHN1 YnhhY3RfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkK IH0KIAogLyogZm9ybWF0IGZpbGVuYW1lIGZvciBmaWxlIGNvbnRhaW5pbmcgc2VyaWFsaXplZCBj aGFuZ2VzICovCi1zdGF0aWMgaW5saW5lIHZvaWQKK3ZvaWQKIGNoYW5nZXNfZmlsZW5hbWUoY2hh ciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAlzbnByaW50ZihwYXRo LCBNQVhQR1BBVEgsICIldS0ldS5jaGFuZ2VzIiwgc3ViaWQsIHhpZCk7CkBAIC0zODcyLDcgKzQw MDUsNyBAQCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQpCiAgKiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFz IGEgc2VwYXJhdGUgc2V0IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9u LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CkBAIC0zODk1 LDkgKzQwMjgsNiBAQCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9u SWQgeGlkKQogICogYnkgc3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUg Zmlyc3QgY2h1bmsgb2Ygc3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24s IGNyZWF0ZSB0aGUgYnVmZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNy ZWF0ZWQgZmlsZS4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5u aW5nIG9mIGEgInN0cmVhbWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0 L3N0cmVhbV9zdG9wIG1lc3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9p ZAogc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZp cnN0X3NlZ21lbnQpCkBAIC0zOTA1LDcgKzQwMzUsNiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBz dWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRo W01BWFBHUEFUSF07CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pOwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBA IC0zOTQ0LDE1ICs0MDczLDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2Fj dGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxl CiAgKgkgIENsb3NlIHRoZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdl cy4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFt aW5nIGJsb2NrLCBpLmUuIGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3Ry ZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3Nl cnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVD bG9zZShzdHJlYW1fZmQpOwpAQCAtMzk2OSwxMyArNDA5MywxMSBAQCBzdHJlYW1fY2xvc2VfZmls ZSh2b2lkKQogICogdGhlIGxlbmd0aCksIGFjdGlvbiBjb2RlIChpZGVudGlmeWluZyB0aGUgbWVz c2FnZSB0eXBlKSBhbmQgbWVzc2FnZQogICogY29udGVudHMgKHdpdGhvdXQgdGhlIHN1YnhhY3Qg VHJhbnNhY3Rpb25JZCB2YWx1ZSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fd3Jp dGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7CiAJaW50CQkJbGVuOwogCi0J QXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElz VmFsaWQoc3RyZWFtX3hpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAkvKiB0 b3RhbCBvbi1kaXNrIHNpemUsIGluY2x1ZGluZyB0aGUgYWN0aW9uIHR5cGUgY2hhcmFjdGVyICov CkBAIC0zOTk0LDYgKzQxMTYsMjMgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwg U3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZQor ICoJICBTZXJpYWxpemUgYSBtZXNzYWdlIHRvIGEgZmlsZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0 aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBzdHJlYW1fd3JpdGVfY2hh bmdlIGV4Y2VwdCB0aGF0IGl0IHdpbGwgb3BlbiB0aGUKKyAqIHRhcmdldCBmaWxlIGJlZm9yZSB3 cml0aW5nIHRoZSBtZXNzYWdlIGFuZCBjbG9zZSBmaWxlIGF0IHRoZSBlbmQuCisgKi8KK3N0YXRp YyB2b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBj aGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pOworCisJc2VyaWFsaXplX3N0cmVhbV9zdGFydCh4aWQsIGZhbHNlKTsKKwlzdHJlYW1f d3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJc2VyaWFsaXplX3N0cmVhbV9zdG9wKHhpZCk7Cit9 CisKKy8qCiAgKiBDbGVhbnVwIHRoZSBtZW1vcnkgZm9yIHN1YnhhY3RzIGFuZCByZXNldCB0aGUg cmVsYXRlZCB2YXJpYWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtNDY2NCw3ICs0 ODAzLDggQEAgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpCiAvKgogICogUmV0 dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqd2luZm8g aXMgYXNzaWduZWQgdG8KICAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5mbyAo aWYgdGhlIGFjdGlvbiBpcwotICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpLCBvdGhl cndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTCBvciBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkUpLCBvdGhlcndpc2UKKyAq ICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgogICovCiBzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgog Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKip3aW5mbykKQEAgLTQ2ODYsMTMgKzQ4MjYsMTcgQEAgZ2V0X3RyYW5z YWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKip3aW5mbykKIAkgKi8KIAkqd2luZm8gPSBwYV9maW5kX3dvcmtlcih4aWQpOwogCi0J aWYgKCp3aW5mbykKKwlpZiAoISp3aW5mbykKIAl7Ci0JCXJldHVybiBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CisJfQorCWVs c2UgaWYgKCgqd2luZm8pLT5zZXJpYWxpemVfY2hhbmdlcykKKwl7CisJCXJldHVybiBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU7CiAJfQogCWVsc2UKIAl7Ci0JCXJldHVybiBUUkFOU19M RUFERVJfU0VSSUFMSVpFOworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7 CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4 IDYwM2RjYjEuLjEzMWM5YTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJl bGF0aW9uLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9maWxlc2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaG1fbXEuaCIKQEAgLTEwOCw2ICsxMDksMjAgQEAgdHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJh bnNTdGF0ZQogfSBQYXJhbGxlbFRyYW5zU3RhdGU7CiAKIC8qCisgKiBTdGF0ZSBvZiBmaWxlc2V0 IGluIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKgorICogRlNfQlVTWSBtZWFucyB0aGF0IHRoZSBs ZWFkZXIgaXMgc2VyaWFsaXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4gRlNfUkVBRFkKKyAqIG1l YW5zIHRoYXQgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB0byB0aGUgZmls ZSBhbmQgdGhlIGZpbGUgaXMKKyAqIHJlYWR5IHRvIGJlIHJlYWQgYnkgYSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7CisJRlNf VU5LTk9XTiwKKwlGU19CVVNZLAorCUZTX1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisK Ky8qCiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBwYXJhbGxlbAogICogYXBwbHkgd29ya2Vycy4KICAqLwpAQCAtMTM2LDYg KzE1MSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICog cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sgaXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdh aXQuCiAJICovCiAJcGdfYXRvbWljX3VpbnQzMglwZW5kaW5nX3N0cmVhbV9jb3VudDsKKworCS8q CisJICogQWZ0ZXIgZW50ZXJpbmcgUEFSVElBTF9TRVJJQUxJWkUgbW9kZSwgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgd2lsbAorCSAqIHNlcmlhbGl6ZSBjaGFuZ2VzIHRvIHRoZSBmaWxlLCBhbmQg c2hhcmUgdGhlIGZpbGVzZXQgd2l0aCB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgd2hl biBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gVGhlbiB0aGUKKwkg KiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2Fn ZXMuCisJICoKKwkgKiBGaWxlU2V0IGlzIHVzZWQgaGVyZSBpbnN0ZWFkIG9mIFNoYXJlZEZpbGVT ZXQgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvCisJICogc3Vydml2ZSBhZnRlciByZWxlYXNpbmcgdGhl IHNoYXJlZCBtZW1vcnkgc28gdGhhdCB0aGUgbGVhZGVyIGFwcGx5CisJICogd29ya2VyIGNhbiBy ZS11c2UgdGhlIHNhbWUgZmlsZXNldCBmb3IgdGhlIG5leHQgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LgorCSAqLworCVBhcnRpYWxGaWxlU2V0U3RhdGUJCWZpbGVzZXRfc3RhdGU7CisJRmlsZVNldAkJ ZmlsZXNldDsKIH0gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKIAogLyoKQEAgLTE1NCw2ICsx ODIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckluZm8KIAlkc21fc2Vn bWVudCAqZHNtX3NlZzsKIAogCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJlbWFpbmluZyBjaGFuZ2Vz IHRvIGEgZmlsZSBkdWUgdG8gdGltZW91dCB3aGVuIGF0dGVtcHRpbmcgdG8gc2VuZCBkYXRhIHRv CisJICogdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4KKwkgKi8K Kwlib29sCQlzZXJpYWxpemVfY2hhbmdlczsKKworCS8qCiAJICogVHJ1ZSBpZiB0aGUgd29ya2Vy IGlzIGJlaW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CiAJICogdHJhbnNhY3Rp b24uIEZhbHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4K IAkgKi8KQEAgLTE3Niw2ICsyMTEsOCBAQCBleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIExp c3QgKnN1YnhhY3RsaXN0OwogCitleHRlcm4gUEdETExJTVBPUlQgQnVmRmlsZSAqc3RyZWFtX2Zk OworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBz dHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC0yMTIs MTAgKzI0OSwyMSBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQ dHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0 YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVl KTsKIAorZXh0ZXJuIHZvaWQgc2VyaWFsaXplX3N0cmVhbV9zdGFydChUcmFuc2FjdGlvbklkIHhp ZCwgYm9vbCBmaXJzdF9zZWdtZW50KTsKK2V4dGVybiB2b2lkIHNlcmlhbGl6ZV9zdHJlYW1fc3Rv cChUcmFuc2FjdGlvbklkIHhpZCk7CisKKy8qIENvbW1vbiBzdHJlYW1pbmcgZnVuY3Rpb24gdG8g YXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICovCitleHRlcm4gdm9pZCBhcHBseV9zcG9v bGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwK KwkJCQkJCQkJICAgWExvZ1JlY1B0ciBsc24pOworCiBleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRj aChTdHJpbmdJbmZvIHMpOwogCiBleHRlcm4gdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KHZvaWQpOwogCitleHRlcm4gdm9pZCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBz dWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5n ZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK2V4dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVw X2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworCiBleHRlcm4gdm9pZCBJbml0 aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CiAKIGV4dGVybiB2b2lkIGFwcGx5X3dvcmtlcl9jbGVh bl9leGl0KGJvb2wgb25fc3ViaW5mb19jaGFuZ2UpOwpAQCAtMjM4LDYgKzI4Niw4IEBAIGV4dGVy biB2b2lkIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUg bmJ5dGVzLAogCiBleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpOwogZXh0ZXJuIHZvaWQgcGFfc3RyZWFt X2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpOworZXh0ZXJuIHZv aWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJl ZCwKKwkJCQkJCQkJCSAgIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSk7CiAKIGV4 dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDBlMTFj YjUuLjRlNzEwOWYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzg5LDYgKzEzODks NyBAQCBMYWdUcmFja2VyCiBMYXJnZU9iamVjdERlc2MKIExhc3RBdHRudW1JbmZvCiBMYXRjaAor UGFydGlhbEZpbGVTZXRTdGF0ZQogTGVycEZ1bmMKIExleERlc2NyCiBMZXhlbWVFbnRyeQotLSAK Mi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v53-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v53-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v53-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81987; creation-date="Tue, 29 Nov 2022 04:12:32 GMT"; modification-date="Tue, 29 Nov 2022 04:48:25 GMT" Content-Transfer-Encoding: base64 RnJvbSAzN2U2MzE0MjlhZDY5NDg5N2RiNGE1NWVhOTEzODhmNDE3ZGQ1N2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NTMg My81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAy MzIgKysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTQgKysrKysr KysrLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIHwgMTUyICsrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAxNDA1IGluc2VydGlvbnMoKyksIDY0NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBs CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDFkZDkuLmI5NTFkOTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDI5X29uX2Vycm9yLnBsJywKICAgICAgICd0LzAzMF9vcmlnaW4ucGwnLAogICAgICAg J3QvMDMxX2NvbHVtbl9saXN0LnBsJywKKyAgICAgICd0LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3Li42NWY0M2YwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxNDkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdl ID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFu ZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFpciBv ZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRpbiAg PSAnJzsKKwlteSAkb3V0ID0gJyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1lciA9 IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMg SWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBu ZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVz aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZl cmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9u YjsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJ XHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWls LCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycp OworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMg SW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29s dW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0 aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVlcy4gVGhpcyBpcyB0 byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKKwkjIHByb3Bl cmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6 dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7CisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIp OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxODAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSw4MiArMTk2LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4u MDIwYWQ5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFj dC5wbApAQCAtOCw2ICs4LDk0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFy YWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJhbGxlbCkK Kwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2Fn ZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0 IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0 aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMg c3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkg PSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIg aXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0 IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg MTUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDAp IHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOwor CX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHku CisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBu b2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyNSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVz dF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRh cF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDQxICsxNDEsMjYgQEAgbXkg JHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywgIDUwMCkg cyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 MDEsICAyMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2 NyksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBt b2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3Ry ZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmlu ZGV4IDg2NmYxNTEuLmQyY2M0NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCkBAIC04LDYgKzgsMTM4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBhIHNtYWxsIChub24tc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0 LCBtZDUoNDo6dGV4dCksIC00KTsKKwlDT01NSVQ7CisJfSk7CisKKwkjIElmICJzdHJlYW1pbmci IHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawor CSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVz c2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJ IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJ TlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK KwlDT01NSVQ7CisJfSk7CisKKwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1 KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBj b3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8 MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcg bW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAorCSMgYWZ0 ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0 ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUg c2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMyw1MDAwKSBzKGkpOwor CUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7CisJQ09NTUlUOworCX0pOwor CisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlz IGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZs ZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppLCA0Kmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKwor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJP TSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSks CisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1p bmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBD T0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiAr MTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwg YW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOwot Q09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRo IERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0 ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBt ZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMg YWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZv ciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBB IHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3Qg dG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhl IGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiAp OwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLjc1MmU3OWEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUg bG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1 bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJh bGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5n IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdl LywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBz dHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9 IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJ U0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5U IHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyMDAwfDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBG Uk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQg dGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMg Q3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5n IG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9z dWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5h bWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4 LDgxICsxOTEsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNB VkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBz KGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNL IFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkp OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKICk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNDAwMSw0NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4 NTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9s bGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJ TjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAx LDk1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1S T0xMQkFDSzsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyLi45ZDY3 OGIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1f c3VieGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVh bWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNo ZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9M TEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBz MjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMipp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVN TiBjOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09M VU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEy MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUg PSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0 aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0g b24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1T QVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVh bWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Ig YXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsK KwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3 YTc5N2YzLi40MjY1ZDNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAn ZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJ aWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQor CisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0 ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKKyMgY2Fz ZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVf QywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKwor CW15ICRvZmZzZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKworCW15ICRvbGRwaWRfQiA9 ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN0 cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJ QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1p bmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5n X21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXph dGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlT RUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVD VCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkp IG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJh bWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRo YXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0 cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMg JG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJ IyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlKTsKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUpOwor CisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cihzKQorCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRy ZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3Ry YW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAyUEMgQ09NTUlU CisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwor CSk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKKwkpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5k ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIHdp dGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgorCSMgMC4gQ2xlYW51cCBmcm9tIHBy ZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KKwkjIDEuIEluc2VydCBvbmUgbW9yZSBy b3cuCisJIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCisJIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3Ry ZWFtZWQgaW5zZXJ0cy4KKwkjIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dz ICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxv Z2ZpbGU7CisJJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgMlBDIFBSRVBB UkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKKwkkbm9kZV9BLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OSwgJ2Zvb2JhcicpOworCQlTQVZFUE9JTlQgc3BfaW5uZXI7CisJCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J291dGVyJzsKKwkJIik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUpOworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSk7CisKKwkjIGNo ZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJl c3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOworCisJJG5v ZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMg ZW5kZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyBjaGVj ayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCisJIyBBbGwgdGhlIHN0cmVh bWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4K KwkjICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KKwkkcmVzdWx0ID0gJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRu b2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBv biBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBz dWJzY3JpYmVyIEMnKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEo MyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg Q2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9BLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qyk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFtaW5nX21vZGUg ZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KK30KKwogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rl cy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ5MywxNSBAQCBp cygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgot CVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRw aWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVw bGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9 IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBm b3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50 aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0 cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBh ZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUg bG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBh IG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91 cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0j IDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5z ZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVy IHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2lu YWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot IyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBi ZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVk IFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs ICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXIn KTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBz cF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBv biBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsK LQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl IGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEIn KTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRz IGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAo cHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwg J2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHBy ZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQs IHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0 ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9k ZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDli NDU0MTAuLjgyYjVlNmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDMwOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVk IHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFs bGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBj b21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJh bWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9 b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZwor eworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNf cGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJ IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVk IGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2Ug aGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBi dW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdldHMg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9M TEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg MlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJl c3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNr LCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVk IHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIDIuIFRoZW4gc2Vy dmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMg My4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJz Y3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8 MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0 aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRv IGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBi YWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2lu YWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5v dyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQ QyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5z ZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBz dGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0 aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZv cmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93 cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJl YW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2gg aXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3Jp YmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEg ZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rp b24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBz byBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwz MzM1fDMzMzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBp bnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVw CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1 ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRv IGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg Q2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMg MS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNr IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3Jp Z2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBD IENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0j IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRo ZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRh IGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5v dGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRp YXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJs aXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMg RG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4K LSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAo dGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBv biBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMg c3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91 dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQg UFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQ QyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVw bGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQg KG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUg MlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBp bnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2Vs bCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRo ZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bV9wYXJhbGxlbF9jb25mbGljdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xMGVmZDJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v53-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v53-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v53-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=22537; creation-date="Tue, 29 Nov 2022 04:12:32 GMT"; modification-date="Tue, 29 Nov 2022 04:48:26 GMT" Content-Transfer-Encoding: base64 RnJvbSBiMjBiYmY5ZDNlZmQ4N2EyNGU5ODc5YjkzNWY0NGI2ZTg5M2Y1ZGY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBNb24sIDIxIE5vdiAyMDIyIDIwOjE2OjE3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTMgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAg ICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAg ICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jICAgICAgfCAgMzAgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAxODIgKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAg ICAgfCAgIDggKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwgfCAgNTYgKysrKysrLQogMTMgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyks IDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMTMwMzYxZi4uNjkxMjU3MSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKQEAgLTc5NDAsNiArNzk0MCwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJy ZXRyeTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUgYXBw bGllZCB3aGlsZSB0aGVyZSB3ZXJlIGFueQorICAgICAgIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLCBuZWNlc3NpdGF0aW5nIGEgcmV0cnkuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZp ZWxkPnN1YmNvbm5pbmZvPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggZjM2NjcxMC4uMTMxMWYzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xNTAwLDEyICsxNTAwLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgPHBh cmE+CiAgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3Qg YmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAgIGNoYW5n ZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFs Pm9mZjwvbGl0ZXJhbD4gYW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28g dGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBiZSB3cml0 dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFz ZSByZWZlciB0byA8bGluawotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29t bWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisg ICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIHRo ZSBmYWlsZWQgdHJhbnNhY3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJhbD5zdHJl YW1pbmcgPSBvbjwvbGl0ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0aGUgZmlu aXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUK KyAgIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVy IHRvCisgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFM VEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3BhcmE+CiAg PC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRl eCBmMTczYTA5Li42NGQ1ODAyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAg ICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhh cHBlbnMgaW4gYQogICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlzaCBM U04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0IG5vdCBiZSByZXBv cnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBXaGVuIGFwcGx5aW5nIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMsIGlmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsIHRoZQorICAgICAgICAg IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvci4gVGhlCisgICAg ICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlzcmVnYXJkZWQgd2hl biByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFw cGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAgbW9kZS4KICAgICAg ICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZmYzMuLjcyM2IxNDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEsNiArNzEsNyBAQCBH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5zdHJlYW0g PSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0gc3ViZm9ybS0+c3Vi dHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVv bmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7CiAKIAkvKiBHZXQgY29ubmlu Zm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05PSUQsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMmQ4MTA0Yi4uYzJjN2Q4YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgUkVWT0tFIEFM TCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZST00gcHVibGljOwogUkVWT0tFIEFM TCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3Vi ZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVuYWJsZWQsCiAgICAgICAg ICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxl b25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJs aWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAgICAgc3VicmV0cnksIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKICAgICBPTiBwZ19z dWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlv bl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDll NGI2NzYuLmIwM2UzN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK QEAgLTY5MSw2ICs2OTEsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFT RV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJM RUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9 IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1 bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAzYWNmOWQ1 Li4yMDY0NzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjMyLDYgKzIzMiwxNyBAQCBwYV9jYW5fc3RhcnQo VHJhbnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJu IGZhbHNlOwogCisJLyoKKwkgKiBEb24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3Ig cmV0cmllcywgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMg ZGV0ZWN0ZWQgdGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rp b24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0 aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBh cmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVy biB0cnVlOwogfQogCkBAIC0xNTQ1LDMgKzE1NTYsMjIgQEAgcGFfdW5sb2NrX3RyYW5zYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlVbmxvY2tBcHBseVRyYW5z YWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCiAJCQkJCQkJ CQkgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7CiB9CisKKy8qIENoZWNrIGlm IGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0 aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgUGFy YWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnRt cF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZp cnN0KGxjKTsKKworCQlpZiAodG1wX3dpbmZvLT5pbl91c2UpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCBiNWZiNzQ1Li5mYzQwMjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKQEAgLTQwOCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRi YWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwog CiBzdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24p OwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRp YyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00NDUsNiArNDQ1LDggQEAgc3RhdGljIGlubGluZSB2b2lk IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFuc0FwcGx5 QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJ CQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitzdGF0aWMg dm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICogUmV0dXJu IHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpAQCAtMTAz Nyw2ICsxMDM5LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBs eV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBSZXNldCB0aGUg cmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFBy b2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwu ICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKIApAQCAt MTE0Niw2ICsxMTUxLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJ aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDIsNiAr MTIxMCw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTI2Myw2ICsxMjc0LDkgQEAgYXBw bHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9w b3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBh cmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190 YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIApAQCAtMTM4OCw2ICsxNDAy LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWJyZWFr OwogCX0KIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CkBAIC0xODc2LDYgKzE4OTMsMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlp ZiAodG9wbGV2ZWxfeGFjdCkKKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIApAQCAtMjEyMCw2ICsyMTQxLDkg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJ fQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRy eShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2Rh dGEuZW5kX2xzbik7CiAKQEAgLTQxODcsMjAgKzQyMTEsMjggQEAgc3RhcnRfdGFibGVfc3luYyhY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19D QVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292 ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJ SE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZB bnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJS VVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3lu Y2hyb25pemF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vi c2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVv bmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJ LyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25p emF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUg c3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0J CQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3Jp cHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCWFwcGx5 X3dvcmtlcl9jbGVhbl9leGl0KGZhbHNlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC00MjI1 LDIwICs0MjU3LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQog CX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwg YW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQor CQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFi b3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNV TUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBh cHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15 U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwor CiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlw dGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3Jr ZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVu dCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJ CSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwot CQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwg IWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigp OwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8K KwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpA QCAtNDUyNCwzOSArNDU2MywyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9 CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9u IGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0 aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAot RGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVy cm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3Zl ciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xE X0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsK LQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNo cm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9y KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3Jr ZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7 CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlw dGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2Ny aXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coInN1 YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIs CiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCWFwcGx5X3dvcmtlcl9jbGVhbl9l eGl0KGZhbHNlKTsKIH0KIAogLyoKQEAgLTQ4NTksMyArNDg3OSw3MSBAQCBhcHBseV93b3JrZXJf Y2xlYW5fZXhpdChib29sIG9uX3N1YmluZm9fY2hhbmdlKQogCiAJcHJvY19leGl0KDApOwogfQor CisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAq IElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVy cm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBw bGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3Jl dHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9v bAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlv bl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFs dWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBzdGF0 ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRy eSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJ cmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQgcmV0cnkgaWYgbm8gYWN0aXZlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkgJiYgIXBhX2hhdmVfYWN0aXZlX3dv cmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJ LyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFi bGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRp b25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVM b2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6 ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1l bXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJl dHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5 IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdl dERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBk YXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2Vs ZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJs ZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA1MTQxYTY2Li43NmUxMzVjIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTQ1MDgsOCArNDUwOCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAq Zm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0 aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0J ICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSBy ZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBz dWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3Rvcmlu ZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkg Ki8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQ UWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApp bmRleCAwMTZhZmJjLi5lYjc4YTMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2Ny aXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3Vi ZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBjYXVzZSB0aGUK IAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJYm9vbAkJc3Vi cmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZAor CQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUKKwkJCQkJCQkJCQkJ ICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJCQkJCQkJCQkgKiB3b3JrZXJzICovCisK ICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQg aGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0 CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzEsNiArMTM2LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0 ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxs eSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwlib29s CQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZQor CQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCiAJY2hh cgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICov CiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICov CiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZv ciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5k ZXggMTMxYzlhNi4uZDc5NTViOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBw YV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBl eHRlcm4gdm9pZCBwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tN T0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIGJvb2wgcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQp OworCiAjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBw bHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY1ZjQzZjAuLjY0YjJlZGIgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtODcsOCArODcsMTYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnKTsKIAogCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKTsKIAkkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAo YmluYXJ5ID0gb24pIik7CisJJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKwkgICkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKIAkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KIAkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDEwZWZkMmQuLmYyYzM2NjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxl bF9jb25mbGljdC5wbApAQCAtMjEsOSArMjEsOSBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0Owog bXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vi c2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKIAotIyBDaGVjayBpZiBhbnkgc3Ry ZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiBXZQotIyBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwotIyB2ZXJib3NpdHkuCisjIENoZWNrIGlmIGFueSBzdHJl YW1pbmcgY2h1bmtzIGFyZSBhcHBsaWVkIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisjIEFuZCBjaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZhaWxlZCB0byBzdGFy dC4gV2UgaGF2ZSB0byBsb29rIGZvcgorIyB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgogJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 CiAKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwpAQCAtMTQ2LDYgKzE0Niw1NiBAQCAkcmVzdWx0 ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMTAwMDApLCAnZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAorIyBDbGVhbiB1 cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3Rf dGFiKGEpIik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHJlLWFwcGx5IGEgZmFp bGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbGVhZGVyIGFwcGx5CisjIHdvcmtl ciBhbmQgYXBwbHkgc3Vic2VxdWVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBh cmFsbGVsIGFwcGx5CisjIHdvcmtlciBhZnRlciB0aGlzIHJldHJ5IHN1Y2NlZWRzLgorIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5T RVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpOworQ09NTUlUO30pOworCisjIENoZWNrIGlmIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgbm90IHN0YXJ0ZWQgYmVjYXVzZSB0aGUgYWJvdmUK KyMgdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGJlIGFwcGxpZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRyaWVzLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRo ZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisK KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgn KTsKKworIyBBZnRlciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpIik7CisKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQvLAorCSRvZmZzZXQpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMTAwMDEpLCAnZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cicpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwog Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716B802A1733548A99761AE94129OS0PR01MB5716jpnp_--