Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkJLL-00BrCM-Hm for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 07:48:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rkJLJ-00EHJr-UW for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Mar 2024 07:48:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkJLJ-00EHJj-2l for pgsql-hackers@lists.postgresql.org; Wed, 13 Mar 2024 07:48:06 +0000 Received: from esa4.fujitsucc.c3s2.iphmx.com ([68.232.151.214]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkJLE-004G7z-Nu for pgsql-hackers@lists.postgresql.org; Wed, 13 Mar 2024 07:48:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1710316080; x=1741852080; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=PeFILAxg/xnTrmI80DP9MyrR2tOqCkTLi+kmuXHn9HQ=; b=jaqpxB1wmqbwzTrKizOJ4uuulhMYVMW0Yvk6czLsVfL0PX8kaPiEdW86 QIuBL2re/STzkIIKWz/8YyxkyuJ2Ta24wEIZ8ny7eKbQiD7WMiLx/28Ua IcBj++HdHLtIZh6JS56FtfNYyEhBvwZfaTkpukJldvz1YyDqTILYe77Yl lXyW8ILwpnBej4i1uYMIHhSDtC6Et7zFFgZyTrLg2alrFYra58OmiujBr NnH2/CRSdtVOi+eQefXkxNpVOaOKQkEb+N5hnmc+cnstTkqfx04Sw3P37 HzZL5ww9jBIqaZBHFye8QtoMGKJThbLUpjUZjMlJKQ+VUol4WCZJ2iedW w==; X-IronPort-AV: E=McAfee;i="6600,9927,11011"; a="26864381" X-IronPort-AV: E=Sophos;i="6.07,119,1708354800"; d="scan'208,223";a="26864381" Received: from mail-os0jpn01lp2105.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.105]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Mar 2024 16:47:56 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ebuCIu7JzpEDLcQitC9Kc28+fAK9Q25Clb/aGZs3RMhGp3ofcGvKWM4x6qCpqOYitUQfbLglIow3d4HPiiw4JCLCJivyqcocXYj9YJEPYnliNSqDmTOwskWONRwzYCfYacupMU+KkQP5C8FO5vdRXwMx6IplHUh2G9c7gtnmmKnSjAzu+xwc4c/7Wg48CObG3BT34U1W5nz4uWRGTHbiidZuBoWfz6SFfB4zb0QkpJvTeB0vyZr33mwElEmry6YqkpaRwhMgIB6wVAxpHa85EupAudE/pInqucV9DX/3YhB2yrSpAIl41YTQDtlp4HxawVe4zL7vu5pSWKMwPFdrfg== 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=zSttY5tYVCUHRVKE+es6Hrjz+3r1B1zVu9Dq0PrWh6I=; b=YKuLzp7AXjnjr8JdMyLZB+3ZYWgoqr3FiUz8u2ij3AwDEuETighqO4qQqMVPETTrVIIgjCTy1H2kZMJd98d9beJpUcFrq1UqL0h7QD0Dzd+rYYBnt2AjGtx04afcakMhAXaEra7wf5uvzkNI1v5hQq05ajvkcjUeVdCZnR8xxSqHvYafudkBsz0rCD38eDg2g0AzIcHumKQp1nnf5dzcK5Wl6SnXmeXmYmLjzabeRUkpXpi6aN1vPWp7URt7YSrU9OffPpVJIsgSJn99dOAdnJNgzG6+P9caWg78F9run/W+h4+QFL6cALqdDlGZMzDt7eIy8BZ7iWE4CblhoXxsWg== 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 TYCPR01MB12077.jpnprd01.prod.outlook.com (2603:1096:400:439::5) by OS0PR01MB5522.jpnprd01.prod.outlook.com (2603:1096:604:a1::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.36; Wed, 13 Mar 2024 07:47:53 +0000 Received: from TYCPR01MB12077.jpnprd01.prod.outlook.com ([fe80::7e1a:6993:fe9e:5317]) by TYCPR01MB12077.jpnprd01.prod.outlook.com ([fe80::7e1a:6993:fe9e:5317%3]) with mapi id 15.20.7386.017; Wed, 13 Mar 2024 07:47:53 +0000 From: "Hayato Kuroda (Fujitsu)" To: 'Euler Taveira' , Tomas Vondra CC: "pgsql-hackers@lists.postgresql.org" , Michael Paquier , Peter Eisentraut , Andres Freund , Ashutosh Bapat , Amit Kapila , Shlok Kyal , =?utf-8?B?RmFicsOtemlvIGRlIFJveWVzIE1lbGxv?= , vignesh C Subject: RE: speed up a logical replica setup Thread-Topic: speed up a logical replica setup Thread-Index: AQHYJxwqCwVDEK8rxk6UuFJmWEa5OLBaerWAgBix/4CAACTuAIACleiAgACOjoCAKWVqAIApDNiAgARDvICAAC3UgIAADN4AgABJ6wCAAUerAIAHtdWAgAFvhACAAEZbgIAAWW2AgACrngCAAM0jQIAPei1wgAAshICAAp5LgIADBLQAgACKXLCABEd0gIABoIwAgAB7ucCAAcm90IAAHJgAgAACwICAAAXhgIAAC7MAgAAh+gCAAIfpEIAAGb3AgACYWmCAAOVegIAAfuxAgAeMDoCAAAXdAIABBpmAgABeF2CACXUbgIAATP9AgAHL3uCAARDPAIAAoFUwgAQywWCAAeMXAIADek5ggAz2jwCABVnHcIADBCkAgADUOwCAANs88IAH2USAgAAZdzA= Date: Wed, 13 Mar 2024 07:47:52 +0000 Message-ID: References: <9a9c7e65-c47b-4400-a63e-ac6169c0860e@app.fastmail.com> <34075bd4-c85d-4654-a782-0cd6713b2c89@app.fastmail.com> <2edde173-5ff9-45fd-b881-cd04eb13049f@app.fastmail.com> <2231a04b-f2d4-4a4e-b5cd-56be8b002427@app.fastmail.com> <40595e73-c7e1-463a-b8be-49792e870007@app.fastmail.com> <6423dfeb-a729-45d3-b71e-7bf1b3adb0c9@enterprisedb.com> 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?NTBfQWN0aW9uSWQ9YmQzZDQ2NDMtZmI1MS00YTUzLWEzMGItYWVjZTNkMTkw?= =?utf-8?B?OGY0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjQtMDMtMTNUMDc6NDE6MjlaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?Q?d-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: TYCPR01MB12077:EE_|OS0PR01MB5522:EE_ x-ms-office365-filtering-correlation-id: d72da06a-dd7b-4794-24df-08dc4331e390 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SHgbitF7PBgPfrjnNRkzrPIGM10p9B5l34yCstgFEIaxEU4vl1K0ReDw5Zn5v+D8d4tQkixiPvrUY2b1IGjZRwVnvazqaqYsJv+9lhlsWK4aXx8+6gOyINOr5LMOVOC9wKLABrQ4kasioiZYfCJi7I5jIabiurSR3aIUBfrTlCXl/qCLFdJlVQbOI7QwRhEjWtqW1F+3BvtPnxpXV1nkDi4WF5MV7XAUxXr+fEZRLqVQHZp99+sdvO4wmU87txVojImoyr6XfD7r0L1TvR6zn15cFjuXDs3a866TMEAs9EDJA4KfSmWZMKE0rhJE5rpsTXh0YhPiPqulexHhGyvG042F/3OeeH9co5wfC5xXFrbsASJR7v4XUDxDnYQysPcom02SbU0dpPWDAYgWn8qARNunjg+F1YmRGmvr+2ytKTo/cUFFaiuOR5nnkBlI+lthLWEgeuggYTNT0hjL3biBPgCcxNIdN/AaCy0vRR+63d2gYNVWzmJE07ElIhVeYfn3BseplYfVZp+/E6A0H3UqiFrAtM1DbZtBt4xcASq/+6eVNl4zwgG2T5o74lhDDjGfYRTAJ0skfGXK0McqAran6O9kK3k5YlB/PezSr9QNX9ufGI1fu+rAVjjQZCLSHJj6m60edJRsddt2k0tpYBK61sTzHhUgv9OlkQXhzJubQGZIhy4JazQ1+KWf42nSbBpOYkPChJ4KRbqHsnmUxnVK8A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB12077.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(7416005)(1800799015)(1580799018)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y1NLdk56OXlvVVBXUmxYc3pEY3JTTFU0a3gyTkdEMEsveHJCV3J1dVQ3SlNk?= =?utf-8?B?eGFwcmI4R3d6UC83dEFoTFF5UTVtbUhEVzkvalhhREJJWGdWMkwzYmRWS3Nq?= =?utf-8?B?M2JkekF2S09lM0o3S2FYM3BLUG8wTVJTOGl5VDhLUGJ0SmZkcEd6VXp0Z1Y0?= =?utf-8?B?RHVvMnZ0dWtrZXFhNjNGYnBQQ1NUbjV0eFBaUTd2clh4b01VNmQwenUvem8y?= =?utf-8?B?VkVsU3k3ajZTZDMvWkhReFJ3K05RNC9tMmhudkprejdRYzBEb1hzR2xvVXpI?= =?utf-8?B?bWNUdDlDS2Fud0NSWkNEdVVVVXMyZ0ZpTjlKdHpUU2xwZHd0dVhVZkxTZ1VP?= =?utf-8?B?c2paMm1CZzBlV1JoYno5VUQycTd4bDdaR3NFVEJ0WlZxckFhTW1UQnBqaDVQ?= =?utf-8?B?dE14R3BKNm9oVGlEY2JBN3NRUDVQL2l5c2JhY1h6OWNOb1J0azJXVEpDTUFj?= =?utf-8?B?c2pOSVVpdSsxNzE0eTQyd0Rqek1jK0xOTGk5dE0zNkkyTFUydGRMdjA4bzhS?= =?utf-8?B?ODBidFQzRGM3anZaZGxqa25iR1JycW1STkg3ZHI2YXVuUEFwYytVdWMvR2VV?= =?utf-8?B?MEQrdDZJYTFBb1RDRU5STzdscHhoRmt2MmZSWERWeXdGUGFWUk1JMjBveDBV?= =?utf-8?B?N0hURDE2NHhhR2RNaUlvVWRXdDNVazBYRWpJLzNNNHRwcGw4aElvOHNkT21Q?= =?utf-8?B?a25rZW1BdUptQ0pVdXJQUXhaUmJtcVBGb1c3NWVIako5bmhtTVRMS3hlMEhr?= =?utf-8?B?bWZidm1qc2o1Tkt6djNUSVJrWERFNkJ5VzUzQm5udEg4TWRvWXFPclhIZkl1?= =?utf-8?B?ZVhNNE5sQXEvMVovVlU0Mk80YXZFd3FRdUE0OWRvaGhTZ29adk42R2oxTXgx?= =?utf-8?B?NTgzRjVHZlZ0TndtYjg2Z3pjKzFEMmhySThWdTQwMnNHWVVVYjk0SmxETnQv?= =?utf-8?B?NzR6SkpZQTdaK25ic1VEcXFkNXR4ZWYrVUNUcDlmSTVoYWkxcGlCUGdBVWJ6?= =?utf-8?B?aWRlU1gra2RUekJJZUNPd1ZMTHRoU3phZlBVYkt1a0t5MG5YVkZJMkpQSFZV?= =?utf-8?B?VmRYbDNGS2Zlc2xxQU05VUJqNlFZaUdHeHFBaU9sVEpQbDJMR0pPVXo0Y0VZ?= =?utf-8?B?NllJRytUL0l6ZEpGQlE1YWhmRUJ1a0dIVmxZYldkYmd5SGF1bEVDUDR1aXdF?= =?utf-8?B?Q3hxblRBUVRtMVBrRmxLVzZnQzdqeFl3amZnbEFXdzdKOGd1N0FpN1o5dFln?= =?utf-8?B?WHpvU2FqRUt1M3pqQWlNY1orT1U4MDhCRGxrTkJVT1VXMlJQZTN2S25ZTVJJ?= =?utf-8?B?WHFpTjFnbHdlN3YwajZjN0t3MjA2R0lYMDVhSE0zZHAwMzYvYU9ydm95dDFi?= =?utf-8?B?SEF3MDBvaGF4eFhXeUEvanpTTjZYOWxYaVpDYUZONHF1eUZ1SkF3dEpLUlJL?= =?utf-8?B?ek9xWldYOVMzTzJ6SUc0ZFpFdUNQemJndGNFd1RUZm4va3krRE5OZml0MEdt?= =?utf-8?B?SVJldXNERTVtVFMza21rSmtBSUUrU05NcTdPWmlxRnV1UVlyRUJ2VXh5SUZQ?= =?utf-8?B?dkhGUjkwOXRPMHJVdFdDSXN4MXZxZG1jRVVvOGxZRXVsYlVvcTBvSUZLR3o3?= =?utf-8?B?cWIxTjBmNU9Ka1pFV1pqT1dPS1RKRmVYYjNyNHlPQ043YTZyQlcrMGo4eFdH?= =?utf-8?B?RnhxN1gxb1BGRnIxR282eDJLL0FPRVZtN1NwTUNUVDNuZDVGZmRuOWdZT2N5?= =?utf-8?B?WHJjMHpQTzZaUDdTbHpXckhBYlhFeXhtZzRtT3pnNGpMZDlEYjRtOW8rRUUy?= =?utf-8?B?SWNUczdvVENWYzhMRmp2T2lHcDVhZ25nT0NoODkwZWg2NytJZ3JpbitzRnlG?= =?utf-8?B?RlBxRkxLQ0F4SEVPNTFiRXVxenMrTnY3N21CdGdKTzFLVFRjT0VnVGVGREZi?= =?utf-8?B?WFM0dFRUOUY0d09jY1N1U2NvZXBYdWtlYW9xRm04YkJmTlRDYm5nNm91REo5?= =?utf-8?B?WmN1SnVoMVRRKytWUTJSbmFVT3g1Wm1vY2RFWTBuR1c4a0dCenVJeFF5SjFq?= =?utf-8?B?WFNoSjExV2hRZnVzbGMzcm5zaWtMOSt2YjFFOEd3LytHaVU5eUJjeUZtc3ht?= =?utf-8?Q?B5jE7MvRArCGT+qZHIoIz3gek?= Content-Type: multipart/mixed; boundary="_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: R50LMvISKQxtnB++jpHfscSmledcLgszxluAcrYoNAe9TR2ugqOlcORrD/VHdOMuW5uXGGFSZV/rqo4YPPLT9nxhs0ejxw3/zH829kgJXbJcmP3mQLw9Iwvy1UNbojcJdfyFQdeEXnETv2jWeLB4n9/8HZeWuXNq8ccAp1pLZWw1biDm5SOU5wHdz+NzNm1pPA3dlcPZaosaKMHWy3ev9I2oLdqJyTFmbfihIrx1B7nNWF8ukMeuFZgyc99ZjOG4k67aIgHRbO5ZH7o6VPj36cx4iCH55ZTSAj3yP8NMKhfWVAlt9WCN8nHclua3YEDZ7Pm7IO+Tom1QOz9j1IFWTLSaU2BPpYpjqoFLKoyjN6p7TM/oyC3azSKMwyJNAcYmMMY3JFCtna6xBnNFr5ddwbZEZHQysUEmIgESMfjg04SJpgoo/3GfvNTRmHy2RjR4FWiJencGL/+5O9ZaxiTjBpmqdYMiSEQG/hA8azgXSwOLjhjuyWSX3pKpkbS60myMooFO1GwAaGg4dC7WzICTUpnDyzsTF/EYPdFM9joVumd0PhKU183rJCzMbNRP5fLYnQ1nO9lKP+1TtdQHxrJAWiA4Tm7VfGpIEtrk/X6/SiPlr4y8oRnMzd9BMidX744g X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB12077.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d72da06a-dd7b-4794-24df-08dc4331e390 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2024 07:47:52.9924 (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: tuNoMkvFDy2flFLodPU8CMv9Gu9JAZFlGEiV0E9vCe7v9B19FVCNtuCYPz5a7B5kWdaTF/Ga2YWndraSmIjChpLY0QIPhKZKmnulo4htDC8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB5522 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGVhciBFdWxlciwNCg0KVGhhbmtzIGZvciB1cGRhdGluZyB0aGUgcGF0Y2ghIEkgaGF2ZSBub3Qg cmV2aWV3ZWQgeWV0LCBidXQgY2Zib3QgZGlkIG5vdA0KYWNjZXB0IHlvdXIgcGF0Y2ggWzFdLiBJ dCBzZWVtcyB0aGF0IHlvdSBtaXNzZWQgdXBkYXRpbmcgdGhlIHdpbmRvd3MgcGFydA0KaW4gMDAw MyBwYXRjaDoNCg0KYGBgDQojaWYgIWRlZmluZWQoV0lOMzIpDQotICAgICAgIHN1Yl9iYXNlX2Nv bm5pbmZvID0gcHNwcmludGYoImhvc3Q9JXMgcG9ydD0ldSB1c2VyPSVzIGZhbGxiYWNrX2FwcGxp Y2F0aW9uX25hbWU9JXMiLA0KKyAgICAgICBzdWJfYmFzZV9jb25uaW5mbyA9IHBzcHJpbnRmKCJo b3N0PSVzIHBvcnQ9JXMgdXNlcj0lcyBmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lPSVzIiwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3B0LnNvY2tldF9kaXIsIG9wdC5zdWJfcG9ydCwgb3B0LnN1Yl91c2VybmFtZSwgcHJv Z25hbWUpOw0KICNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBXSU4zMiAqLw0KICAgICAgICBzdWJfYmFzZV9jb25uaW5mbyA9IHBzcHJpbnRm KCJwb3J0PSV1IHVzZXI9JXMgZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZT0lcyINCmBgYA0KDQpT aW5jZSB0aGUgY2hhbmdlIGlzIHF1aXRlIHRyaXZpYWwsIEkgZmVsdCBubyBuZWVkIHRvIHVwZGF0 ZSB0aGUgdmVyc2lvbmluZy4NClBTQSB0aGUgbmV3IHNldCB0byBrZWVwIHRoZSBjZmJvdCBxdWll dC4gVGhlc2UgY291bGQgcGFzcyB0ZXN0cyBvbiBteSBDSS4NCg0KWzFdOiAgaHR0cHM6Ly9jaXJy dXMtY2kuY29tL2J1aWxkLzUyNTMzNzk3ODIzNDQ3MDQNCg0KQmVzdCBSZWdhcmRzLA0KSGF5YXRv IEt1cm9kYQ0KRlVKSVRTVSBMSU1JVEVEDQpodHRwczovL3d3dy5mdWppdHN1LmNvbS9nbG9iYWwv IA0KDQo= --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_ Content-Type: application/octet-stream; name="v28-0001-pg_createsubscriber-creates-a-new-logical-replic.patch" Content-Description: v28-0001-pg_createsubscriber-creates-a-new-logical-replic.patch Content-Disposition: attachment; filename="v28-0001-pg_createsubscriber-creates-a-new-logical-replic.patch"; size=93736; creation-date="Wed, 13 Mar 2024 07:45:31 GMT"; modification-date="Wed, 13 Mar 2024 07:47:52 GMT" Content-Transfer-Encoding: base64 RnJvbSA3NjliMDcyNDI4YzY3MmMzYzM1NGI1NmExNGFiMjYwMWQxNjk5NDlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IE1vbiwgNSBKdW4gMjAyMyAxNDozOTo0MCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjI4IDEvNF0gcGdfY3JlYXRlc3Vic2NyaWJlcjogY3JlYXRlcyBhIG5ldyBsb2dpY2Fs IHJlcGxpY2EKIGZyb20gYSBzdGFuZGJ5IHNlcnZlcgoKSXQgbXVzdCBiZSBydW4gb24gdGhlIHRh cmdldCBzZXJ2ZXIgYW5kIHNob3VsZCBiZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhlCnNvdXJjZSBz ZXJ2ZXIgKHB1Ymxpc2hlcikgYW5kIHRoZSB0YXJnZXQgc2VydmVyIChzdWJzY3JpYmVyKS4gQWxs IHRhYmxlcwppbiB0aGUgc3BlY2lmaWVkIGRhdGFiYXNlKHMpIGFyZSBpbmNsdWRlZCBpbiB0aGUg bG9naWNhbCByZXBsaWNhdGlvbgpzZXR1cC4gQSBwYWlyIG9mIHB1YmxpY2F0aW9uIGFuZCBzdWJz Y3JpcHRpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBmb3IKZWFjaCBkYXRhYmFzZS4KClRoZSBtYWlu IGFkdmFudGFnZSBvZiBwZ19jcmVhdGVzdWJzY3JpYmVyIG92ZXIgdGhlIGNvbW1vbiBsb2dpY2Fs CnJlcGxpY2F0aW9uIHNldHVwIGlzIHRoZSBpbml0aWFsIGRhdGEgY29weS4gSXQgYWxzbyByZWR1 Y2VzIHRoZSBjYXRjaHVwCnBoYXNlLgoKU29tZSBwcmVyZXF1aXNpdGVzIG11c3QgYmUgbWV0IHRv IHN1Y2Nlc3NmdWxseSBydW4gaXQuIEl0IGlzIGJhc2ljYWxseQp0aGUgbG9naWNhbCByZXBsaWNh dGlvbiByZXF1aXJlbWVudHMuIEl0IHN0YXJ0cyBjcmVhdGluZyBhIHB1YmxpY2F0aW9uCnVzaW5n IEZPUiBBTEwgVEFCTEVTIGFuZCBhIHJlcGxpY2F0aW9uIHNsb3QgZm9yIGVhY2ggc3BlY2lmaWVk IGRhdGFiYXNlLgpXcml0ZSByZWNvdmVyeSBwYXJhbWV0ZXJzIGludG8gdGhlIHRhcmdldCBkYXRh IGRpcmVjdG9yeSBhbmQgc3RhcnQgdGhlCnRhcmdldCBzZXJ2ZXIuIEl0IHNwZWNpZmllcyB0aGUg bGF0ZXN0IHJlcGxpY2F0aW9uIHNsb3QgTFNOIHVwIHRvIHdoaWNoCnRoZSByZWNvdmVyeSB3aWxs IHByb2NlZWQuIFdhaXQgdW50aWwgdGhlIHRhcmdldCBzZXJ2ZXIgaXMgcHJvbW90ZWQuCkNyZWF0 ZSBvbmUgc3Vic2NyaXB0aW9uIHBlciBzcGVjaWZpZWQgZGF0YWJhc2UgKHVzaW5nIHJlcGxpY2F0 aW9uIHNsb3QKYW5kIHB1YmxpY2F0aW9uIGNyZWF0ZWQgaW4gYSBwcmV2aW91cyBzdGVwKSBvbiB0 aGUgdGFyZ2V0IHNlcnZlci4gU2V0CnRoZSByZXBsaWNhdGlvbiBwcm9ncmVzcyB0byB0aGUgbGF0 ZXN0IHJlcGxpY2F0aW9uIHNsb3QgTFNOIChyZXBsaWNhdGlvbgpzdGFydCBwb2ludCkgZm9yIGVh Y2ggc3Vic2NyaXB0aW9uLiBFbmFibGUgdGhlIHN1YnNjcmlwdGlvbiBmb3IgZWFjaApzcGVjaWZp ZWQgZGF0YWJhc2Ugb24gdGhlIHRhcmdldCBzZXJ2ZXIuIEFuZCBmaW5hbGx5LCBjaGFuZ2UgdGhl IHN5c3RlbQppZGVudGlmaWVyIG9uIHRoZSB0YXJnZXQgc2VydmVyLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbCAgICAgICAgICAgICAgICB8ICAgIDEgKwogZG9jL3NyYy9zZ21s L3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgICAgIHwgIDQ3MiArKysrCiBkb2Mvc3JjL3Nn bWwvcmVmZXJlbmNlLnNnbWwgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdf YmFzZWJhY2t1cC8uZ2l0aWdub3JlICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2Jpbi9wZ19i YXNlYmFja3VwL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxMSArLQogc3JjL2Jpbi9wZ19i YXNlYmFja3VwL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxOSArCiBzcmMvYmluL3BnX2Jh c2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jICAgfCAyMDAxICsrKysrKysrKysrKysrKysr CiAuLi4vdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbCAgICAgICAgICAgICAgfCAgMjY3ICsr KwogOCBmaWxlcyBjaGFuZ2VkLCAyNzcwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNn bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vi c2NyaWJlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQw X3BnX2NyZWF0ZXN1YnNjcmliZXIucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs bGZpbGVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKaW5kZXggNGE0Mjk5 OWIxOC4uZjViZTYzODg2NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbApAQCAtMjA1LDYgKzIwNSw3 IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGly ZWN0b3J5LgogPCFFTlRJVFkgcGdDb21iaW5lYmFja3VwICAgIFNZU1RFTSAicGdfY29tYmluZWJh Y2t1cC5zZ21sIj4KIDwhRU5USVRZIHBnQ29uZmlnICAgICAgICAgICBTWVNURU0gInBnX2NvbmZp Zy1yZWYuc2dtbCI+CiA8IUVOVElUWSBwZ0NvbnRyb2xkYXRhICAgICAgU1lTVEVNICJwZ19jb250 cm9sZGF0YS5zZ21sIj4KKzwhRU5USVRZIHBnQ3JlYXRlU3Vic2NyaWJlciBTWVNURU0gInBnX2Ny ZWF0ZXN1YnNjcmliZXIuc2dtbCI+CiA8IUVOVElUWSBwZ0N0bCAgICAgICAgICAgICAgU1lTVEVN ICJwZ19jdGwtcmVmLnNnbWwiPgogPCFFTlRJVFkgcGdEdW1wICAgICAgICAgICAgIFNZU1RFTSAi cGdfZHVtcC5zZ21sIj4KIDwhRU5USVRZIHBnRHVtcGFsbCAgICAgICAgICBTWVNURU0gInBnX2R1 bXBhbGwuc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNj cmliZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjYTlkZTUxMTkKLS0tIC9kZXYv bnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbApAQCAt MCwwICsxLDQ3MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVy LnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0iYXBw LXBnY3JlYXRlc3Vic2NyaWJlciI+CisgPGluZGV4dGVybSB6b25lPSJhcHAtcGdjcmVhdGVzdWJz Y3JpYmVyIj4KKyAgPHByaW1hcnk+cGdfY3JlYXRlc3Vic2NyaWJlcjwvcHJpbWFyeT4KKyA8L2lu ZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT48YXBwbGljYXRpb24+cGdf Y3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+PC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjE8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPkFwcGxpY2F0aW9uPC9yZWZtaXNjaW5m bz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+cGdfY3JlYXRlc3Vi c2NyaWJlcjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+Y29udmVydCBhIHBoeXNpY2FsIHJlcGxp Y2EgaW50byBhIG5ldyBsb2dpY2FsIHJlcGxpY2E8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2 PgorCisgPHJlZnN5bm9wc2lzZGl2PgorICA8Y21kc3lub3BzaXM+CisgICA8Y29tbWFuZD5wZ19j cmVhdGVzdWJzY3JpYmVyPC9jb21tYW5kPgorICAgPGFyZyByZXA9InJlcGVhdCI+PHJlcGxhY2Vh YmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+PC9hcmc+CisgICA8Z3JvdXAgY2hvaWNlPSJwbGFpbiI+ CisgICAgPGdyb3VwIGNob2ljZT0icmVxIj4KKyAgICAgPGFyZyBjaG9pY2U9InBsYWluIj48b3B0 aW9uPi1kPC9vcHRpb24+PC9hcmc+CisgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4t LWRhdGFiYXNlPC9vcHRpb24+PC9hcmc+CisgICAgPC9ncm91cD4KKyAgICA8cmVwbGFjZWFibGU+ ZGJuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICA8Z3JvdXAgY2hvaWNlPSJyZXEiPgorICAgICA8YXJn IGNob2ljZT0icGxhaW4iPjxvcHRpb24+LUQ8L29wdGlvbj4gPC9hcmc+CisgICAgIDxhcmcgY2hv aWNlPSJwbGFpbiI+PG9wdGlvbj4tLXBnZGF0YTwvb3B0aW9uPjwvYXJnPgorICAgIDwvZ3JvdXA+ CisgICAgPHJlcGxhY2VhYmxlPmRhdGFkaXI8L3JlcGxhY2VhYmxlPgorICAgIDxncm91cCBjaG9p Y2U9InJlcSI+CisgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4tUDwvb3B0aW9uPjwv YXJnPgorICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRpb24+LS1wdWJsaXNoZXItc2VydmVy PC9vcHRpb24+PC9hcmc+CisgICAgPC9ncm91cD4KKyAgICA8cmVwbGFjZWFibGU+Y29ubnN0cjwv cmVwbGFjZWFibGU+CisgICA8L2dyb3VwPgorICA8L2NtZHN5bm9wc2lzPgorIDwvcmVmc3lub3Bz aXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgIDxw YXJhPgorICAgIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4g Y3JlYXRlcyBhIG5ldyBsb2dpY2FsCisgICAgcmVwbGljYSBmcm9tIGEgcGh5c2ljYWwgc3RhbmRi eSBzZXJ2ZXIuIEFsbCB0YWJsZXMgaW4gdGhlIHNwZWNpZmllZAorICAgIGRhdGFiYXNlIGFyZSBp bmNsdWRlZCBpbiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBzZXR1cC4gQSBwYWlyIG9mCisgICAg cHVibGljYXRpb24gYW5kIHN1YnNjcmlwdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGZvciBlYWNo IGRhdGFiYXNlLiBJdAorICAgIG11c3QgYmUgcnVuIGF0IHRoZSB0YXJnZXQgc2VydmVyLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICAgQWZ0ZXIgYSBzdWNjZXNzZnVsIHJ1biwgdGhlIHN0YXRl IG9mIHRoZSB0YXJnZXQgc2VydmVyIGlzIGFuYWxhZ291cyB0byBhCisgICAgZnJlc2ggbG9naWNh bCByZXBsaWNhdGlvbiBzZXR1cC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb2dp Y2FsCisgICAgcmVwbGljYXRpb24gc2V0dXAgYW5kIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJz Y3JpYmVyPC9hcHBsaWNhdGlvbj4KKyAgICBpcyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkuIE9ubHkg dGhlIHN5bmNocm9uaXphdGlvbiBwaGFzZSBpcyBkb25lLCB3aGljaAorICAgIGVuc3VyZXMgZWFj aCB0YWJsZSBpcyBicm91Z2h0IHVwIHRvIGEgc3luY2hyb25pemVkIHN0YXRlLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUaGUgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2Fw cGxpY2F0aW9uPiB0YXJnZXRzIGxhcmdlIGRhdGFiYXNlCisgICBzeXN0ZW1zIGJlY2F1c2UgbW9z dCBvZiB0aGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgbWFraW5nIHRoZSBpbml0aWFsIGRhdGEK KyAgIGNvcHkuIEZvciBzbWFsbGVyIGRhdGFiYXNlcywKKyAgIDxsaW5rIGxpbmtlbmQ9ImxvZ2lj YWwtcmVwbGljYXRpb24iPmluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb248L2xpbms+IGlzCisg ICByZWNvbW1lbmRlZC4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPk9wdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICA8YXBwbGljYXRpb24+ cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IGFjY2VwdHMgdGhlIGZvbGxvd2luZwor ICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudHM6CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tZCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZGJuYW1lPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8 dGVybT48b3B0aW9uPi0tZGF0YWJhc2U9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRi bmFtZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBUaGUgZGF0YWJhc2UgbmFtZSB0byBjcmVhdGUgdGhlIHN1YnNj cmlwdGlvbi4gTXVsdGlwbGUgZGF0YWJhc2VzIGNhbiBiZQorICAgICAgICBzZWxlY3RlZCBieSB3 cml0aW5nIG11bHRpcGxlIDxvcHRpb24+LWQ8L29wdGlvbj4gc3dpdGNoZXMuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LUQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmRpcmVjdG9yeTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAg PHRlcm0+PG9wdGlvbj4tLXBnZGF0YT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGly ZWN0b3J5PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMg YSBjbHVzdGVyIGRpcmVjdG9yeSBmcm9tIGEgcGh5c2ljYWwKKyAgICAgICAgcmVwbGljYS4KKyAg ICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tbjwvb3B0aW9uPjwvdGVy bT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1kcnktcnVuPC9vcHRpb24+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBEbyBldmVyeXRoaW5nIGV4Y2VwdCBh Y3R1YWxseSBtb2RpZnlpbmcgdGhlIHRhcmdldCBkaXJlY3RvcnkuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LXAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBvcnQ8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LS1zdWJzY3JpYmVyLXBvcnQ9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBvcnQ8 L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgVGhlIHBvcnQgbnVtYmVyIG9uIHdoaWNoIHRoZSB0YXJnZXQgc2VydmVy IGlzIGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMuCisgICAgICAgIERlZmF1bHRzIHRvIHJ1bm5p bmcgdGhlIHRhcmdldCBzZXJ2ZXIgb24gcG9ydCA1MDQzMiB0byBhdm9pZCB1bmludGVuZGVkCisg ICAgICAgIGNsaWVudCBjb25uZWN0aW9ucy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg PHRlcm0+PG9wdGlvbj4tUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubnN0cjwv cmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLXB1Ymxp c2hlci1zZXJ2ZXI9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5zdHI8L3JlcGxh Y2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIuIEZvciBkZXRh aWxzIHNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uc3RyaW5nIi8+LgorICAgICAgIDwvcGFy YT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi1zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5kaXI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxv cHRpb24+LS1zb2NrZXQtZGlyZWN0b3J5PTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5k aXI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVGhlIGRpcmVjdG9yeSB0byB1c2UgZm9yIHBvc3RtYXN0ZXIgc29j a2V0cyBvbiB0YXJnZXQgc2VydmVyLiBUaGUKKyAgICAgICAgZGVmYXVsdCBpcyBjdXJyZW50IGRp cmVjdG9yeS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPjxvcHRpb24+LXQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlY29uZHM8L3JlcGxhY2VhYmxlPjwvb3B0 aW9uPjwvdGVybT4KKyAgICAgICA8dGVybT48b3B0aW9uPi0tcmVjb3ZlcnktdGltZW91dD08cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vjb25kczwvcmVwbGFjZWFibGU+PC9vcHRpb24+ PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1h eGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgcmVjb3ZlcnkgdG8gZW5kLiBTZXR0 aW5nIHRvIDAKKyAgICAgICAgZGlzYWJsZXMuIFRoZSBkZWZhdWx0IGlzIDAuCisgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi1VIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj51c2VybmFtZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAg PHRlcm0+PG9wdGlvbj4tLXN1YnNjcmliZXItdXNlcm5hbWU9PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnVzZXJuYW1lPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1c2VybmFtZSB0byBjb25uZWN0 IGFzIG9uIHRhcmdldCBzZXJ2ZXIuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50CisgICAgICAgIG9w ZXJhdGluZyBzeXN0ZW0gdXNlciBuYW1lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8 dGVybT48b3B0aW9uPi12PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLXZl cmJvc2U8L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIEVuYWJsZXMgdmVyYm9zZSBtb2RlLiBUaGlzIHdpbGwgY2F1c2UKKyAgICAgICAgPGFw cGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB0byBvdXRwdXQgcHJv Z3Jlc3MgbWVzc2FnZXMKKyAgICAgICAgYW5kIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGVh Y2ggc3RlcCB0byBzdGFuZGFyZCBlcnJvci4KKyAgICAgICAgUmVwZWF0aW5nIHRoZSBvcHRpb24g Y2F1c2VzIGFkZGl0aW9uYWwgZGVidWctbGV2ZWwgbWVzc2FnZXMgdG8gYXBwZWFyIG9uCisgICAg ICAgIHN0YW5kYXJkIGVycm9yLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICAgPC9wYXJhPgorCisg ICA8cGFyYT4KKyAgICBPdGhlciBvcHRpb25zIGFyZSBhbHNvIGF2YWlsYWJsZToKKworICAgIDx2 YXJpYWJsZWxpc3Q+CisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+PG9wdGlvbj4t Pzwvb3B0aW9uPjwvdGVybT4KKyAgICAgICA8dGVybT48b3B0aW9uPi0taGVscDwvb3B0aW9uPjwv dGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgU2hvdyBoZWxw IGFib3V0IDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gY29t bWFuZAorICAgICAgIGxpbmUgYXJndW1lbnRzLCBhbmQgZXhpdC4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT48b3B0aW9uPi1WPC9vcHRpb24+PC90ZXJtPgorICAgICAgIDx0 ZXJtPjxvcHRpb24+LS12ZXJzaW9uPC9vcHRpb24+PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICBQcmludCB0aGUgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1 YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB2ZXJzaW9uIGFuZCBleGl0LgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDwvdmFyaWFi bGVsaXN0PgorICAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZXJlIGFyZSBzb21lIHByZXJlcXVp c2l0ZXMgZm9yCisgICA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRp b24+IHRvIGNvbnZlcnQgdGhlIHRhcmdldCBzZXJ2ZXIKKyAgIGludG8gYSBsb2dpY2FsIHJlcGxp Y2EuIElmIHRoZXNlIGFyZSBub3QgbWV0IGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuIFRoZQor ICAgc291cmNlIGFuZCB0YXJnZXQgc2VydmVycyBtdXN0IGhhdmUgdGhlIHNhbWUgbWFqb3IgdmVy c2lvbiBhcyB0aGUKKyAgIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNh dGlvbj4uIFRoZSBnaXZlbiB0YXJnZXQgZGF0YQorICAgZGlyZWN0b3J5IG11c3QgaGF2ZSB0aGUg c2FtZSBzeXN0ZW0gaWRlbnRpZmllciB0aGFuIHRoZSBzb3VyY2UgZGF0YQorICAgZGlyZWN0b3J5 LiBJZiBhIHN0YW5kYnkgc2VydmVyIGlzIHJ1bm5pbmcgb24gdGhlIHRhcmdldCBkYXRhIGRpcmVj dG9yeSBvciBpdAorICAgaXMgYSBiYXNlIGJhY2t1cCBmcm9tIHRoZSBzb3VyY2UgZGF0YSBkaXJl Y3RvcnksIHN5c3RlbSBpZGVudGlmaWVycyBhcmUgdGhlCisgICBzYW1lLiBUaGUgZ2l2ZW4gZGF0 YWJhc2UgdXNlciBmb3IgdGhlIHRhcmdldCBkYXRhIGRpcmVjdG9yeSBtdXN0IGhhdmUKKyAgIHBy aXZpbGVnZXMgZm9yIGNyZWF0aW5nCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2Ny aXB0aW9uIj5zdWJzY3JpcHRpb25zPC9saW5rPiBhbmQgdXNpbmcKKyAgIDxsaW5rIGxpbmtlbmQ9 InBnLXJlcGxpY2F0aW9uLW9yaWdpbi1hZHZhbmNlIj48ZnVuY3Rpb24+cGdfcmVwbGljYXRpb25f b3JpZ2luX2FkdmFuY2UoKTwvZnVuY3Rpb24+PC9saW5rPi4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgVGhlIHRhcmdldCBzZXJ2ZXIgbXVzdCBiZSB1c2VkIGFzIGEgcGh5c2ljYWwgc3RhbmRi eS4gVGhlIHRhcmdldCBzZXJ2ZXIKKyAgIG11c3QgaGF2ZQorICAgPGxpbmsgbGlua2VuZD0iZ3Vj LW1heC1yZXBsaWNhdGlvbi1zbG90cyI+PHZhcm5hbWU+bWF4X3JlcGxpY2F0aW9uX3Nsb3RzPC92 YXJuYW1lPjwvbGluaz4KKyAgIGFuZAorICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1sb2dpY2Fs LXJlcGxpY2F0aW9uLXdvcmtlcnMiPjx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnM8L3Zhcm5hbWU+PC9saW5rPgorICAgY29uZmlndXJlZCB0byBhIHZhbHVlIGdyZWF0ZXIg dGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZAorICAgZGF0YWJhc2VzLiBU aGUgdGFyZ2V0IHNlcnZlciBtdXN0IGhhdmUKKyAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtd29y a2VyLXByb2Nlc3NlcyI+PHZhcm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+PC9s aW5rPgorICAgY29uZmlndXJlZCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9m IHNwZWNpZmllZCBkYXRhYmFzZXMuIFRoZQorICAgdGFyZ2V0IHNlcnZlciBtdXN0IGFjY2VwdCBs b2NhbCBjb25uZWN0aW9ucy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIHNvdXJjZSBz ZXJ2ZXIgbXVzdCBhY2NlcHQgY29ubmVjdGlvbnMgZnJvbSB0aGUgdGFyZ2V0IHNlcnZlci4gVGhl CisgICBzb3VyY2Ugc2VydmVyIG11c3Qgbm90IGJlIGluIHJlY292ZXJ5LiBQdWJsaWNhdGlvbnMg Y2Fubm90IGJlIGNyZWF0ZWQgaW4gYQorICAgcmVhZC1vbmx5IGNsdXN0ZXIuIFRoZSBzb3VyY2Ug c2VydmVyIG11c3QgaGF2ZQorICAgPGxpbmsgbGlua2VuZD0iZ3VjLXdhbC1sZXZlbCI+PHZhcm5h bWU+d2FsX2xldmVsPC92YXJuYW1lPjwvbGluaz4gYXMKKyAgIDxsaXRlcmFsPmxvZ2ljYWw8L2xp dGVyYWw+LgorICAgVGhlIHNvdXJjZSBzZXJ2ZXIgbXVzdCBoYXZlCisgICA8bGluayBsaW5rZW5k PSJndWMtbWF4LXJlcGxpY2F0aW9uLXNsb3RzIj48dmFybmFtZT5tYXhfcmVwbGljYXRpb25fc2xv dHM8L3Zhcm5hbWU+PC9saW5rPgorICAgY29uZmlndXJlZCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhh biB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBkYXRhYmFzZXMgcGx1cworICAgZXhpc3RpbmcgcmVw bGljYXRpb24gc2xvdHMuIFRoZSBzb3VyY2Ugc2VydmVyIG11c3QgaGF2ZQorICAgPGxpbmsgbGlu a2VuZD0iZ3VjLW1heC13YWwtc2VuZGVycyI+PHZhcm5hbWU+bWF4X3dhbF9zZW5kZXJzPC92YXJu YW1lPjwvbGluaz4KKyAgIGNvbmZpZ3VyZWQgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1 YWwgdG8gdGhlIG51bWJlciBvZiBzcGVjaWZpZWQKKyAgIGRhdGFiYXNlcyBhbmQgZXhpc3Rpbmcg PGxpdGVyYWw+d2Fsc2VuZGVyPC9saXRlcmFsPiBwcm9jZXNzZXMuCisgIDwvcGFyYT4KKworICA8 d2FybmluZz4KKyAgIDx0aXRsZT5XYXJuaW5nPC90aXRsZT4KKyAgIDxwYXJhPgorICAgIElmIDxh cHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gZmFpbHMgd2hpbGUg cHJvY2Vzc2luZywKKyAgICB0aGVuIHRoZSBkYXRhIGRpcmVjdG9yeSBpcyBsaWtlbHkgbm90IGlu IGEgc3RhdGUgdGhhdCBjYW4gYmUgcmVjb3ZlcmVkLiBJdAorICAgIGlzIHRydWUgaWYgdGhlIHRh cmdldCBzZXJ2ZXIgd2FzIHByb21vdGVkLiBJbiBzdWNoIGEgY2FzZSwgY3JlYXRpbmcgYSBuZXcK KyAgICBzdGFuZGJ5IHNlcnZlciBpcyByZWNvbW1lbmRlZC4KKyAgIDwvcGFyYT4KKworICAgPHBh cmE+CisgICAgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB1 c3VhbGx5IHN0YXJ0cyB0aGUgdGFyZ2V0CisgICAgc2VydmVyIHdpdGggZGlmZmVyZW50IGNvbm5l Y3Rpb24gc2V0dGluZ3MgZHVyaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBzdGVwcy4KKyAgICBIZW5j ZSwgY29ubmVjdGlvbnMgdG8gdGFyZ2V0IHNlcnZlciBtaWdodCBmYWlsLgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICBEdXJpbmcgdGhlIHJlY292ZXJ5IHByb2Nlc3MsIGlmIHRoZSB0YXJn ZXQgc2VydmVyIGRpc2Nvbm5lY3RzIGZyb20gdGhlCisgICAgc291cmNlIHNlcnZlciwgPGFwcGxp Y2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB3aWxsIGNoZWNrCisgICAg YSBmZXcgdGltZXMgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gcmVlc3RhYmxpc2hlZCB0byBz dHJlYW0gdGhlIHJlcXVpcmVkCisgICAgV0FMLiBBZnRlciBhIGZldyBhdHRlbXB0cywgaXQgdGVy bWluYXRlcyB3aXRoIGFuIGVycm9yLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBFeGVj dXRpbmcgRERMIGNvbW1hbmRzIG9uIHRoZSBzb3VyY2Ugc2VydmVyIHdoaWxlIHJ1bm5pbmcKKyAg ICA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IGlzIG5vdCBy ZWNvbW1lbmRlZC4gSWYgdGhlCisgICAgdGFyZ2V0IHNlcnZlciBoYXMgYWxyZWFkeSBiZWVuIGNv bnZlcnRlZCB0byBsb2dpY2FsIHJlcGxpY2EsIHRoZSBEREwKKyAgICBjb21tYW5kcyBtdXN0IG5v dCBiZSByZXBsaWNhdGVkIHNvIGFuIGVycm9yIHdvdWxkIG9jY3VyLgorICAgPC9wYXJhPgorCisg ICA8cGFyYT4KKyAgICBJZiA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGlj YXRpb24+IGZhaWxzIHdoaWxlIHByb2Nlc3NpbmcsCisgICAgb2JqZWN0cyAocHVibGljYXRpb25z LCByZXBsaWNhdGlvbiBzbG90cykgY3JlYXRlZCBvbiB0aGUgc291cmNlIHNlcnZlcgorICAgIHNo b3VsZCBiZSByZW1vdmVkLiBUaGUgcmVtb3ZhbCBtaWdodCBmYWlsIGlmIHRoZSB0YXJnZXQgc2Vy dmVyIGNhbm5vdAorICAgIGNvbm5lY3QgdG8gdGhlIHNvdXJjZSBzZXJ2ZXIuIEluIHN1Y2ggYSBj YXNlLCBhIHdhcm5pbmcgbWVzc2FnZSB3aWxsIGluZm9ybQorICAgIHRoZSBvYmplY3RzIGxlZnQu CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIElmIHRoZSByZXBsaWNhdGlvbiBpcyB1c2lu ZyBhCisgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXByaW1hcnktc2xvdC1uYW1lIj48dmFybmFtZT5w cmltYXJ5X3Nsb3RfbmFtZTwvdmFybmFtZT48L2xpbms+LAorICAgIGl0IHdpbGwgYmUgcmVtb3Zl ZCBmcm9tIHRoZSBzb3VyY2Ugc2VydmVyIGFmdGVyIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNl dHVwLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICA8YXBwbGljYXRpb24+cGdfY3JlYXRl c3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IGNoYW5nZXMgdGhlIHN5c3RlbSBpZGVudGlmaWVyCisg ICAgdXNpbmcgPGFwcGxpY2F0aW9uPnBnX3Jlc2V0d2FsPC9hcHBsaWNhdGlvbj4uIEl0IHdvdWxk IGF2b2lkIHNpdHVhdGlvbnMgaW4KKyAgICB3aGljaCBXQUwgZmlsZXMgZnJvbSB0aGUgc291cmNl IHNlcnZlciBtaWdodCBiZSB1c2VkIGJ5IHRoZSB0YXJnZXQgc2VydmVyLgorICAgIElmIHRoZSB0 YXJnZXQgc2VydmVyIGhhcyBhIHN0YW5kYnksIHJlcGxpY2F0aW9uIHdpbGwgYnJlYWsgYW5kIGEg ZnJlc2gKKyAgICBzdGFuZGJ5IHNob3VsZCBiZSBjcmVhdGVkLgorICAgPC9wYXJhPgorICA8L3dh cm5pbmc+CisKKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+SG93IEl0IFdv cmtzPC90aXRsZT4KKworICA8cGFyYT4KKyAgICBUaGUgYmFzaWMgaWRlYSBpcyB0byBoYXZlIGEg cmVwbGljYXRpb24gc3RhcnQgcG9pbnQgZnJvbSB0aGUgc291cmNlIHNlcnZlcgorICAgIGFuZCBz ZXQgdXAgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHRvIHN0YXJ0IGZyb20gdGhpcyBwb2ludDoKKyAg PC9wYXJhPgorCisgIDxwcm9jZWR1cmU+CisgICA8c3RlcD4KKyAgICA8cGFyYT4KKyAgICAgU3Rh cnQgdGhlIHRhcmdldCBzZXJ2ZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQtbGluZSBvcHRp b25zLiBJZiB0aGUKKyAgICAgdGFyZ2V0IHNlcnZlciBpcyBhbHJlYWR5IHJ1bm5pbmcsIHN0b3Ag aXQgYmVjYXVzZSBzb21lIHBhcmFtZXRlcnMgY2FuIG9ubHkKKyAgICAgYmUgc2V0IGF0IHNlcnZl ciBzdGFydC4KKyAgICA8L3BhcmE+CisgICA8L3N0ZXA+CisKKyAgIDxzdGVwPgorICAgIDxwYXJh PgorICAgICBDaGVjayBpZiB0aGUgdGFyZ2V0IHNlcnZlciBjYW4gYmUgY29udmVydGVkLiBUaGVy ZSBhcmUgYWxzbyBhIGZldyBjaGVja3MKKyAgICAgb24gdGhlIHNvdXJjZSBzZXJ2ZXIuIElmIGFu eSBvZiB0aGUgcHJlcmVxdWlzaXRlcyBhcmUgbm90IG1ldCwKKyAgICAgPGFwcGxpY2F0aW9uPnBn X2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB3aWxsIHRlcm1pbmF0ZSB3aXRoIGFuCisg ICAgIGVycm9yLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBh cmE+CisgICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIGFuZCByZXBsaWNhdGlvbiBzbG90IGZvciBl YWNoIHNwZWNpZmllZCBkYXRhYmFzZSBvbgorICAgICB0aGUgc291cmNlIHNlcnZlci4gRWFjaCBw dWJsaWNhdGlvbiBpcyBjcmVhdGVkIHVzaW5nCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVh dGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWFsbC10YWJsZXMiPjxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPjwvbGluaz4uCisgICAgIEl0IGhhcyB0aGUgZm9sbG93aW5nIG5hbWUgcGF0 dGVybjoKKyAgICAgPHF1b3RlPjxsaXRlcmFsPnBnX2NyZWF0ZXN1YnNjcmliZXJfJXU8L2xpdGVy YWw+PC9xdW90ZT4gKHBhcmFtZXRlcjoKKyAgICAgZGF0YWJhc2UgPHBhcmFtZXRlcj5vaWQ8L3Bh cmFtZXRlcj4pLiBFYWNoIHJlcGxpY2F0aW9uIHNsb3QgaGFzIHRoZQorICAgICBmb2xsb3dpbmcg bmFtZSBwYXR0ZXJuOgorICAgICA8cXVvdGU+PGxpdGVyYWw+cGdfY3JlYXRlc3Vic2NyaWJlcl8l dV8lZDwvbGl0ZXJhbD48L3F1b3RlPiAocGFyYW1ldGVyczoKKyAgICAgZGF0YWJhc2UgPHBhcmFt ZXRlcj5vaWQ8L3BhcmFtZXRlcj4sIFBJRCA8cGFyYW1ldGVyPmludDwvcGFyYW1ldGVyPikuCisg ICAgIFRoZXNlIHJlcGxpY2F0aW9uIHNsb3RzIHdpbGwgYmUgdXNlZCBieSB0aGUgc3Vic2NyaXB0 aW9ucyBpbiBhIGZ1dHVyZSBzdGVwLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0 ZXA+CisgICAgPHBhcmE+CisgICAgIENyZWF0ZSBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90 IHRvIGdldCBhIGNvbnNpc3RlbnQgc3RhcnQgbG9jYXRpb24uCisgICAgIFRoaXMgcmVwbGljYXRp b24gc2xvdCBoYXMgdGhlIGZvbGxvd2luZyBuYW1lIHBhdHRlcm46CisgICAgIDxxdW90ZT48bGl0 ZXJhbD5wZ19jcmVhdGVzdWJzY3JpYmVyXyVkX3N0YXJ0cG9pbnQ8L2xpdGVyYWw+PC9xdW90ZT4K KyAgICAgKHBhcmFtZXRlcjogUElEIDxwYXJhbWV0ZXI+aW50PC9wYXJhbWV0ZXI+KS4gVGhlIExT TiByZXR1cm5lZCBieQorICAgICA8bGluayBsaW5rZW5kPSJwZy1jcmVhdGUtbG9naWNhbC1yZXBs aWNhdGlvbi1zbG90Ij48ZnVuY3Rpb24+cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xv dCgpPC9mdW5jdGlvbj48L2xpbms+CisgICAgIGlzIHVzZWQgYXMgYSBzdG9wcGluZyBwb2ludCBp biB0aGUgPHhyZWYgbGlua2VuZD0iZ3VjLXJlY292ZXJ5LXRhcmdldC1sc24iLz4KKyAgICAgcGFy YW1ldGVyIGFuZCBieSB0aGUgc3Vic2NyaXB0aW9ucyBhcyBhIHJlcGxpY2F0aW9uIHN0YXJ0IHBv aW50LiBJdAorICAgICBndWFyYW50ZWVzIHRoYXQgbm8gdHJhbnNhY3Rpb24gd2lsbCBiZSBsb3N0 LgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBhcmE+CisgICAg IFdyaXRlIHJlY292ZXJ5IHBhcmFtZXRlcnMgaW50byB0aGUgdGFyZ2V0IGRhdGEgZGlyZWN0b3J5 IGFuZCByZXN0YXJ0IHRoZQorICAgICB0YXJnZXQgc2VydmVyLiBJdCBzcGVjaWZpZXMgYSBMU04g KDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZWNvdmVyeS10YXJnZXQtbHNuIi8+KQorICAgICBvZiB3cml0 ZS1haGVhZCBsb2cgbG9jYXRpb24gdXAgdG8gd2hpY2ggcmVjb3Zlcnkgd2lsbCBwcm9jZWVkLiBJ dCBhbHNvCisgICAgIHNwZWNpZmllcyA8bGl0ZXJhbD5wcm9tb3RlPC9saXRlcmFsPiBhcyB0aGUg YWN0aW9uIHRoYXQgdGhlIHNlcnZlciBzaG91bGQKKyAgICAgdGFrZSBvbmNlIHRoZSByZWNvdmVy eSB0YXJnZXQgaXMgcmVhY2hlZC4gQWRkaXRpb25hbAorICAgICA8bGluayBsaW5rZW5kPSJydW50 aW1lLWNvbmZpZy13YWwtcmVjb3ZlcnktdGFyZ2V0Ij5yZWNvdmVyeSBwYXJhbWV0ZXJzPC9saW5r PgorICAgICBhcmUgYWxzbyBhZGRlZCBzbyBpdCBhdm9pZHMgdW5leHBlY3RlZCBiZWhhdmlvciBk dXJpbmcgdGhlIHJlY292ZXJ5CisgICAgIHByb2Nlc3Mgc3VjaCBhcyBlbmQgb2YgdGhlIHJlY292 ZXJ5IGFzIHNvb24gYXMgYSBjb25zaXN0ZW50IHN0YXRlIGlzCisgICAgIHJlYWNoZWQgKFdBTCBz aG91bGQgYmUgYXBwbGllZCB1bnRpbCB0aGUgY29uc2lzdGVudCBzdGFydCBsb2NhdGlvbikgYW5k CisgICAgIG11bHRpcGxlIHJlY292ZXJ5IHRhcmdldHMgdGhhdCBjYW4gY2F1c2UgYSBmYWlsdXJl LiBUaGlzIHN0ZXAgZmluaXNoZXMKKyAgICAgb25jZSB0aGUgc2VydmVyIGVuZHMgc3RhbmRieSBt b2RlIGFuZCBpcyBhY2NlcHRpbmcgcmVhZC13cml0ZSB0cmFuc2FjdGlvbnMuCisgICAgIElmIDxv cHRpb24+LS1yZWNvdmVyeS10aW1lb3V0PC9vcHRpb24+IG9wdGlvbiBpcyBzZXQsCisgICAgIDxh cHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gdGVybWluYXRlcyBp ZiByZWNvdmVyeSBkb2VzCisgICAgIG5vdCBlbmQgdW50aWwgdGhlIGdpdmVuIG51bWJlciBvZiBz ZWNvbmRzLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBhcmE+ CisgICAgIENyZWF0ZSBhIHN1YnNjcmlwdGlvbiBmb3IgZWFjaCBzcGVjaWZpZWQgZGF0YWJhc2Ug b24gdGhlIHRhcmdldCBzZXJ2ZXIuCisgICAgIFRoZSBzdWJzY3JpcHRpb24gaGFzIHRoZSBmb2xs b3dpbmcgbmFtZSBwYXR0ZXJuOgorICAgICA8cXVvdGU+PGxpdGVyYWw+cGdfY3JlYXRlc3Vic2Ny aWJlcl8ldV8lZDwvbGl0ZXJhbD48L3F1b3RlPiAocGFyYW1ldGVyczoKKyAgICAgZGF0YWJhc2Ug PHBhcmFtZXRlcj5vaWQ8L3BhcmFtZXRlcj4sIFBJRCA8cGFyYW1ldGVyPmludDwvcGFyYW1ldGVy PikuIFRoZQorICAgICByZXBsaWNhdGlvbiBzbG90IG5hbWUgaXMgaWRlbnRpY2FsIHRvIHRoZSBz dWJzY3JpcHRpb24gbmFtZS4gSXQgZG9lcyBub3QKKyAgICAgY29weSBleGlzdGluZyBkYXRhIGZy b20gdGhlIHNvdXJjZSBzZXJ2ZXIuIEl0IGRvZXMgbm90IGNyZWF0ZSBhCisgICAgIHJlcGxpY2F0 aW9uIHNsb3QuIEluc3RlYWQsIGl0IHVzZXMgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdGhhdCB3YXMg Y3JlYXRlZAorICAgICBpbiBhIHByZXZpb3VzIHN0ZXAuIFRoZSBzdWJzY3JpcHRpb24gaXMgY3Jl YXRlZCBidXQgaXQgaXMgbm90IGVuYWJsZWQgeWV0LgorICAgICBUaGUgcmVhc29uIGlzIHRoZSBy ZXBsaWNhdGlvbiBwcm9ncmVzcyBtdXN0IGJlIHNldCB0byB0aGUgY29uc2lzdGVudCBMU04KKyAg ICAgYnV0IHJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lIGNvbnRhaW5zIHRoZSBzdWJzY3JpcHRpb24g b2lkIGluIGl0cyBuYW1lLgorICAgICBIZW5jZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGJlIGVu YWJsZWQgaW4gYSBzZXBhcmF0ZSBzdGVwLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAg PHN0ZXA+CisgICAgPHBhcmE+CisgICAgIERyb3AgcHVibGljYXRpb25zIG9uIHRoZSB0YXJnZXQg c2VydmVyIHRoYXQgd2VyZSByZXBsaWNhdGVkIGJlY2F1c2UgdGhleQorICAgICB3ZXJlIGNyZWF0 ZWQgYmVmb3JlIHRoZSBjb25zaXN0ZW50IHN0YXJ0IGxvY2F0aW9uLiBJdCBoYXMgbm8gdXNlIG9u IHRoZQorICAgICBzdWJzY3JpYmVyLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0 ZXA+CisgICAgPHBhcmE+CisgICAgIFNldCB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgdG8gdGhl IGNvbnNpc3RlbnQgc3RhcnQgcG9pbnQgZm9yIGVhY2gKKyAgICAgc3Vic2NyaXB0aW9uLiBXaGVu IHRoZSB0YXJnZXQgc2VydmVyIHN0YXJ0cyB0aGUgcmVjb3ZlcnkgcHJvY2VzcywgaXQKKyAgICAg Y2F0Y2hlcyB1cCB0byB0aGUgY29uc2lzdGVudCBzdGFydCBwb2ludC4gVGhpcyBpcyB0aGUgZXhh Y3QgTFNOIHRvIGJlIHVzZWQKKyAgICAgYXMgYSBpbml0aWFsIGxvY2F0aW9uIGZvciBlYWNoIHN1 YnNjcmlwdGlvbi4gVGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lCisgICAgIGlzIG9idGFpbmVk IHNpbmNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQuIFRoZSByZXBsaWNhdGlvbiBvcmln aW4KKyAgICAgbmFtZSBhbmQgdGhlIGNvbnNpc3RlbnQgc3RhcnQgcG9pbnQgYXJlIHVzZWQgaW4K KyAgICAgPGxpbmsgbGlua2VuZD0icGctcmVwbGljYXRpb24tb3JpZ2luLWFkdmFuY2UiPjxmdW5j dGlvbj5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fYWR2YW5jZSgpPC9mdW5jdGlvbj48L2xpbms+Cisg ICAgIHRvIHNldCB1cCB0aGUgaW5pdGlhbCByZXBsaWNhdGlvbiBsb2NhdGlvbi4KKyAgICA8L3Bh cmE+CisgICA8L3N0ZXA+CisKKyAgIDxzdGVwPgorICAgIDxwYXJhPgorICAgICBFbmFibGUgdGhl IHN1YnNjcmlwdGlvbiBmb3IgZWFjaCBzcGVjaWZpZWQgZGF0YWJhc2Ugb24gdGhlIHRhcmdldCBz ZXJ2ZXIuCisgICAgIFRoZSBzdWJzY3JpcHRpb24gc3RhcnRzIGFwcGx5aW5nIHRyYW5zYWN0aW9u cyBmcm9tIHRoZSBjb25zaXN0ZW50IHN0YXJ0CisgICAgIHBvaW50LgorICAgIDwvcGFyYT4KKyAg IDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBhcmE+CisgICAgIElmIHRoZSBzdGFuZGJ5IHNl cnZlciB3YXMgdXNpbmcKKyAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXByaW1hcnktc2xvdC1uYW1l Ij48dmFybmFtZT5wcmltYXJ5X3Nsb3RfbmFtZTwvdmFybmFtZT48L2xpbms+LAorICAgICBpdCBo YXMgbm8gdXNlIGZyb20gbm93IG9uIHNvIGRyb3AgaXQuCisgICAgPC9wYXJhPgorICAgPC9zdGVw PgorCisgICA8c3RlcD4KKyAgICA8cGFyYT4KKyAgICAgVXBkYXRlIHRoZSBzeXN0ZW0gaWRlbnRp ZmllciBvbiB0aGUgdGFyZ2V0IHNlcnZlci4gVGhlCisgICAgIDx4cmVmIGxpbmtlbmQ9ImFwcC1w Z3Jlc2V0d2FsIi8+IGlzIHJ1biB0byBtb2RpZnkgdGhlIHN5c3RlbSBpZGVudGlmaWVyLgorICAg ICBUaGUgdGFyZ2V0IHNlcnZlciBpcyBzdG9wcGVkIGFzIGEgPGNvbW1hbmQ+cGdfcmVzZXR3YWw8 L2NvbW1hbmQ+IHJlcXVpcmVtZW50LgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKyAgPC9wcm9j ZWR1cmU+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90 aXRsZT4KKworICA8cGFyYT4KKyAgIFRvIGNyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYSBmb3IgZGF0 YWJhc2VzIDxsaXRlcmFsPmhyPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPmZpbmFuY2U8L2xp dGVyYWw+IGZyb20gYSBwaHlzaWNhbCByZXBsaWNhIGF0IDxsaXRlcmFsPmZvbzwvbGl0ZXJhbD46 Cis8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cGdfY3JlYXRlc3Vic2Ny aWJlciAtRCAvdXNyL2xvY2FsL3Bnc3FsL2RhdGEgLVAgImhvc3Q9Zm9vIiAtZCBociAtZCBmaW5h bmNlPC91c2VyaW5wdXQ+Cis8L3NjcmVlbj4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKwor IDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0 eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJhcHAtcGdiYXNlYmFja3Vw Ii8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZmVyZW5jZS5zZ21sCmluZGV4IGFhOTRmNmFkZjYuLmZmODVhY2U4M2YgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNl LnNnbWwKQEAgLTI4Miw2ICsyODIsNyBAQAogICAgJnBnYXJjaGl2ZWNsZWFudXA7CiAgICAmcGdD aGVja3N1bXM7CiAgICAmcGdDb250cm9sZGF0YTsKKyAgICZwZ0NyZWF0ZVN1YnNjcmliZXI7CiAg ICAmcGdDdGw7CiAgICAmcGdSZXNldHdhbDsKICAgICZwZ1Jld2luZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC8uZ2l0aWdub3JlIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwLy5n aXRpZ25vcmUKaW5kZXggMjYwNDhiZGJkOC4uMTRkNWRlNmMwMSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19iYXNlYmFja3VwLy5naXRpZ25vcmUKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwLy5n aXRpZ25vcmUKQEAgLTEsNCArMSw1IEBACiAvcGdfYmFzZWJhY2t1cAorL3BnX2NyZWF0ZXN1YnNj cmliZXIKIC9wZ19yZWNlaXZld2FsCiAvcGdfcmVjdmxvZ2ljYWwKIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL01ha2Vm aWxlCmluZGV4IGFiZmI2NDQwZWMuLmU5YTkyMGRiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvTWFrZWZpbGUK QEAgLTQ0LDExICs0NCwxNCBAQCBCQk9CSlMgPSBcCiAJYmJzdHJlYW1lcl90YXIubyBcCiAJYmJz dHJlYW1lcl96c3RkLm8KIAotYWxsOiBwZ19iYXNlYmFja3VwIHBnX3JlY2VpdmV3YWwgcGdfcmVj dmxvZ2ljYWwKK2FsbDogcGdfYmFzZWJhY2t1cCBwZ19jcmVhdGVzdWJzY3JpYmVyIHBnX3JlY2Vp dmV3YWwgcGdfcmVjdmxvZ2ljYWwKIAogcGdfYmFzZWJhY2t1cDogJChCQk9CSlMpICQoT0JKUykg fCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJ JChDQykgJChDRkxBR1MpICQoQkJPQkpTKSAkKE9CSlMpICQoTERGTEFHUykgJChMREZMQUdTX0VY KSAkKExJQlMpIC1vICRAJChYKQogCitwZ19jcmVhdGVzdWJzY3JpYmVyOiAkKFdJTjMyUkVTKSBw Z19jcmVhdGVzdWJzY3JpYmVyLm8gfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1 Ym1ha2UtbGlicGdmZXV0aWxzCisJJChDQykgJChDRkxBR1MpICReICQoTERGTEFHUykgJChMREZM QUdTX0VYKSAkKExJQlMpIC1vICRAJChYKQorCiBwZ19yZWNlaXZld2FsOiBwZ19yZWNlaXZld2Fs Lm8gJChPQkpTKSB8IHN1Ym1ha2UtbGlicHEgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJw Z2ZldXRpbHMKIAkkKENDKSAkKENGTEFHUykgcGdfcmVjZWl2ZXdhbC5vICQoT0JKUykgJChMREZM QUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAKQEAgLTU3LDYgKzYwLDcgQEAg cGdfcmVjdmxvZ2ljYWw6IHBnX3JlY3Zsb2dpY2FsLm8gJChPQkpTKSB8IHN1Ym1ha2UtbGlicHEg c3VibWFrZS1saWJwZ3BvcnQgc3VibWEKIAogaW5zdGFsbDogYWxsIGluc3RhbGxkaXJzCiAJJChJ TlNUQUxMX1BST0dSQU0pIHBnX2Jhc2ViYWNrdXAkKFgpICckKERFU1RESVIpJChiaW5kaXIpL3Bn X2Jhc2ViYWNrdXAkKFgpJworCSQoSU5TVEFMTF9QUk9HUkFNKSBwZ19jcmVhdGVzdWJzY3JpYmVy JChYKSAnJChERVNURElSKSQoYmluZGlyKS9wZ19jcmVhdGVzdWJzY3JpYmVyJChYKScKIAkkKElO U1RBTExfUFJPR1JBTSkgcGdfcmVjZWl2ZXdhbCQoWCkgJyQoREVTVERJUikkKGJpbmRpcikvcGdf cmVjZWl2ZXdhbCQoWCknCiAJJChJTlNUQUxMX1BST0dSQU0pIHBnX3JlY3Zsb2dpY2FsJChYKSAn JChERVNURElSKSQoYmluZGlyKS9wZ19yZWN2bG9naWNhbCQoWCknCiAKQEAgLTY1LDEyICs2OSwx MyBAQCBpbnN0YWxsZGlyczoKIAogdW5pbnN0YWxsOgogCXJtIC1mICckKERFU1RESVIpJChiaW5k aXIpL3BnX2Jhc2ViYWNrdXAkKFgpJworCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3BnX2Ny ZWF0ZXN1YnNjcmliZXIkKFgpJwogCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3BnX3JlY2Vp dmV3YWwkKFgpJwogCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3BnX3JlY3Zsb2dpY2FsJChY KScKIAogY2xlYW4gZGlzdGNsZWFuOgotCXJtIC1mIHBnX2Jhc2ViYWNrdXAkKFgpIHBnX3JlY2Vp dmV3YWwkKFgpIHBnX3JlY3Zsb2dpY2FsJChYKSBcCi0JCSQoQkJPQkpTKSBwZ19yZWNlaXZld2Fs Lm8gcGdfcmVjdmxvZ2ljYWwubyBcCisJcm0gLWYgcGdfYmFzZWJhY2t1cCQoWCkgcGdfY3JlYXRl c3Vic2NyaWJlciQoWCkgcGdfcmVjZWl2ZXdhbCQoWCkgcGdfcmVjdmxvZ2ljYWwkKFgpIFwKKwkJ JChCQk9CSlMpIHBnX2NyZWF0ZXN1YnNjcmliZXIubyBwZ19yZWNlaXZld2FsLm8gcGdfcmVjdmxv Z2ljYWwubyBcCiAJCSQoT0JKUykKIAlybSAtcmYgdG1wX2NoZWNrCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9t ZXNvbi5idWlsZAppbmRleCBmN2U2MGU2NjcwLi5jMDBhY2Q1ZTExIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L21lc29uLmJ1aWxkCkBAIC0zOCw2ICszOCwyNCBAQCBwZ19iYXNlYmFja3VwID0gZXhlY3V0YWJs ZSgncGdfYmFzZWJhY2t1cCcsCiBiaW5fdGFyZ2V0cyArPSBwZ19iYXNlYmFja3VwCiAKIAorcGdf Y3JlYXRlc3Vic2NyaWJlcl9zb3VyY2VzID0gZmlsZXMoCisgICdwZ19jcmVhdGVzdWJzY3JpYmVy LmMnCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICBwZ19jcmVhdGVzdWJzY3Jp YmVyX3NvdXJjZXMgKz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdz OiBbCisJJy0tTkFNRScsICdwZ19jcmVhdGVzdWJzY3JpYmVyJywKKwknLS1GSUxFREVTQycsICdw Z19jcmVhdGVzdWJzY3JpYmVyIC0gY3JlYXRlIGEgbmV3IGxvZ2ljYWwgcmVwbGljYSBmcm9tIGEg c3RhbmRieSBzZXJ2ZXInLF0pCitlbmRpZgorCitwZ19jcmVhdGVzdWJzY3JpYmVyID0gZXhlY3V0 YWJsZSgncGdfY3JlYXRlc3Vic2NyaWJlcicsCisgIHBnX2NyZWF0ZXN1YnNjcmliZXJfc291cmNl cywKKyAgZGVwZW5kZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwgbGlicHFdLAorICBrd2FyZ3M6IGRl ZmF1bHRfYmluX2FyZ3MsCispCitiaW5fdGFyZ2V0cyArPSBwZ19jcmVhdGVzdWJzY3JpYmVyCisK KwogcGdfcmVjZWl2ZXdhbF9zb3VyY2VzID0gZmlsZXMoCiAgICdwZ19yZWNlaXZld2FsLmMnLAog KQpAQCAtODksNiArMTA3LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDExX2luX3BsYWNlX3Rh Ymxlc3BhY2UucGwnLAogICAgICAgJ3QvMDIwX3BnX3JlY2VpdmV3YWwucGwnLAogICAgICAgJ3Qv MDMwX3BnX3JlY3Zsb2dpY2FsLnBsJywKKyAgICAgICd0LzA0MF9wZ19jcmVhdGVzdWJzY3JpYmVy LnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L3BnX2NyZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVz dWJzY3JpYmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTY2NDFm NTgzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVz dWJzY3JpYmVyLmMKQEAgLTAsMCArMSwyMDAxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg KiBwZ19jcmVhdGVzdWJzY3JpYmVyLmMKKyAqCSAgQ3JlYXRlIGEgbmV3IGxvZ2ljYWwgcmVwbGlj YSBmcm9tIGEgc3RhbmRieSBzZXJ2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYworICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVk ZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHRpbWUuaD4K KworI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkX2QuaCIKKyNpbmNsdWRlICJjb21tb24vY29u bmVjdC5oIgorI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIgorI2luY2x1ZGUg ImNvbW1vbi9maWxlX3Blcm0uaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2luY2x1 ZGUgImNvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgiCisjaW5jbHVkZSAiY29tbW9uL3VzZXJuYW1l LmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvcmVjb3ZlcnlfZ2VuLmgiCisjaW5jbHVkZSAiZmVfdXRp bHMvc2ltcGxlX2xpc3QuaCIKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgorCisjZGVmaW5lCURF RkFVTFRfU1VCX1BPUlQJNTA0MzIKKyNkZWZpbmUJQkFTRV9PVVRQVVRfRElSCQkicGdfY3JlYXRl c3Vic2NyaWJlcl9vdXRwdXQuZCIKKworLyogQ29tbWFuZC1saW5lIG9wdGlvbnMgKi8KK3N0cnVj dCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucworeworCWNoYXIJICAgKnN1YnNjcmliZXJfZGlyOyAv KiBzdGFuZGJ5L3N1YnNjcmliZXIgZGF0YSBkaXJlY3RvcnkgKi8KKwljaGFyCSAgICpwdWJfY29u bmluZm9fc3RyOwkvKiBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgKi8KKwljaGFyCSAgICpz b2NrZXRfZGlyOwkJLyogZGlyZWN0b3J5IGZvciBVbml4LWRvbWFpbiBzb2NrZXQsIGlmIGFueSAq LworCXVuc2lnbmVkIHNob3J0IHN1Yl9wb3J0OwkvKiBzdWJzY3JpYmVyIHBvcnQgbnVtYmVyICov CisJY29uc3QgY2hhciAqc3ViX3VzZXJuYW1lOwkvKiBzdWJzY3JpYmVyIHVzZXJuYW1lICovCisJ U2ltcGxlU3RyaW5nTGlzdCBkYXRhYmFzZV9uYW1lczsJLyogbGlzdCBvZiBkYXRhYmFzZSBuYW1l cyAqLworCWludAkJCXJlY292ZXJ5X3RpbWVvdXQ7CS8qIHN0b3AgcmVjb3ZlcnkgYWZ0ZXIgdGhp cyB0aW1lICovCit9CQkJQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnM7CisKK3N0cnVjdCBMb2dpY2Fs UmVwSW5mbworeworCU9pZAkJCW9pZDsJCQkvKiBkYXRhYmFzZSBPSUQgKi8KKwljaGFyCSAgICpk Ym5hbWU7CQkJLyogZGF0YWJhc2UgbmFtZSAqLworCWNoYXIJICAgKnB1YmNvbm5pbmZvOwkvKiBw dWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgKi8KKwljaGFyCSAgICpzdWJjb25uaW5mbzsJLyog c3Vic2NyaWJlciBjb25uZWN0aW9uIHN0cmluZyAqLworCWNoYXIJICAgKnB1Ym5hbWU7CQkvKiBw dWJsaWNhdGlvbiBuYW1lICovCisJY2hhcgkgICAqc3VibmFtZTsJCS8qIHN1YnNjcmlwdGlvbiBu YW1lIC8gcmVwbGljYXRpb24gc2xvdCBuYW1lICovCisKKwlib29sCQltYWRlX3JlcGxzbG90Owkv KiByZXBsaWNhdGlvbiBzbG90IHdhcyBjcmVhdGVkICovCisJYm9vbAkJbWFkZV9wdWJsaWNhdGlv bjsJLyogcHVibGljYXRpb24gd2FzIGNyZWF0ZWQgKi8KK30JCQlMb2dpY2FsUmVwSW5mbzsKKwor c3RhdGljIHZvaWQgY2xlYW51cF9vYmplY3RzX2F0ZXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lkIHVz YWdlKCk7CitzdGF0aWMgY2hhciAqZ2V0X2Jhc2VfY29ubmluZm8oY2hhciAqY29ubmluZm8sIGNo YXIgKipkYm5hbWUpOworc3RhdGljIGNoYXIgKmdldF9leGVjX3BhdGgoY29uc3QgY2hhciAqYXJn djAsIGNvbnN0IGNoYXIgKnByb2duYW1lKTsKK3N0YXRpYyB2b2lkIGNoZWNrX2RhdGFfZGlyZWN0 b3J5KGNvbnN0IGNoYXIgKmRhdGFkaXIpOworc3RhdGljIGNoYXIgKmNvbmNhdF9jb25uaW5mb19k Ym5hbWUoY29uc3QgY2hhciAqY29ubmluZm8sIGNvbnN0IGNoYXIgKmRibmFtZSk7CitzdGF0aWMg c3RydWN0IExvZ2ljYWxSZXBJbmZvICpzdG9yZV9wdWJfc3ViX2luZm8oU2ltcGxlU3RyaW5nTGlz dCBkYm5hbWVzLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnB1Yl9iYXNlX2Nvbm5pbmZvLAor CQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnN1Yl9iYXNlX2Nvbm5pbmZvKTsKK3N0YXRpYyBQR2Nv bm4gKmNvbm5lY3RfZGF0YWJhc2UoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgZXhpdF9vbl9l cnJvcik7CitzdGF0aWMgdm9pZCBkaXNjb25uZWN0X2RhdGFiYXNlKFBHY29ubiAqY29ubiwgYm9v bCBleGl0X29uX2Vycm9yKTsKK3N0YXRpYyB1aW50NjQgZ2V0X3ByaW1hcnlfc3lzaWQoY29uc3Qg Y2hhciAqY29ubmluZm8pOworc3RhdGljIHVpbnQ2NCBnZXRfc3RhbmRieV9zeXNpZChjb25zdCBj aGFyICpkYXRhZGlyKTsKK3N0YXRpYyB2b2lkIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0 IGNoYXIgKnBnX3Jlc2V0d2FsX3BhdGgsCisJCQkJCQkJCQlzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJl ck9wdGlvbnMgKm9wdCk7CitzdGF0aWMgYm9vbCBzZXJ2ZXJfaXNfaW5fcmVjb3ZlcnkoUEdjb25u ICpjb25uKTsKK3N0YXRpYyB2b2lkIGNoZWNrX3B1Ymxpc2hlcihzdHJ1Y3QgTG9naWNhbFJlcElu Zm8gKmRiaW5mbyk7CitzdGF0aWMgdm9pZCBzZXR1cF9wdWJsaXNoZXIoc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8pOworc3RhdGljIHZvaWQgY2hlY2tfc3Vic2NyaWJlcihzdHJ1Y3QgTG9n aWNhbFJlcEluZm8gKmRiaW5mbyk7CitzdGF0aWMgdm9pZCBzZXR1cF9zdWJzY3JpYmVyKHN0cnVj dCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLAorCQkJCQkJCSBjb25zdCBjaGFyICpjb25zaXN0ZW50 X2xzbik7CitzdGF0aWMgY2hhciAqc2V0dXBfcmVjb3Zlcnkoc3RydWN0IExvZ2ljYWxSZXBJbmZv ICpkYmluZm8sIGNoYXIgKmRhdGFkaXIpOworc3RhdGljIHZvaWQgZHJvcF9wcmltYXJ5X3JlcGxp Y2F0aW9uX3Nsb3Qoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sCisJCQkJCQkJCQkJICBj aGFyICpzbG90bmFtZSk7CitzdGF0aWMgY2hhciAqY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25f c2xvdChQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCQkJCSBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRi aW5mbywKKwkJCQkJCQkJCQkJIGJvb2wgdGVtcG9yYXJ5KTsKK3N0YXRpYyB2b2lkIGRyb3BfcmVw bGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZv LAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSk7CitzdGF0aWMgdm9pZCBwZ19jdGxf c3RhdHVzKGNvbnN0IGNoYXIgKnBnX2N0bF9jbWQsIGludCByYyk7CitzdGF0aWMgdm9pZCBzdGFy dF9zdGFuZGJ5X3NlcnZlcihzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCwKKwkJ CQkJCQkJIGNvbnN0IGNoYXIgKnBnX2N0bF9wYXRoLCBib29sIHdpdGhfb3B0aW9ucyk7CitzdGF0 aWMgdm9pZCBzdG9wX3N0YW5kYnlfc2VydmVyKGNvbnN0IGNoYXIgKnBnX2N0bF9wYXRoLCBjb25z dCBjaGFyICpkYXRhZGlyKTsKK3N0YXRpYyB2b2lkIHdhaXRfZm9yX2VuZF9yZWNvdmVyeShjb25z dCBjaGFyICpjb25uaW5mbywgY29uc3QgY2hhciAqcGdfY3RsX3BhdGgsCisJCQkJCQkJCSAgc3Ry dWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpOworc3RhdGljIHZvaWQgY3JlYXRlX3B1 YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pOwor c3RhdGljIHZvaWQgZHJvcF9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2Fs UmVwSW5mbyAqZGJpbmZvKTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25u ICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7CitzdGF0aWMgdm9pZCBzZXRf cmVwbGljYXRpb25fcHJvZ3Jlc3MoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g KmRiaW5mbywKKwkJCQkJCQkJCSBjb25zdCBjaGFyICpsc24pOworc3RhdGljIHZvaWQgZW5hYmxl X3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZv KTsKKworI2RlZmluZQlVU0VDX1BFUl9TRUMJMTAwMDAwMAorI2RlZmluZQlXQUlUX0lOVEVSVkFM CTEJCS8qIDEgc2Vjb25kICovCisKK3N0YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKKworc3Rh dGljIGNoYXIgKnByaW1hcnlfc2xvdF9uYW1lID0gTlVMTDsKK3N0YXRpYyBib29sIGRyeV9ydW4g PSBmYWxzZTsKKworc3RhdGljIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworCitzdGF0aWMgc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm87CitzdGF0aWMgaW50CW51bV9kYnMgPSAwOworCitzdGF0 aWMgYm9vbCByZWNvdmVyeV9lbmRlZCA9IGZhbHNlOworCitlbnVtIFdhaXRQTVJlc3VsdAorewor CVBPU1RNQVNURVJfUkVBRFksCisJUE9TVE1BU1RFUl9TVElMTF9TVEFSVElORworfTsKKworCisv KgorICogQ2xlYW51cCBvYmplY3RzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5IHBnX2NyZWF0ZXN1YnNj cmliZXIgaWYgdGhlcmUgaXMgYW4KKyAqIGVycm9yLgorICoKKyAqIFJlcGxpY2F0aW9uIHNsb3Rz LCBwdWJsaWNhdGlvbnMgYW5kIHN1YnNjcmlwdGlvbnMgYXJlIGNyZWF0ZWQuIERlcGVuZGluZyBv bgorICogdGhlIHN0ZXAgaXQgZmFpbGVkLCBpdCBzaG91bGQgcmVtb3ZlIHRoZSBhbHJlYWR5IGNy ZWF0ZWQgb2JqZWN0cyBpZiBpdCBpcworICogcG9zc2libGUgKHNvbWV0aW1lcyBpdCB3b24ndCB3 b3JrIGR1ZSB0byBhIGNvbm5lY3Rpb24gaXNzdWUpLgorICovCitzdGF0aWMgdm9pZAorY2xlYW51 cF9vYmplY3RzX2F0ZXhpdCh2b2lkKQoreworCWlmIChzdWNjZXNzKQorCQlyZXR1cm47CisKKwkv KgorCSAqIElmIHRoZSBzZXJ2ZXIgaXMgcHJvbW90ZWQsIHRoZXJlIGlzIG5vIHdheSB0byB1c2Ug dGhlIGN1cnJlbnQgc2V0dXAKKwkgKiBhZ2Fpbi4gV2FybiB0aGUgdXNlciB0aGF0IGEgbmV3IHJl cGxpY2F0aW9uIHNldHVwIHNob3VsZCBiZSBkb25lIGJlZm9yZQorCSAqIHRyeWluZyBhZ2Fpbi4K KwkgKi8KKwlpZiAocmVjb3ZlcnlfZW5kZWQpCisJeworCQlwZ19sb2dfd2FybmluZygicGdfY3Jl YXRlc3Vic2NyaWJlciBmYWlsZWQgYWZ0ZXIgdGhlIGVuZCBvZiByZWNvdmVyeSIpOworCQlwZ19s b2dfd2FybmluZ19oaW50KCJUaGUgdGFyZ2V0IHNlcnZlciBjYW5ub3QgYmUgdXNlZCBhcyBhIHBo eXNpY2FsIHJlcGxpY2EgYW55bW9yZS4iKTsKKwkJcGdfbG9nX3dhcm5pbmdfaGludCgiWW91IG11 c3QgcmVjcmVhdGUgdGhlIHBoeXNpY2FsIHJlcGxpY2EgYmVmb3JlIGNvbnRpbnVpbmcuIik7CisJ fQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZGJzOyBpKyspCisJeworCQlpZiAoZGJpbmZv W2ldLm1hZGVfcHVibGljYXRpb24gfHwgZGJpbmZvW2ldLm1hZGVfcmVwbHNsb3QpCisJCXsKKwkJ CVBHY29ubgkgICAqY29ubjsKKworCQkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoZGJpbmZvW2ld LnB1YmNvbm5pbmZvLCBmYWxzZSk7CisJCQlpZiAoY29ubiAhPSBOVUxMKQorCQkJeworCQkJCWlm IChkYmluZm9baV0ubWFkZV9wdWJsaWNhdGlvbikKKwkJCQkJZHJvcF9wdWJsaWNhdGlvbihjb25u LCAmZGJpbmZvW2ldKTsKKwkJCQlpZiAoZGJpbmZvW2ldLm1hZGVfcmVwbHNsb3QpCisJCQkJCWRy b3BfcmVwbGljYXRpb25fc2xvdChjb25uLCAmZGJpbmZvW2ldLCBkYmluZm9baV0uc3VibmFtZSk7 CisJCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBmYWxzZSk7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBJZiBhIGNvbm5lY3Rpb24gY291bGQgbm90IGJlIGVzdGFibGlz aGVkLCBpbmZvcm0gdGhlIHVzZXIKKwkJCQkgKiB0aGF0IHNvbWUgb2JqZWN0cyB3ZXJlIGxlZnQg b24gcHJpbWFyeSBhbmQgc2hvdWxkIGJlCisJCQkJICogcmVtb3ZlZCBiZWZvcmUgdHJ5aW5nIGFn YWluLgorCQkJCSAqLworCQkJCWlmIChkYmluZm9baV0ubWFkZV9wdWJsaWNhdGlvbikKKwkJCQl7 CisJCQkJCXBnX2xvZ193YXJuaW5nKCJUaGVyZSBtaWdodCBiZSBhIHB1YmxpY2F0aW9uIFwiJXNc IiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHJpbWFyeSIsCisJCQkJCQkJCSAgIGRiaW5mb1tpXS5w dWJuYW1lLCBkYmluZm9baV0uZGJuYW1lKTsKKwkJCQkJcGdfbG9nX3dhcm5pbmdfaGludCgiQ29u c2lkZXIgZHJvcHBpbmcgdGhpcyBwdWJsaWNhdGlvbiBiZWZvcmUgdHJ5aW5nIGFnYWluLiIpOwor CQkJCX0KKwkJCQlpZiAoZGJpbmZvW2ldLm1hZGVfcmVwbHNsb3QpCisJCQkJeworCQkJCQlwZ19s b2dfd2FybmluZygiVGhlcmUgbWlnaHQgYmUgYSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBk YXRhYmFzZSBcIiVzXCIgb24gcHJpbWFyeSIsCisJCQkJCQkJCSAgIGRiaW5mb1tpXS5zdWJuYW1l LCBkYmluZm9baV0uZGJuYW1lKTsKKwkJCQkJcGdfbG9nX3dhcm5pbmdfaGludCgiRHJvcCB0aGlz IHJlcGxpY2F0aW9uIHNsb3Qgc29vbiB0byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIp OworCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7 CisJcHJpbnRmKF8oIiVzIGNyZWF0ZXMgYSBuZXcgbG9naWNhbCByZXBsaWNhIGZyb20gYSBzdGFu ZGJ5IHNlcnZlci5cblxuIiksCisJCSAgIHByb2duYW1lKTsKKwlwcmludGYoXygiVXNhZ2U6XG4i KSk7CisJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi5cbiIpLCBwcm9nbmFtZSk7CisJcHJpbnRm KF8oIlxuT3B0aW9uczpcbiIpKTsKKwlwcmludGYoXygiIC1kLCAtLWRhdGFiYXNlPURCTkFNRSAg ICAgICAgICAgICAgIGRhdGFiYXNlIHRvIGNyZWF0ZSBhIHN1YnNjcmlwdGlvblxuIikpOworCXBy aW50ZihfKCIgLUQsIC0tcGdkYXRhPURBVEFESVIgICAgICAgICAgICAgICAgbG9jYXRpb24gZm9y IHRoZSBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5XG4iKSk7CisJcHJpbnRmKF8oIiAtbiwgLS1k cnktcnVuICAgICAgICAgICAgICAgICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3Vs ZCBiZSBkb25lXG4iKSk7CisJcHJpbnRmKF8oIiAtcCwgLS1zdWJzY3JpYmVyLXBvcnQ9UE9SVCAg ICAgICAgICBzdWJzY3JpYmVyIHBvcnQgbnVtYmVyIChkZWZhdWx0ICVkKVxuIiksIERFRkFVTFRf U1VCX1BPUlQpOworCXByaW50ZihfKCIgLVAsIC0tcHVibGlzaGVyLXNlcnZlcj1DT05OU1RSICAg ICAgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nXG4iKSk7CisJcHJpbnRmKF8oIiAtcywgLS1z b2NrZXQtZGlyZWN0b3J5PURJUiAgICAgICAgICBzb2NrZXQgZGlyZWN0b3J5IHRvIHVzZSAoZGVm YXVsdCBjdXJyZW50IGRpcmVjdG9yeSlcbiIpKTsKKwlwcmludGYoXygiIC10LCAtLXJlY292ZXJ5 LXRpbWVvdXQ9U0VDUyAgICAgICAgIHNlY29uZHMgdG8gd2FpdCBmb3IgcmVjb3ZlcnkgdG8gZW5k XG4iKSk7CisJcHJpbnRmKF8oIiAtVSwgLS1zdWJzY3JpYmVyLXVzZXJuYW1lPU5BTUUgICAgICBz dWJzY3JpYmVyIHVzZXJuYW1lXG4iKSk7CisJcHJpbnRmKF8oIiAtdiwgLS12ZXJib3NlICAgICAg ICAgICAgICAgICAgICAgICBvdXRwdXQgdmVyYm9zZSBtZXNzYWdlc1xuIikpOworCXByaW50Zihf KCIgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5m b3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOworCXByaW50ZihfKCIgLT8sIC0taGVscCAgICAgICAg ICAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOworCXByaW50 ZihfKCJcblJlcG9ydCBidWdzIHRvIDwlcz4uXG4iKSwgUEFDS0FHRV9CVUdSRVBPUlQpOworCXBy aW50ZihfKCIlcyBob21lIHBhZ2U6IDwlcz5cbiIpLCBQQUNLQUdFX05BTUUsIFBBQ0tBR0VfVVJM KTsKK30KKworLyoKKyAqIFZhbGlkYXRlIGEgY29ubmVjdGlvbiBzdHJpbmcuIFJldHVybnMgYSBi YXNlIGNvbm5lY3Rpb24gc3RyaW5nIHRoYXQgaXMgYQorICogY29ubmVjdGlvbiBzdHJpbmcgd2l0 aG91dCBhIGRhdGFiYXNlIG5hbWUuCisgKgorICogU2luY2Ugd2UgbWlnaHQgcHJvY2VzcyBtdWx0 aXBsZSBkYXRhYmFzZXMsIGVhY2ggZGF0YWJhc2UgbmFtZSB3aWxsIGJlCisgKiBhcHBlbmRlZCB0 byB0aGlzIGJhc2UgY29ubmVjdGlvbiBzdHJpbmcgdG8gcHJvdmlkZSBhIGZpbmFsIGNvbm5lY3Rp b24KKyAqIHN0cmluZy4gSWYgdGhlIHNlY29uZCBhcmd1bWVudCAoZGJuYW1lKSBpcyBub3QgbnVs bCwgcmV0dXJucyBkYm5hbWUgaWYgdGhlCisgKiBwcm92aWRlZCBjb25uZWN0aW9uIHN0cmluZyBj b250YWlucyBpdC4gSWYgb3B0aW9uIC0tZGF0YWJhc2UgaXMgbm90CisgKiBwcm92aWRlZCwgdXNl cyBkYm5hbWUgYXMgdGhlIG9ubHkgZGF0YWJhc2UgdG8gc2V0dXAgdGhlIGxvZ2ljYWwgcmVwbGlj YS4KKyAqCisgKiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGUg cmV0dXJuZWQgY29ubmVjdGlvbiBzdHJpbmcgYW5kCisgKiBkYm5hbWUuCisgKi8KK3N0YXRpYyBj aGFyICoKK2dldF9iYXNlX2Nvbm5pbmZvKGNoYXIgKmNvbm5pbmZvLCBjaGFyICoqZGJuYW1lKQor eworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFjb25uaW5mb09w dGlvbiAqY29ubl9vcHRzID0gTlVMTDsKKwlQUWNvbm5pbmZvT3B0aW9uICpjb25uX29wdDsKKwlj aGFyCSAgICplcnJtc2cgPSBOVUxMOworCWNoYXIJICAgKnJldDsKKwlpbnQJCQlpOworCisJY29u bl9vcHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5pbmZvLCAmZXJybXNnKTsKKwlpZiAoY29ubl9v cHRzID09IE5VTEwpCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBjb25uZWN0 aW9uIHN0cmluZzogJXMiLCBlcnJtc2cpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpID0gMDsK Kwlmb3IgKGNvbm5fb3B0ID0gY29ubl9vcHRzOyBjb25uX29wdC0+a2V5d29yZCAhPSBOVUxMOyBj b25uX29wdCsrKQorCXsKKwkJaWYgKHN0cmNtcChjb25uX29wdC0+a2V5d29yZCwgImRibmFtZSIp ID09IDAgJiYgY29ubl9vcHQtPnZhbCAhPSBOVUxMKQorCQl7CisJCQlpZiAoZGJuYW1lKQorCQkJ CSpkYm5hbWUgPSBwZ19zdHJkdXAoY29ubl9vcHQtPnZhbCk7CisJCQljb250aW51ZTsKKwkJfQor CisJCWlmIChjb25uX29wdC0+dmFsICE9IE5VTEwgJiYgY29ubl9vcHQtPnZhbFswXSAhPSAnXDAn KQorCQl7CisJCQlpZiAoaSA+IDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGJ1ZiwgJyAn KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiVzPSVzIiwgY29ubl9vcHQtPmtleXdvcmQs IGNvbm5fb3B0LT52YWwpOworCQkJaSsrOworCQl9CisJfQorCisJcmV0ID0gcGdfc3RyZHVwKGJ1 Zi0+ZGF0YSk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoYnVmKTsKKwlQUWNvbm5pbmZvRnJlZShj b25uX29wdHMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFZlcmlmeSBpZiBhIFBvc3Rn cmVTUUwgYmluYXJ5IChwcm9nbmFtZSkgaXMgYXZhaWxhYmxlIGluIHRoZSBzYW1lIGRpcmVjdG9y eSBhcworICogcGdfY3JlYXRlc3Vic2NyaWJlciBhbmQgaXQgaGFzIHRoZSBzYW1lIHZlcnNpb24u ICBJdCByZXR1cm5zIHRoZSBhYnNvbHV0ZQorICogcGF0aCBvZiB0aGUgcHJvZ25hbWUuCisgKi8K K3N0YXRpYyBjaGFyICoKK2dldF9leGVjX3BhdGgoY29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNo YXIgKnByb2duYW1lKQoreworCWNoYXIJICAgKnZlcnNpb25zdHI7CisJY2hhcgkgICAqZXhlY19w YXRoOworCWludAkJCXJldDsKKworCXZlcnNpb25zdHIgPSBwc3ByaW50ZigiJXMgKFBvc3RncmVT UUwpICVzXG4iLCBwcm9nbmFtZSwgUEdfVkVSU0lPTik7CisJZXhlY19wYXRoID0gcGdfbWFsbG9j KE1BWFBHUEFUSCk7CisJcmV0ID0gZmluZF9vdGhlcl9leGVjKGFyZ3YwLCBwcm9nbmFtZSwgdmVy c2lvbnN0ciwgZXhlY19wYXRoKTsKKworCWlmIChyZXQgPCAwKQorCXsKKwkJY2hhcgkJZnVsbF9w YXRoW01BWFBHUEFUSF07CisKKwkJaWYgKGZpbmRfbXlfZXhlYyhhcmd2MCwgZnVsbF9wYXRoKSA8 IDApCisJCQlzdHJsY3B5KGZ1bGxfcGF0aCwgcHJvZ25hbWUsIHNpemVvZihmdWxsX3BhdGgpKTsK KworCQlpZiAocmV0ID09IC0xKQorCQkJcGdfZmF0YWwoInByb2dyYW0gXCIlc1wiIGlzIG5lZWRl ZCBieSAlcyBidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wi IiwKKwkJCQkJIHByb2duYW1lLCAicGdfY3JlYXRlc3Vic2NyaWJlciIsIGZ1bGxfcGF0aCk7CisJ CWVsc2UKKwkJCXBnX2ZhdGFsKCJwcm9ncmFtIFwiJXNcIiB3YXMgZm91bmQgYnkgXCIlc1wiIGJ1 dCB3YXMgbm90IHRoZSBzYW1lIHZlcnNpb24gYXMgJXMiLAorCQkJCQkgcHJvZ25hbWUsIGZ1bGxf cGF0aCwgInBnX2NyZWF0ZXN1YnNjcmliZXIiKTsKKwl9CisKKwlwZ19sb2dfZGVidWcoIiVzIHBh dGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgpOworCisJcmV0dXJuIGV4ZWNfcGF0aDsK K30KKworLyoKKyAqIElzIGl0IGEgY2x1c3RlciBkaXJlY3Rvcnk/IFRoZXNlIGFyZSBwcmVsaW1p bmFyeSBjaGVja3MuIEl0IGlzIGZhciBmcm9tCisgKiBtYWtpbmcgYW4gYWNjdXJhdGUgY2hlY2su IElmIGl0IGlzIG5vdCBhIGNsb25lIGZyb20gdGhlIHB1Ymxpc2hlciwgaXQgd2lsbAorICogZXZl bnR1YWxseSBmYWlsIGluIGEgZnV0dXJlIHN0ZXAuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19k YXRhX2RpcmVjdG9yeShjb25zdCBjaGFyICpkYXRhZGlyKQoreworCXN0cnVjdCBzdGF0IHN0YXRi dWY7CisJY2hhcgkJdmVyc2lvbmZpbGVbTUFYUEdQQVRIXTsKKworCXBnX2xvZ19pbmZvKCJjaGVj a2luZyBpZiBkaXJlY3RvcnkgXCIlc1wiIGlzIGEgY2x1c3RlciBkYXRhIGRpcmVjdG9yeSIsCisJ CQkJZGF0YWRpcik7CisKKwlpZiAoc3RhdChkYXRhZGlyLCAmc3RhdGJ1ZikgIT0gMCkKKwl7CisJ CWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQlwZ19mYXRhbCgiZGF0YSBkaXJlY3RvcnkgXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwgZGF0YWRpcik7CisJCWVsc2UKKwkJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgYWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzIiwgZGF0YWRpciwKKwkJCQkJIHN0cmVycm9y KGVycm5vKSk7CisJfQorCisJc25wcmludGYodmVyc2lvbmZpbGUsIE1BWFBHUEFUSCwgIiVzL1BH X1ZFUlNJT04iLCBkYXRhZGlyKTsKKwlpZiAoc3RhdCh2ZXJzaW9uZmlsZSwgJnN0YXRidWYpICE9 IDAgJiYgZXJybm8gPT0gRU5PRU5UKQorCXsKKwkJcGdfZmF0YWwoImRpcmVjdG9yeSBcIiVzXCIg aXMgbm90IGEgZGF0YWJhc2UgY2x1c3RlciBkaXJlY3RvcnkiLAorCQkJCSBkYXRhZGlyKTsKKwl9 Cit9CisKKy8qCisgKiBBcHBlbmQgZGF0YWJhc2UgbmFtZSBpbnRvIGEgYmFzZSBjb25uZWN0aW9u IHN0cmluZy4KKyAqCisgKiBkYm5hbWUgaXMgdGhlIG9ubHkgcGFyYW1ldGVyIHRoYXQgY2hhbmdl cyBzbyBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGJhc2UKKyAqIGNvbm5lY3Rpb24gc3RyaW5n LiBUaGlzIGZ1bmN0aW9uIGNvbmNhdGVuYXRlcyBkYm5hbWUgdG8gYnVpbGQgYSAicmVhbCIKKyAq IGNvbm5lY3Rpb24gc3RyaW5nLgorICovCitzdGF0aWMgY2hhciAqCitjb25jYXRfY29ubmluZm9f ZGJuYW1lKGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBjb25zdCBjaGFyICpkYm5hbWUpCit7CisJUFFF eHBCdWZmZXIgYnVmID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwljaGFyCSAgICpyZXQ7CisKKwlB c3NlcnQoY29ubmluZm8gIT0gTlVMTCk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsIGNv bm5pbmZvKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihidWYsICIgZGJuYW1lPSVzIiwgZGJuYW1lKTsK KworCXJldCA9IHBnX3N0cmR1cChidWYtPmRhdGEpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYp OworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFN0b3JlIHB1YmxpY2F0aW9uIGFuZCBzdWJz Y3JpcHRpb24gaW5mb3JtYXRpb24uCisgKi8KK3N0YXRpYyBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g Kgorc3RvcmVfcHViX3N1Yl9pbmZvKFNpbXBsZVN0cmluZ0xpc3QgZGJuYW1lcywgY29uc3QgY2hh ciAqcHViX2Jhc2VfY29ubmluZm8sCisJCQkJICAgY29uc3QgY2hhciAqc3ViX2Jhc2VfY29ubmlu Zm8pCit7CisJc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm87CisJaW50CQkJaSA9IDA7CisK KwlkYmluZm8gPSAoc3RydWN0IExvZ2ljYWxSZXBJbmZvICopIHBnX21hbGxvYyhudW1fZGJzICog c2l6ZW9mKHN0cnVjdCBMb2dpY2FsUmVwSW5mbykpOworCisJZm9yIChTaW1wbGVTdHJpbmdMaXN0 Q2VsbCAqY2VsbCA9IGRibmFtZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJewor CQljaGFyCSAgICpjb25uaW5mbzsKKworCQkvKiBGaWxsIHB1Ymxpc2hlciBhdHRyaWJ1dGVzICov CisJCWNvbm5pbmZvID0gY29uY2F0X2Nvbm5pbmZvX2RibmFtZShwdWJfYmFzZV9jb25uaW5mbywg Y2VsbC0+dmFsKTsKKwkJZGJpbmZvW2ldLnB1YmNvbm5pbmZvID0gY29ubmluZm87CisJCWRiaW5m b1tpXS5kYm5hbWUgPSBjZWxsLT52YWw7CisJCWRiaW5mb1tpXS5tYWRlX3JlcGxzbG90ID0gZmFs c2U7CisJCWRiaW5mb1tpXS5tYWRlX3B1YmxpY2F0aW9uID0gZmFsc2U7CisJCS8qIEZpbGwgc3Vi c2NyaWJlciBhdHRyaWJ1dGVzICovCisJCWNvbm5pbmZvID0gY29uY2F0X2Nvbm5pbmZvX2RibmFt ZShzdWJfYmFzZV9jb25uaW5mbywgY2VsbC0+dmFsKTsKKwkJZGJpbmZvW2ldLnN1YmNvbm5pbmZv ID0gY29ubmluZm87CisJCS8qIE90aGVyIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCBsYXRlciAqLwor CisJCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyKCVkKTogY29ubmVjdGlvbiBzdHJpbmc6ICVzIiwg aSwgZGJpbmZvW2ldLnB1YmNvbm5pbmZvKTsKKwkJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyKCVk KTogY29ubmVjdGlvbiBzdHJpbmc6ICVzIiwgaSwgZGJpbmZvW2ldLnN1YmNvbm5pbmZvKTsKKwor CQlpKys7CisJfQorCisJcmV0dXJuIGRiaW5mbzsKK30KKworLyoKKyAqIE9wZW4gYSBuZXcgY29u bmVjdGlvbi4gSWYgZXhpdF9vbl9lcnJvciBpcyB0cnVlLCBpdCBoYXMgYW4gdW5kZXNpcmVkCisg KiBjb25kaXRpb24gYW5kIGl0IHNob3VsZCBleGl0IGltbWVkaWF0ZWx5LgorICovCitzdGF0aWMg UEdjb25uICoKK2Nvbm5lY3RfZGF0YWJhc2UoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgZXhp dF9vbl9lcnJvcikKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCisJ Y29ubiA9IFBRY29ubmVjdGRiKGNvbm5pbmZvKTsKKwlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09O TkVDVElPTl9PSykKKwl7CisJCXBnX2xvZ19lcnJvcigiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBm YWlsZWQ6ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJaWYgKGV4aXRfb25f ZXJyb3IpCisJCQlleGl0KDEpOworCisJCXJldHVybiBOVUxMOworCX0KKworCS8qIFNlY3VyZSBz ZWFyY2hfcGF0aCAqLworCXJlcyA9IFBRZXhlYyhjb25uLCBBTFdBWVNfU0VDVVJFX1NFQVJDSF9Q QVRIX1NRTCk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQor CXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xlYXIgc2VhcmNoX3BhdGg6ICVzIiwKKwkJ CQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlpZiAoZXhpdF9vbl9lcnJvcikKKwkJ CWV4aXQoMSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCVBRY2xlYXIocmVzKTsKKworCXJldHVy biBjb25uOworfQorCisvKgorICogQ2xvc2UgdGhlIGNvbm5lY3Rpb24uIElmIGV4aXRfb25fZXJy b3IgaXMgdHJ1ZSwgaXQgaGFzIGFuIHVuZGVzaXJlZAorICogY29uZGl0aW9uIGFuZCBpdCBzaG91 bGQgZXhpdCBpbW1lZGlhdGVseS4KKyAqLworc3RhdGljIHZvaWQKK2Rpc2Nvbm5lY3RfZGF0YWJh c2UoUEdjb25uICpjb25uLCBib29sIGV4aXRfb25fZXJyb3IpCit7CisJQXNzZXJ0KGNvbm4gIT0g TlVMTCk7CisKKwlQUWZpbmlzaChjb25uKTsKKworCWlmIChleGl0X29uX2Vycm9yKQorCQlleGl0 KDEpOworfQorCisvKgorICogT2J0YWluIHRoZSBzeXN0ZW0gaWRlbnRpZmllciB1c2luZyB0aGUg cHJvdmlkZWQgY29ubmVjdGlvbi4gSXQgd2lsbCBiZSB1c2VkCisgKiB0byBjb21wYXJlIGlmIGEg ZGF0YSBkaXJlY3RvcnkgaXMgYSBjbG9uZSBvZiBhbm90aGVyIG9uZS4KKyAqLworc3RhdGljIHVp bnQ2NAorZ2V0X3ByaW1hcnlfc3lzaWQoY29uc3QgY2hhciAqY29ubmluZm8pCit7CisJUEdjb25u CSAgICpjb25uOworCVBHcmVzdWx0ICAgKnJlczsKKwl1aW50NjQJCXN5c2lkOworCisJcGdfbG9n X2luZm8oImdldHRpbmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBwdWJsaXNoZXIiKTsKKworCWNv bm4gPSBjb25uZWN0X2RhdGFiYXNlKGNvbm5pbmZvLCB0cnVlKTsKKworCXJlcyA9IFBRZXhlYyhj b25uLCAiU0VMRUNUIHN5c3RlbV9pZGVudGlmaWVyIEZST00gcGdfY2F0YWxvZy5wZ19jb250cm9s X3N5c3RlbSgpIik7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09L KQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IHN5c3RlbSBpZGVudGlmaWVyOiAl cyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJZGlzY29ubmVjdF9kYXRh YmFzZShjb25uLCB0cnVlKTsKKwl9CisJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJeworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgc3lzdGVtIGlkZW50aWZpZXI6IGdvdCAlZCByb3dz LCBleHBlY3RlZCAlZCByb3ciLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIDEpOworCQlkaXNjb25u ZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCX0KKworCXN5c2lkID0gc3RydG91NjQoUFFnZXR2 YWx1ZShyZXMsIDAsIDApLCBOVUxMLCAxMCk7CisKKwlwZ19sb2dfaW5mbygic3lzdGVtIGlkZW50 aWZpZXIgaXMgJWxsdSBvbiBwdWJsaXNoZXIiLAorCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHN5 c2lkKTsKKworCVBRY2xlYXIocmVzKTsKKwlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNl KTsKKworCXJldHVybiBzeXNpZDsKK30KKworLyoKKyAqIE9idGFpbiB0aGUgc3lzdGVtIGlkZW50 aWZpZXIgZnJvbSBjb250cm9sIGZpbGUuIEl0IHdpbGwgYmUgdXNlZCB0byBjb21wYXJlCisgKiBp ZiBhIGRhdGEgZGlyZWN0b3J5IGlzIGEgY2xvbmUgb2YgYW5vdGhlciBvbmUuIFRoaXMgcm91dGlu ZSBpcyB1c2VkIGxvY2FsbHkKKyAqIGFuZCBhdm9pZHMgYSBjb25uZWN0aW9uLgorICovCitzdGF0 aWMgdWludDY0CitnZXRfc3RhbmRieV9zeXNpZChjb25zdCBjaGFyICpkYXRhZGlyKQoreworCUNv bnRyb2xGaWxlRGF0YSAqY2Y7CisJYm9vbAkJY3JjX29rOworCXVpbnQ2NAkJc3lzaWQ7CisKKwlw Z19sb2dfaW5mbygiZ2V0dGluZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIiKTsK KworCWNmID0gZ2V0X2NvbnRyb2xmaWxlKGRhdGFkaXIsICZjcmNfb2spOworCWlmICghY3JjX29r KQorCQlwZ19mYXRhbCgiY29udHJvbCBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIpOworCisJ c3lzaWQgPSBjZi0+c3lzdGVtX2lkZW50aWZpZXI7CisKKwlwZ19sb2dfaW5mbygic3lzdGVtIGlk ZW50aWZpZXIgaXMgJWxsdSBvbiBzdWJzY3JpYmVyIiwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25n KSBzeXNpZCk7CisKKwlwZ19mcmVlKGNmKTsKKworCXJldHVybiBzeXNpZDsKK30KKworLyoKKyAq IE1vZGlmeSB0aGUgc3lzdGVtIGlkZW50aWZpZXIuIFNpbmNlIGEgc3RhbmRieSBzZXJ2ZXIgcHJl c2VydmVzIHRoZSBzeXN0ZW0KKyAqIGlkZW50aWZpZXIsIGl0IG1ha2VzIHNlbnNlIHRvIGNoYW5n ZSBpdCB0byBhdm9pZCBzaXR1YXRpb25zIGluIHdoaWNoIFdBTAorICogZmlsZXMgZnJvbSBvbmUg b2YgdGhlIHN5c3RlbXMgbWlnaHQgYmUgdXNlZCBpbiB0aGUgb3RoZXIgb25lLgorICovCitzdGF0 aWMgdm9pZAorbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQoY29uc3QgY2hhciAqcGdfcmVzZXR3YWxf cGF0aCwgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCit7CisJQ29udHJvbEZp bGVEYXRhICpjZjsKKwlib29sCQljcmNfb2s7CisJc3RydWN0IHRpbWV2YWwgdHY7CisKKwljaGFy CSAgICpjbWRfc3RyOworCisJcGdfbG9nX2luZm8oIm1vZGlmeWluZyBzeXN0ZW0gaWRlbnRpZmll ciBmcm9tIHN1YnNjcmliZXIiKTsKKworCWNmID0gZ2V0X2NvbnRyb2xmaWxlKG9wdC0+c3Vic2Ny aWJlcl9kaXIsICZjcmNfb2spOworCWlmICghY3JjX29rKQorCQlwZ19mYXRhbCgiY29udHJvbCBm aWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIpOworCisJLyoKKwkgKiBTZWxlY3QgYSBuZXcgc3lz dGVtIGlkZW50aWZpZXIuCisJICoKKwkgKiBYWFggdGhpcyBjb2RlIHdhcyBleHRyYWN0ZWQgZnJv bSBCb290U3RyYXBYTE9HKCkuCisJICovCisJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisJY2Yt PnN5c3RlbV9pZGVudGlmaWVyID0gKCh1aW50NjQpIHR2LnR2X3NlYykgPDwgMzI7CisJY2YtPnN5 c3RlbV9pZGVudGlmaWVyIHw9ICgodWludDY0KSB0di50dl91c2VjKSA8PCAxMjsKKwljZi0+c3lz dGVtX2lkZW50aWZpZXIgfD0gZ2V0cGlkKCkgJiAweEZGRjsKKworCWlmICghZHJ5X3J1bikKKwkJ dXBkYXRlX2NvbnRyb2xmaWxlKG9wdC0+c3Vic2NyaWJlcl9kaXIsIGNmLCB0cnVlKTsKKworCXBn X2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRpZmllciBpcyAlbGx1IG9uIHN1YnNjcmliZXIiLAorCQkJ CSh1bnNpZ25lZCBsb25nIGxvbmcpIGNmLT5zeXN0ZW1faWRlbnRpZmllcik7CisKKwlwZ19sb2df aW5mbygicnVubmluZyBwZ19yZXNldHdhbCBvbiB0aGUgc3Vic2NyaWJlciIpOworCisJY21kX3N0 ciA9IHBzcHJpbnRmKCJcIiVzXCIgLUQgXCIlc1wiID4gXCIlc1wiIiwgcGdfcmVzZXR3YWxfcGF0 aCwKKwkJCQkJICAgb3B0LT5zdWJzY3JpYmVyX2RpciwgREVWTlVMTCk7CisKKwlwZ19sb2dfZGVi dWcoImNvbW1hbmQgaXM6ICVzIiwgY21kX3N0cik7CisKKwlpZiAoIWRyeV9ydW4pCisJeworCQlp bnQJCQlyYyA9IHN5c3RlbShjbWRfc3RyKTsKKworCQlpZiAocmMgPT0gMCkKKwkJCXBnX2xvZ19p bmZvKCJzdWJzY3JpYmVyIHN1Y2Nlc3NmdWxseSBjaGFuZ2VkIHRoZSBzeXN0ZW0gaWRlbnRpZmll ciIpOworCQllbHNlCisJCQlwZ19mYXRhbCgic3Vic2NyaWJlciBmYWlsZWQgdG8gY2hhbmdlIHN5 c3RlbSBpZGVudGlmaWVyOiBleGl0IGNvZGU6ICVkIiwgcmMpOworCX0KKworCXBnX2ZyZWUoY2Yp OworfQorCisvKgorICogQ3JlYXRlIHRoZSBwdWJsaWNhdGlvbnMgYW5kIHJlcGxpY2F0aW9uIHNs b3RzIGluIHByZXBhcmF0aW9uIGZvciBsb2dpY2FsCisgKiByZXBsaWNhdGlvbi4KKyAqLworc3Rh dGljIHZvaWQKK3NldHVwX3B1Ymxpc2hlcihzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykK K3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9kYnM7IGkrKykKKwl7CisJCVBHY29ubgkgICAq Y29ubjsKKwkJUEdyZXN1bHQgICAqcmVzOworCQljaGFyCQlwdWJuYW1lW05BTUVEQVRBTEVOXTsK KwkJY2hhcgkJcmVwbHNsb3RuYW1lW05BTUVEQVRBTEVOXTsKKworCQljb25uID0gY29ubmVjdF9k YXRhYmFzZShkYmluZm9baV0ucHViY29ubmluZm8sIHRydWUpOworCisJCXJlcyA9IFBRZXhlYyhj b25uLAorCQkJCQkgIlNFTEVDVCBvaWQgRlJPTSBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlICIKKwkJ CQkJICJXSEVSRSBkYXRuYW1lID0gcGdfY2F0YWxvZy5jdXJyZW50X2RhdGFiYXNlKCkiKTsKKwkJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCQl7CisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gZGF0YWJhc2UgT0lEOiAlcyIsCisJCQkJCQkgUFFy ZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRy dWUpOworCQl9CisKKwkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJCXsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IG9idGFpbiBkYXRhYmFzZSBPSUQ6IGdvdCAlZCByb3dzLCBleHBlY3Rl ZCAlZCByb3dzIiwKKwkJCQkJCSBQUW50dXBsZXMocmVzKSwgMSk7CisJCQlkaXNjb25uZWN0X2Rh dGFiYXNlKGNvbm4sIHRydWUpOworCQl9CisKKwkJLyogUmVtZW1iZXIgZGF0YWJhc2UgT0lEICov CisJCWRiaW5mb1tpXS5vaWQgPSBzdHJ0b3VsKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgTlVMTCwg MTApOworCisJCVBRY2xlYXIocmVzKTsKKworCQkvKgorCQkgKiBCdWlsZCB0aGUgcHVibGljYXRp b24gbmFtZS4gVGhlIG5hbWUgbXVzdCBub3QgZXhjZWVkIE5BTUVEQVRBTEVOIC0KKwkJICogMS4g VGhpcyBjdXJyZW50IHNjaGVtYSB1c2VzIGEgbWF4aW11bSBvZiAzMSBjaGFyYWN0ZXJzICgyMCAr IDEwICsKKwkJICogJ1wwJykuCisJCSAqLworCQlzbnByaW50ZihwdWJuYW1lLCBzaXplb2YocHVi bmFtZSksICJwZ19jcmVhdGVzdWJzY3JpYmVyXyV1IiwKKwkJCQkgZGJpbmZvW2ldLm9pZCk7CisJ CWRiaW5mb1tpXS5wdWJuYW1lID0gcGdfc3RyZHVwKHB1Ym5hbWUpOworCisJCS8qCisJCSAqIENy ZWF0ZSBwdWJsaWNhdGlvbiBvbiBwdWJsaXNoZXIuIFRoaXMgc3RlcCBzaG91bGQgYmUgZXhlY3V0 ZWQKKwkJICogKmJlZm9yZSogcHJvbW90aW5nIHRoZSBzdWJzY3JpYmVyIHRvIGF2b2lkIGFueSB0 cmFuc2FjdGlvbnMgYmV0d2VlbgorCQkgKiBjb25zaXN0ZW50IExTTiBhbmQgdGhlIG5ldyBwdWJs aWNhdGlvbiByb3dzIChzdWNoIHRyYW5zYWN0aW9ucworCQkgKiB3b3VsZG4ndCBzZWUgdGhlIG5l dyBwdWJsaWNhdGlvbiByb3dzIHJlc3VsdGluZyBpbiBhbiBlcnJvcikuCisJCSAqLworCQljcmVh dGVfcHVibGljYXRpb24oY29ubiwgJmRiaW5mb1tpXSk7CisKKwkJLyoKKwkJICogQnVpbGQgdGhl IHJlcGxpY2F0aW9uIHNsb3QgbmFtZS4gVGhlIG5hbWUgbXVzdCBub3QgZXhjZWVkCisJCSAqIE5B TUVEQVRBTEVOIC0gMS4gVGhpcyBjdXJyZW50IHNjaGVtYSB1c2VzIGEgbWF4aW11bSBvZiA0Mgor CQkgKiBjaGFyYWN0ZXJzICgyMCArIDEwICsgMSArIDEwICsgJ1wwJykuIFBJRCBpcyBpbmNsdWRl ZCB0byByZWR1Y2UgdGhlCisJCSAqIHByb2JhYmlsaXR5IG9mIGNvbGxpc2lvbi4gQnkgZGVmYXVs dCwgc3Vic2NyaXB0aW9uIG5hbWUgaXMgdXNlZCBhcworCQkgKiByZXBsaWNhdGlvbiBzbG90IG5h bWUuCisJCSAqLworCQlzbnByaW50ZihyZXBsc2xvdG5hbWUsIHNpemVvZihyZXBsc2xvdG5hbWUp LAorCQkJCSAicGdfY3JlYXRlc3Vic2NyaWJlcl8ldV8lZCIsCisJCQkJIGRiaW5mb1tpXS5vaWQs CisJCQkJIChpbnQpIGdldHBpZCgpKTsKKwkJZGJpbmZvW2ldLnN1Ym5hbWUgPSBwZ19zdHJkdXAo cmVwbHNsb3RuYW1lKTsKKworCQkvKiBDcmVhdGUgcmVwbGljYXRpb24gc2xvdCBvbiBwdWJsaXNo ZXIgKi8KKwkJaWYgKGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5m b1tpXSwgZmFsc2UpICE9IE5VTEwgfHwKKwkJCWRyeV9ydW4pCisJCQlwZ19sb2dfaW5mbygiY3Jl YXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIHB1Ymxpc2hlciIsCisJCQkJCQlyZXBsc2xv dG5hbWUpOworCQllbHNlCisJCQlleGl0KDEpOworCisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29u biwgZmFsc2UpOworCX0KK30KKworLyoKKyAqIElzIHJlY292ZXJ5IHN0aWxsIGluIHByb2dyZXNz PworICovCitzdGF0aWMgYm9vbAorc2VydmVyX2lzX2luX3JlY292ZXJ5KFBHY29ubiAqY29ubikK K3sKKwlQR3Jlc3VsdCAgICpyZXM7CisJaW50CQkJcmV0OworCisJcmVzID0gUFFleGVjKGNvbm4s ICJTRUxFQ1QgcGdfY2F0YWxvZy5wZ19pc19pbl9yZWNvdmVyeSgpIik7CisKKwlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBvYnRhaW4gcmVjb3ZlcnkgcHJvZ3Jlc3M6ICVzIiwKKwkJCQkJIFBRcmVzdWx0RXJy b3JNZXNzYWdlKHJlcykpOworCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCX0K KworCisJcmV0ID0gc3RyY21wKCJ0IiwgUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKKworCVBRY2xl YXIocmVzKTsKKworCXJldHVybiByZXQgPT0gMDsKK30KKworLyoKKyAqIElzIHRoZSBwcmltYXJ5 IHNlcnZlciByZWFkeSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbj8KKyAqCisgKiBYWFggRG9lcyBp dCBkaXNhbGxvdyBhIHN5bmNocm9ub3VzIHJlcGxpY2E/CisgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19wdWJsaXNoZXIoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCit7CisJUEdjb25uCSAg ICpjb25uOworCVBHcmVzdWx0ICAgKnJlczsKKwlib29sCQlmYWlsZWQgPSBmYWxzZTsKKworCWNo YXIJICAgKndhbF9sZXZlbDsKKwlpbnQJCQltYXhfcmVwc2xvdHM7CisJaW50CQkJY3VyX3JlcHNs b3RzOworCWludAkJCW1heF93YWxzZW5kZXJzOworCWludAkJCWN1cl93YWxzZW5kZXJzOworCisJ cGdfbG9nX2luZm8oImNoZWNraW5nIHNldHRpbmdzIG9uIHB1Ymxpc2hlciIpOworCisJY29ubiA9 IGNvbm5lY3RfZGF0YWJhc2UoZGJpbmZvWzBdLnB1YmNvbm5pbmZvLCB0cnVlKTsKKworCS8qCisJ ICogSWYgdGhlIHByaW1hcnkgc2VydmVyIGlzIGluIHJlY292ZXJ5IChpLmUuIGNhc2NhZGluZyBy ZXBsaWNhdGlvbiksCisJICogb2JqZWN0cyAocHVibGljYXRpb24pIGNhbm5vdCBiZSBjcmVhdGVk IGJlY2F1c2UgaXQgaXMgcmVhZCBvbmx5LgorCSAqLworCWlmIChzZXJ2ZXJfaXNfaW5fcmVjb3Zl cnkoY29ubikpCisJeworCQlwZ19sb2dfZXJyb3IoInByaW1hcnkgc2VydmVyIGNhbm5vdCBiZSBp biByZWNvdmVyeSIpOworCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCX0KKwor CS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisJICogTG9naWNhbCByZXBsaWNhdGlvbiByZXF1aXJlcyBhIGZl dyBwYXJhbWV0ZXJzIHRvIGJlIHNldCBvbiBwdWJsaXNoZXIuCisJICogU2luY2UgdGhlc2UgcGFy YW1ldGVycyBhcmUgbm90IGEgcmVxdWlyZW1lbnQgZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uLAor CSAqIHdlIHNob3VsZCBjaGVjayBpdCB0byBtYWtlIHN1cmUgaXQgd29uJ3QgZmFpbC4KKwkgKgor CSAqIC0gd2FsX2xldmVsID0gbG9naWNhbAorCSAqIC0gbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49 IGN1cnJlbnQgKyBudW1iZXIgb2YgZGJzIHRvIGJlIGNvbnZlcnRlZCArCisJICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgb25lIHRlbXBvcmFyeSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QK KwkgKiAtIG1heF93YWxfc2VuZGVycyA+PSBjdXJyZW50ICsgbnVtYmVyIG9mIGRicyB0byBiZSBj b252ZXJ0ZWQKKwkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqLworCXJlcyA9IFBRZXhlYyhjb25uLAor CQkJCSAiV0lUSCB3bCBBUyAiCisJCQkJICIoU0VMRUNUIHNldHRpbmcgQVMgd2FsbGV2ZWwgRlJP TSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzICIKKwkJCQkgIldIRVJFIG5hbWUgPSAnd2FsX2xldmVs JyksICIKKwkJCQkgInRvdGFsX21ycyBBUyAiCisJCQkJICIoU0VMRUNUIHNldHRpbmcgQVMgdG1y cyBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGluZ3MgIgorCQkJCSAiV0hFUkUgbmFtZSA9ICdtYXhf cmVwbGljYXRpb25fc2xvdHMnKSwgIgorCQkJCSAiY3VyX21ycyBBUyAiCisJCQkJICIoU0VMRUNU IGNvdW50KCopIEFTIGNtcnMgIgorCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9u X3Nsb3RzKSwgIgorCQkJCSAidG90YWxfbXdzIEFTICIKKwkJCQkgIihTRUxFQ1Qgc2V0dGluZyBB UyB0bXdzIEZST00gcGdfY2F0YWxvZy5wZ19zZXR0aW5ncyAiCisJCQkJICJXSEVSRSBuYW1lID0g J21heF93YWxfc2VuZGVycycpLCAiCisJCQkJICJjdXJfbXdzIEFTICIKKwkJCQkgIihTRUxFQ1Qg Y291bnQoKikgQVMgY213cyBGUk9NIHBnX2NhdGFsb2cucGdfc3RhdF9hY3Rpdml0eSAiCisJCQkJ ICJXSEVSRSBiYWNrZW5kX3R5cGUgPSAnd2Fsc2VuZGVyJykgIgorCQkJCSAiU0VMRUNUIHdhbGxl dmVsLCB0bXJzLCBjbXJzLCB0bXdzLCBjbXdzICIKKwkJCQkgIkZST00gd2wsIHRvdGFsX21ycywg Y3VyX21ycywgdG90YWxfbXdzLCBjdXJfbXdzIik7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVz KSAhPSBQR1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRh aW4gcHVibGlzaGVyIHNldHRpbmdzOiAlcyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShy ZXMpKTsKKwkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKKwl9CisKKwl3YWxfbGV2 ZWwgPSBzdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKKwltYXhfcmVwc2xvdHMgPSBhdG9p KFBRZ2V0dmFsdWUocmVzLCAwLCAxKSk7CisJY3VyX3JlcHNsb3RzID0gYXRvaShQUWdldHZhbHVl KHJlcywgMCwgMikpOworCW1heF93YWxzZW5kZXJzID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwg MykpOworCWN1cl93YWxzZW5kZXJzID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgNCkpOworCisJ UFFjbGVhcihyZXMpOworCisJcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IHdhbF9sZXZlbDogJXMi LCB3YWxfbGV2ZWwpOworCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBtYXhfcmVwbGljYXRpb25f c2xvdHM6ICVkIiwgbWF4X3JlcHNsb3RzKTsKKwlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogY3Vy cmVudCByZXBsaWNhdGlvbiBzbG90czogJWQiLCBjdXJfcmVwc2xvdHMpOworCXBnX2xvZ19kZWJ1 ZygicHVibGlzaGVyOiBtYXhfd2FsX3NlbmRlcnM6ICVkIiwgbWF4X3dhbHNlbmRlcnMpOworCXBn X2xvZ19kZWJ1ZygicHVibGlzaGVyOiBjdXJyZW50IHdhbCBzZW5kZXJzOiAlZCIsIGN1cl93YWxz ZW5kZXJzKTsKKworCS8qCisJICogSWYgc3RhbmRieSBzZXRzIHByaW1hcnlfc2xvdF9uYW1lLCBj aGVjayBpZiB0aGlzIHJlcGxpY2F0aW9uIHNsb3QgaXMgaW4KKwkgKiB1c2Ugb24gcHJpbWFyeSBm b3IgV0FMIHJldGVudGlvbiBwdXJwb3Nlcy4gVGhpcyByZXBsaWNhdGlvbiBzbG90IGhhcyBubwor CSAqIHVzZSBhZnRlciB0aGUgdHJhbnNmb3JtYXRpb24sIGhlbmNlLCBpdCB3aWxsIGJlIHJlbW92 ZWQgYXQgdGhlIGVuZCBvZgorCSAqIHRoaXMgcHJvY2Vzcy4KKwkgKi8KKwlpZiAocHJpbWFyeV9z bG90X25hbWUpCisJeworCQlQUUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwor CisJCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwKKwkJCQkJCSAgIlNFTEVDVCAxIEZST00gcGdfY2F0 YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyAiCisJCQkJCQkgICJXSEVSRSBhY3RpdmUgQU5EIHNs b3RfbmFtZSA9ICclcyciLAorCQkJCQkJICBwcmltYXJ5X3Nsb3RfbmFtZSk7CisKKwkJcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisKKwkJcmVzID0gUFFleGVjKGNv bm4sIHN0ci0+ZGF0YSk7CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExF U19PSykKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHJlcGxpY2F0aW9u IHNsb3QgaW5mb3JtYXRpb246ICVzIiwKKwkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMp KTsKKwkJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CisJCX0KKworCQlpZiAoUFFu dHVwbGVzKHJlcykgIT0gMSkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWlu IHJlcGxpY2F0aW9uIHNsb3QgaW5mb3JtYXRpb246IGdvdCAlZCByb3dzLCBleHBlY3RlZCAlZCBy b3ciLAorCQkJCQkJIFBRbnR1cGxlcyhyZXMpLCAxKTsKKwkJCWRpc2Nvbm5lY3RfZGF0YWJhc2Uo Y29ubiwgdHJ1ZSk7CisJCX0KKwkJZWxzZQorCQkJcGdfbG9nX2luZm8oInByaW1hcnkgaGFzIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCXByaW1hcnlfc2xvdF9uYW1lKTsKKworCQlQ UWNsZWFyKHJlcyk7CisJfQorCisJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBmYWxzZSk7CisK KwlpZiAoc3RyY21wKHdhbF9sZXZlbCwgImxvZ2ljYWwiKSAhPSAwKQorCXsKKwkJcGdfbG9nX2Vy cm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwiKTsKKwkJZmFpbGVk ID0gdHJ1ZTsKKwl9CisKKwkvKiBPbmUgYWRkaXRpb25hbCB0ZW1wb3JhcnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90ICovCisJaWYgKG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90cyA8IG51bV9k YnMgKyAxKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgJWQgcmVwbGlj YXRpb24gc2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCSBudW1fZGJzICsgMSwgbWF4 X3JlcHNsb3RzIC0gY3VyX3JlcHNsb3RzKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVy IGluY3JlYXNpbmcgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJ CQkgIGN1cl9yZXBzbG90cyArIG51bV9kYnMgKyAxKTsKKwkJZmFpbGVkID0gdHJ1ZTsKKwl9CisK KwlpZiAobWF4X3dhbHNlbmRlcnMgLSBjdXJfd2Fsc2VuZGVycyA8IG51bV9kYnMpCisJeworCQlw Z19sb2dfZXJyb3IoInB1Ymxpc2hlciByZXF1aXJlcyAlZCB3YWwgc2VuZGVyIHByb2Nlc3Nlcywg YnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJIG51bV9kYnMsIG1heF93YWxzZW5kZXJzIC0gY3Vy X3dhbHNlbmRlcnMpOworCQlwZ19sb2dfZXJyb3JfaGludCgiQ29uc2lkZXIgaW5jcmVhc2luZyBt YXhfd2FsX3NlbmRlcnMgdG8gYXQgbGVhc3QgJWQuIiwKKwkJCQkJCSAgY3VyX3dhbHNlbmRlcnMg KyBudW1fZGJzKTsKKwkJZmFpbGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAoZmFpbGVkKQorCQlleGl0 KDEpOworfQorCisvKgorICogSXMgdGhlIHN0YW5kYnkgc2VydmVyIHJlYWR5IGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uPworICoKKyAqIFhYWCBEb2VzIGl0IGRpc2FsbG93IGEgdGltZS1kZWxheWVk IHJlcGxpY2E/CisgKgorICogWFhYIEluIGEgY2FzY2FkZWQgcmVwbGljYXRpb24gc2NlbmFyaW8g KFAgLT4gUyAtPiBDKSwgaWYgdGhlIHRhcmdldCBzZXJ2ZXIKKyAqIGlzIFMsIGl0IGNhbm5vdCBk ZXRlY3QgdGhlcmUgaXMgYSByZXBsaWNhIChzZXJ2ZXIgQykgYmVjYXVzZSBzZXJ2ZXIgUyBzdGFy dHMKKyAqIGFjY2VwdGluZyBvbmx5IGxvY2FsIGNvbm5lY3Rpb25zIGFuZCBzZXJ2ZXIgQyBjYW5u b3QgY29ubmVjdCB0byBpdC4gSGVuY2UsCisgKiB0aGVyZSBpcyBub3QgcmVsaWFibGUgd2F5IHRv IHByb3ZpZGUgYSBzdWl0YWJsZSBlcnJvciBzYXlpbmcgdGhlIHNlcnZlciBDCisgKiB3aWxsIGJl IGJyb2tlbiBhdCB0aGUgZW5kIG9mIHRoaXMgcHJvY2VzcyAoZHVlIHRvIHBnX3Jlc2V0d2FsKS4K KyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3N1YnNjcmliZXIoc3RydWN0IExvZ2ljYWxSZXBJbmZv ICpkYmluZm8pCit7CisJUEdjb25uCSAgICpjb25uOworCVBHcmVzdWx0ICAgKnJlczsKKwlQUUV4 cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWJvb2wJCWZhaWxlZCA9IGZhbHNl OworCisJaW50CQkJbWF4X2xyd29ya2VyczsKKwlpbnQJCQltYXhfcmVwc2xvdHM7CisJaW50CQkJ bWF4X3dwcm9jczsKKworCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5ncyBvbiBzdWJzY3Jp YmVyIik7CisKKwljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0uc3ViY29ubmluZm8s IHRydWUpOworCisJLyogVGhlIHRhcmdldCBzZXJ2ZXIgbXVzdCBiZSBhIHN0YW5kYnkgKi8KKwlp ZiAoIXNlcnZlcl9pc19pbl9yZWNvdmVyeShjb25uKSkKKwl7CisJCXBnX2xvZ19lcnJvcigiVGhl IHRhcmdldCBzZXJ2ZXIgbXVzdCBiZSBhIHN0YW5kYnkiKTsKKwkJZGlzY29ubmVjdF9kYXRhYmFz ZShjb25uLCB0cnVlKTsKKwl9CisKKwkvKgorCSAqIFN1YnNjcmlwdGlvbnMgY2FuIG9ubHkgYmUg Y3JlYXRlZCBieSByb2xlcyB0aGF0IGhhdmUgdGhlIHByaXZpbGVnZXMgb2YKKwkgKiBwZ19jcmVh dGVfc3Vic2NyaXB0aW9uIHJvbGUgYW5kIENSRUFURSBwcml2aWxlZ2VzIG9uIHRoZSBzcGVjaWZp ZWQKKwkgKiBkYXRhYmFzZS4KKwkgKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsCisJCQkJCSAg IlNFTEVDVCBwZ19jYXRhbG9nLnBnX2hhc19yb2xlKGN1cnJlbnRfdXNlciwgJXUsICdNRU1CRVIn KSwgIgorCQkJCQkgICJwZ19jYXRhbG9nLmhhc19kYXRhYmFzZV9wcml2aWxlZ2UoY3VycmVudF91 c2VyLCAnJXMnLCAnQ1JFQVRFJyksICIKKwkJCQkJICAicGdfY2F0YWxvZy5oYXNfZnVuY3Rpb25f cHJpdmlsZWdlKGN1cnJlbnRfdXNlciwgJ3BnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fb3JpZ2lu X2FkdmFuY2UodGV4dCwgcGdfbHNuKScsICdFWEVDVVRFJykiLAorCQkJCQkgIFJPTEVfUEdfQ1JF QVRFX1NVQlNDUklQVElPTiwgZGJpbmZvWzBdLmRibmFtZSk7CisKKwlwZ19sb2dfZGVidWcoImNv bW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKworCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRh dGEpOworCisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCXsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIGFjY2VzcyBwcml2aWxlZ2UgaW5mb3Jt YXRpb246ICVzIiwKKwkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlkaXNjb25u ZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCX0KKworCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShy ZXMsIDAsIDApLCAidCIpICE9IDApCisJeworCQlwZ19sb2dfZXJyb3IoInBlcm1pc3Npb24gZGVu aWVkIHRvIGNyZWF0ZSBzdWJzY3JpcHRpb24iKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIk9ubHkg cm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZSBcIiVzXCIgcm9sZSBtYXkgY3JlYXRlIHN1YnNj cmlwdGlvbnMuIiwKKwkJCQkJCSAgInBnX2NyZWF0ZV9zdWJzY3JpcHRpb24iKTsKKwkJZmFpbGVk ID0gdHJ1ZTsKKwl9CisJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgMCwgMSksICJ0IikgIT0g MCkKKwl7CisJCXBnX2xvZ19lcnJvcigicGVybWlzc2lvbiBkZW5pZWQgZm9yIGRhdGFiYXNlICVz IiwgZGJpbmZvWzBdLmRibmFtZSk7CisJCWZhaWxlZCA9IHRydWU7CisJfQorCWlmIChzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIDAsIDIpLCAidCIpICE9IDApCisJeworCQlwZ19sb2dfZXJyb3IoInBl cm1pc3Npb24gZGVuaWVkIGZvciBmdW5jdGlvbiBcIiVzXCIiLAorCQkJCQkgInBnX2NhdGFsb2cu cGdfcmVwbGljYXRpb25fb3JpZ2luX2FkdmFuY2UodGV4dCwgcGdfbHNuKSIpOworCQlmYWlsZWQg PSB0cnVlOworCX0KKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihzdHIpOworCVBRY2xlYXIocmVzKTsK KworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICogTG9naWNhbCByZXBsaWNhdGlvbiByZXF1aXJlcyBh IGZldyBwYXJhbWV0ZXJzIHRvIGJlIHNldCBvbiBzdWJzY3JpYmVyLgorCSAqIFNpbmNlIHRoZXNl IHBhcmFtZXRlcnMgYXJlIG5vdCBhIHJlcXVpcmVtZW50IGZvciBwaHlzaWNhbCByZXBsaWNhdGlv biwKKwkgKiB3ZSBzaG91bGQgY2hlY2sgaXQgdG8gbWFrZSBzdXJlIGl0IHdvbid0IGZhaWwuCisJ ICoKKwkgKiAtIG1heF9yZXBsaWNhdGlvbl9zbG90cyA+PSBudW1iZXIgb2YgZGJzIHRvIGJlIGNv bnZlcnRlZAorCSAqIC0gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA+PSBudW1iZXIg b2YgZGJzIHRvIGJlIGNvbnZlcnRlZAorCSAqIC0gbWF4X3dvcmtlcl9wcm9jZXNzZXMgPj0gMSAr IG51bWJlciBvZiBkYnMgdG8gYmUgY29udmVydGVkCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgKi8K KwlyZXMgPSBQUWV4ZWMoY29ubiwKKwkJCQkgIlNFTEVDVCBzZXR0aW5nIEZST00gcGdfY2F0YWxv Zy5wZ19zZXR0aW5ncyBXSEVSRSBuYW1lIElOICgiCisJCQkJICInbWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2VycycsICIKKwkJCQkgIidtYXhfcmVwbGljYXRpb25fc2xvdHMnLCAiCisJCQkJ ICInbWF4X3dvcmtlcl9wcm9jZXNzZXMnLCAiCisJCQkJICIncHJpbWFyeV9zbG90X25hbWUnKSAi CisJCQkJICJPUkRFUiBCWSBuYW1lIik7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gc3Vi c2NyaWJlciBzZXR0aW5nczogJXMiLAorCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7 CisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CisJfQorCisJbWF4X2xyd29ya2Vy cyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKKwltYXhfcmVwc2xvdHMgPSBhdG9pKFBR Z2V0dmFsdWUocmVzLCAxLCAwKSk7CisJbWF4X3dwcm9jcyA9IGF0b2koUFFnZXR2YWx1ZShyZXMs IDIsIDApKTsKKwlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCAzLCAwKSwgIiIpICE9IDApCisJ CXByaW1hcnlfc2xvdF9uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCAzLCAwKSk7CisK KwlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnM6ICVkIiwKKwkJCQkgbWF4X2xyd29ya2Vycyk7CisJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVy OiBtYXhfcmVwbGljYXRpb25fc2xvdHM6ICVkIiwgbWF4X3JlcHNsb3RzKTsKKwlwZ19sb2dfZGVi dWcoInN1YnNjcmliZXI6IG1heF93b3JrZXJfcHJvY2Vzc2VzOiAlZCIsIG1heF93cHJvY3MpOwor CWlmIChwcmltYXJ5X3Nsb3RfbmFtZSkKKwkJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBwcmlt YXJ5X3Nsb3RfbmFtZTogJXMiLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CisKKwlQUWNsZWFyKHJlcyk7 CisKKwlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsKKworCWlmIChtYXhfcmVwc2xv dHMgPCBudW1fZGJzKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVzICVk IHJlcGxpY2F0aW9uIHNsb3RzLCBidXQgb25seSAlZCByZW1haW4iLAorCQkJCQkgbnVtX2Ricywg bWF4X3JlcHNsb3RzKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcg bWF4X3JlcGxpY2F0aW9uX3Nsb3RzIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJCQkgIG51bV9kYnMp OworCQlmYWlsZWQgPSB0cnVlOworCX0KKworCWlmIChtYXhfbHJ3b3JrZXJzIDwgbnVtX2RicykK Kwl7CisJCXBnX2xvZ19lcnJvcigic3Vic2NyaWJlciByZXF1aXJlcyAlZCBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlcnMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCSBudW1fZGJzLCBtYXhf bHJ3b3JrZXJzKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgbWF4 X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyB0byBhdCBsZWFzdCAlZC4iLAorCQkJCQkJICBu dW1fZGJzKTsKKwkJZmFpbGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAobWF4X3dwcm9jcyA8IG51bV9k YnMgKyAxKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVzICVkIHdvcmtl ciBwcm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCSBudW1fZGJzICsgMSwgbWF4 X3dwcm9jcyk7CisJCXBnX2xvZ19lcnJvcl9oaW50KCJDb25zaWRlciBpbmNyZWFzaW5nIG1heF93 b3JrZXJfcHJvY2Vzc2VzIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJCQkgIG51bV9kYnMgKyAxKTsK KwkJZmFpbGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAoZmFpbGVkKQorCQlleGl0KDEpOworfQorCisv KgorICogQ3JlYXRlIHRoZSBzdWJzY3JpcHRpb25zLCBhZGp1c3QgdGhlIGluaXRpYWwgbG9jYXRp b24gZm9yIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIGFuZCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv bnMuIFRoYXQncyB0aGUgbGFzdCBzdGVwIGZvciBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzZXR1 cC4KKyAqLworc3RhdGljIHZvaWQKK3NldHVwX3N1YnNjcmliZXIoc3RydWN0IExvZ2ljYWxSZXBJ bmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmNvbnNpc3RlbnRfbHNuKQoreworCWZvciAoaW50IGkg PSAwOyBpIDwgbnVtX2RiczsgaSsrKQorCXsKKwkJUEdjb25uCSAgICpjb25uOworCisJCS8qIENv bm5lY3QgdG8gc3Vic2NyaWJlci4gKi8KKwkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoZGJpbmZv W2ldLnN1YmNvbm5pbmZvLCB0cnVlKTsKKworCQkvKgorCQkgKiBTaW5jZSB0aGUgcHVibGljYXRp b24gd2FzIGNyZWF0ZWQgYmVmb3JlIHRoZSBjb25zaXN0ZW50IExTTiwgaXQgaXMKKwkJICogYXZh aWxhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHdoZW4gdGhlIHBoeXNpY2FsIHJlcGxpY2EgaXMgcHJv bW90ZWQuCisJCSAqIFJlbW92ZSBwdWJsaWNhdGlvbnMgZnJvbSB0aGUgc3Vic2NyaWJlciBiZWNh dXNlIGl0IGhhcyBubyB1c2UuCisJCSAqLworCQlkcm9wX3B1YmxpY2F0aW9uKGNvbm4sICZkYmlu Zm9baV0pOworCisJCWNyZWF0ZV9zdWJzY3JpcHRpb24oY29ubiwgJmRiaW5mb1tpXSk7CisKKwkJ LyogU2V0IHRoZSByZXBsaWNhdGlvbiBwcm9ncmVzcyB0byB0aGUgY29ycmVjdCBMU04gKi8KKwkJ c2V0X3JlcGxpY2F0aW9uX3Byb2dyZXNzKGNvbm4sICZkYmluZm9baV0sIGNvbnNpc3RlbnRfbHNu KTsKKworCQkvKiBFbmFibGUgc3Vic2NyaXB0aW9uICovCisJCWVuYWJsZV9zdWJzY3JpcHRpb24o Y29ubiwgJmRiaW5mb1tpXSk7CisKKwkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBmYWxzZSk7 CisJfQorfQorCisvKgorICogR2V0IGEgcmVwbGljYXRpb24gc3RhcnQgbG9jYXRpb24gYW5kIHdy aXRlIHRoZSByZXF1aXJlZCByZWNvdmVyeSBwYXJhbWV0ZXJzCisgKiBpbnRvIHRoZSBjb25maWd1 cmF0aW9uIGZpbGUuIFJldHVybnMgdGhlIHJlcGxpY2F0aW9uIHN0YXJ0IGxvY2F0aW9uIHRoYXQg aXMKKyAqIHVzZWQgdG8gYWRqdXN0IHRoZSBzdWJzY3JpcHRpb25zIChzZWUgc2V0X3JlcGxpY2F0 aW9uX3Byb2dyZXNzKS4KKyAqLworc3RhdGljIGNoYXIgKgorc2V0dXBfcmVjb3Zlcnkoc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNoYXIgKmRhdGFkaXIpCit7CisJY2hhcgkgICAqY29u c2lzdGVudF9sc247CisJUEdjb25uCSAgICpjb25uOworCVBRRXhwQnVmZmVyIHJlY292ZXJ5Y29u ZmNvbnRlbnRzOworCisJLyoKKwkgKiBEZXNwaXRlIG9mIHRoZSByZWNvdmVyeSBwYXJhbWV0ZXJz IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgc3Vic2NyaWJlciwKKwkgKiB1c2UgYSBwdWJsaXNoZXIg Y29ubmVjdGlvbi4gVGhlIHByaW1hcnlfY29ubmluZm8gaXMgZ2VuZXJhdGVkIHVzaW5nIHRoZQor CSAqIGNvbm5lY3Rpb24gc2V0dGluZ3MuCisJICovCisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2Uo ZGJpbmZvWzBdLnB1YmNvbm5pbmZvLCB0cnVlKTsKKworCS8qCisJICogV3JpdGUgcmVjb3Zlcnkg cGFyYW1ldGVycy4KKwkgKgorCSAqIERlc3BpdGUgb2YgdGhlIHJlY292ZXJ5IHBhcmFtZXRlcnMg d2lsbCBiZSB3cml0dGVuIHRvIHRoZSBzdWJzY3JpYmVyLAorCSAqIHVzZSBhIHB1Ymxpc2hlciBj b25uZWN0aW9uIGZvciB0aGUgZm9sbG93aW5nIHJlY292ZXJ5IGZ1bmN0aW9ucy4gVGhlCisJICog Y29ubmVjdGlvbiBpcyBvbmx5IHVzZWQgdG8gY2hlY2sgdGhlIGN1cnJlbnQgc2VydmVyIHZlcnNp b24gKHBoeXNpY2FsCisJICogcmVwbGljYSwgc2FtZSBzZXJ2ZXIgdmVyc2lvbikuIFRoZSBzdWJz Y3JpYmVyIGlzIG5vdCBydW5uaW5nIHlldC4gSW4KKwkgKiBkcnkgcnVuIG1vZGUsIHRoZSByZWNv dmVyeSBwYXJhbWV0ZXJzICp3b24ndCogYmUgd3JpdHRlbi4gQW4gaW52YWxpZAorCSAqIExTTiBp cyB1c2VkIGZvciBwcmludGluZyBwdXJwb3Nlcy4gQWRkaXRpb25hbCByZWNvdmVyeSBwYXJhbWV0 ZXJzIGFyZQorCSAqIGFkZGVkIGhlcmUuIEl0IGF2b2lkcyB1bmV4cGVjdGVkIGJlaGF2aW9yIHN1 Y2ggYXMgZW5kIG9mIHJlY292ZXJ5IGFzCisJICogc29vbiBhcyBhIGNvbnNpc3RlbnQgc3RhdGUg aXMgcmVhY2hlZCAocmVjb3ZlcnlfdGFyZ2V0KSBhbmQgZmFpbHVyZSBkdWUKKwkgKiB0byBtdWx0 aXBsZSByZWNvdmVyeSB0YXJnZXRzIChuYW1lLCB0aW1lLCB4aWQsIExTTikuCisJICovCisJcmVj b3Zlcnljb25mY29udGVudHMgPSBHZW5lcmF0ZVJlY292ZXJ5Q29uZmlnKGNvbm4sIE5VTEwpOwor CWFwcGVuZFBRRXhwQnVmZmVyKHJlY292ZXJ5Y29uZmNvbnRlbnRzLCAicmVjb3ZlcnlfdGFyZ2V0 ID0gJydcbiIpOworCWFwcGVuZFBRRXhwQnVmZmVyKHJlY292ZXJ5Y29uZmNvbnRlbnRzLAorCQkJ CQkgICJyZWNvdmVyeV90YXJnZXRfdGltZWxpbmUgPSAnbGF0ZXN0J1xuIik7CisJYXBwZW5kUFFF eHBCdWZmZXIocmVjb3Zlcnljb25mY29udGVudHMsCisJCQkJCSAgInJlY292ZXJ5X3RhcmdldF9p bmNsdXNpdmUgPSB0cnVlXG4iKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250 ZW50cywKKwkJCQkJICAicmVjb3ZlcnlfdGFyZ2V0X2FjdGlvbiA9IHByb21vdGVcbiIpOworCWFw cGVuZFBRRXhwQnVmZmVyKHJlY292ZXJ5Y29uZmNvbnRlbnRzLCAicmVjb3ZlcnlfdGFyZ2V0X25h bWUgPSAnJ1xuIik7CisJYXBwZW5kUFFFeHBCdWZmZXIocmVjb3Zlcnljb25mY29udGVudHMsICJy ZWNvdmVyeV90YXJnZXRfdGltZSA9ICcnXG4iKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVy eWNvbmZjb250ZW50cywgInJlY292ZXJ5X3RhcmdldF94aWQgPSAnJ1xuIik7CisKKwlpZiAoZHJ5 X3J1bikKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHJlY292ZXJ5Y29uZmNvbnRlbnRzLCAiIyBk cnkgcnVuIG1vZGUiKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocmVjb3Zlcnljb25mY29udGVudHMs CisJCQkJCQkgICJyZWNvdmVyeV90YXJnZXRfbHNuID0gJyVYLyVYJ1xuIiwKKwkJCQkJCSAgTFNO X0ZPUk1BVF9BUkdTKChYTG9nUmVjUHRyKSBJbnZhbGlkWExvZ1JlY1B0cikpOworCX0KKwllbHNl CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250ZW50cywgInJlY292ZXJ5 X3RhcmdldF9sc24gPSAnJXMnXG4iLAorCQkJCQkJICBjb25zaXN0ZW50X2xzbik7CisJCVdyaXRl UmVjb3ZlcnlDb25maWcoY29ubiwgZGF0YWRpciwgcmVjb3Zlcnljb25mY29udGVudHMpOworCX0K KwlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsKKworCXBnX2xvZ19kZWJ1ZygicmVj b3ZlcnkgcGFyYW1ldGVyczpcbiVzIiwgcmVjb3Zlcnljb25mY29udGVudHMtPmRhdGEpOworCisJ cmV0dXJuIGNvbnNpc3RlbnRfbHNuOworfQorCisvKgorICogRHJvcCBwaHlzaWNhbCByZXBsaWNh dGlvbiBzbG90IG9uIHByaW1hcnkgaWYgdGhlIHN0YW5kYnkgd2FzIHVzaW5nIGl0LiBBZnRlcgor ICogdGhlIHRyYW5zZm9ybWF0aW9uLCBpdCBoYXMgbm8gdXNlLgorICoKKyAqIFhYWCB3ZSBtaWdo dCBub3QgZmFpbCBoZXJlLiBJbnN0ZWFkLCB3ZSBwcm92aWRlIGEgd2FybmluZyBzbyB0aGUgdXNl cgorICogZXZlbnR1YWxseSBkcm9wcyB0aGlzIHJlcGxpY2F0aW9uIHNsb3QgbGF0ZXIuCisgKi8K K3N0YXRpYyB2b2lkCitkcm9wX3ByaW1hcnlfcmVwbGljYXRpb25fc2xvdChzdHJ1Y3QgTG9naWNh bFJlcEluZm8gKmRiaW5mbywgY2hhciAqc2xvdG5hbWUpCit7CisJUEdjb25uCSAgICpjb25uOwor CisJLyogUmVwbGljYXRpb24gc2xvdCBkb2VzIG5vdCBleGlzdCwgZG8gbm90aGluZyAqLworCWlm ICghcHJpbWFyeV9zbG90X25hbWUpCisJCXJldHVybjsKKworCWNvbm4gPSBjb25uZWN0X2RhdGFi YXNlKGRiaW5mb1swXS5wdWJjb25uaW5mbywgZmFsc2UpOworCWlmIChjb25uICE9IE5VTEwpCisJ eworCQlkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1swXSwgc2xvdG5hbWUpOwor CQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsKKwl9CisJZWxzZQorCXsKKwkJcGdf bG9nX3dhcm5pbmcoImNvdWxkIG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIHBy aW1hcnkiLAorCQkJCQkgICBzbG90bmFtZSk7CisJCXBnX2xvZ193YXJuaW5nX2hpbnQoIkRyb3Ag dGhpcyByZXBsaWNhdGlvbiBzbG90IHNvb24gdG8gYXZvaWQgcmV0ZW50aW9uIG9mIFdBTCBmaWxl cy4iKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg YW5kIHJldHVybnMgYSBMU04uCisgKgorICogQ3JlYXRlUmVwbGljYXRpb25TbG90KCkgaXMgbm90 IHVzZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIHRoZSBvbmUtcm93CisgKiByZXN1bHQg c2V0IHRoYXQgY29udGFpbnMgdGhlIExTTi4KKyAqLworc3RhdGljIGNoYXIgKgorY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvLAorCQkJCQkJCQlib29sIHRlbXBvcmFyeSkKK3sKKwlQUUV4cEJ1ZmZlciBzdHIg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBHcmVzdWx0ICAgKnJlcyA9IE5VTEw7CisJY2hhcgkJ c2xvdF9uYW1lW05BTUVEQVRBTEVOXTsKKwljaGFyCSAgICpsc24gPSBOVUxMOworCisJQXNzZXJ0 KGNvbm4gIT0gTlVMTCk7CisKKwkvKiBUaGlzIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IGlz IG9ubHkgdXNlZCBmb3IgY2F0Y2h1cCBwdXJwb3NlcyAqLworCWlmICh0ZW1wb3JhcnkpCisJewor CQlzbnByaW50ZihzbG90X25hbWUsIE5BTUVEQVRBTEVOLCAicGdfY3JlYXRlc3Vic2NyaWJlcl8l ZF9zdGFydHBvaW50IiwKKwkJCQkgKGludCkgZ2V0cGlkKCkpOworCX0KKwllbHNlCisJCXNucHJp bnRmKHNsb3RfbmFtZSwgTkFNRURBVEFMRU4sICIlcyIsIGRiaW5mby0+c3VibmFtZSk7CisKKwlw Z19sb2dfaW5mbygiY3JlYXRpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFi YXNlIFwiJXNcIiIsCisJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CisKKwlhcHBlbmRQ UUV4cEJ1ZmZlcihzdHIsCisJCQkJCSAgIlNFTEVDVCBsc24gRlJPTSBwZ19jYXRhbG9nLnBnX2Ny ZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyVzJywgJyVzJywgJXMsIGZhbHNlLCBmYWxz ZSkiLAorCQkJCQkgIHNsb3RfbmFtZSwgInBnb3V0cHV0IiwgdGVtcG9yYXJ5ID8gInRydWUiIDog ImZhbHNlIik7CisKKwlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsK KworCWlmICghZHJ5X3J1bikKKwl7CisJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwor CQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvbiBk YXRhYmFzZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lLAor CQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcmV0dXJuIE5VTEw7CisJCX0K KworCQlsc24gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKKwkJUFFjbGVhcihy ZXMpOworCX0KKworCS8qIEZvciBjbGVhbnVwIHB1cnBvc2VzICovCisJaWYgKCF0ZW1wb3Jhcnkp CisJCWRiaW5mby0+bWFkZV9yZXBsc2xvdCA9IHRydWU7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIo c3RyKTsKKworCXJldHVybiBsc247Cit9CisKK3N0YXRpYyB2b2lkCitkcm9wX3JlcGxpY2F0aW9u X3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKKwkJCQkJ ICBjb25zdCBjaGFyICpzbG90X25hbWUpCit7CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsK KworCXBnX2xvZ19pbmZvKCJkcm9wcGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24g ZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQlzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKworCWFw cGVuZFBRRXhwQnVmZmVyKHN0ciwgIlNFTEVDVCBwZ19jYXRhbG9nLnBnX2Ryb3BfcmVwbGljYXRp b25fc2xvdCgnJXMnKSIsIHNsb3RfbmFtZSk7CisKKwlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6 ICVzIiwgc3RyLT5kYXRhKTsKKworCWlmICghZHJ5X3J1bikKKwl7CisJCXJlcyA9IFBRZXhlYyhj b25uLCBzdHItPmRhdGEpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBM RVNfT0spCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRyb3AgcmVwbGljYXRpb24g c2xvdCBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJCQkJCQkgc2xvdF9uYW1lLCBk YmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlkYmluZm8tPm1h ZGVfcmVwbHNsb3QgPSBmYWxzZTsJLyogZG9uJ3QgdHJ5IGFnYWluLiAqLworCQl9CisKKwkJUFFj bGVhcihyZXMpOworCX0KKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihzdHIpOworfQorCisvKgorICog UmVwb3J0cyBhIHN1aXRhYmxlIG1lc3NhZ2UgaWYgcGdfY3RsIGZhaWxzLgorICovCitzdGF0aWMg dm9pZAorcGdfY3RsX3N0YXR1cyhjb25zdCBjaGFyICpwZ19jdGxfY21kLCBpbnQgcmMpCit7CisJ aWYgKHJjICE9IDApCisJeworCQlpZiAoV0lGRVhJVEVEKHJjKSkKKwkJeworCQkJcGdfbG9nX2Vy cm9yKCJwZ19jdGwgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkIiwgV0VYSVRTVEFUVVMocmMpKTsK KwkJfQorCQllbHNlIGlmIChXSUZTSUdOQUxFRChyYykpCisJCXsKKyNpZiBkZWZpbmVkKFdJTjMy KQorCQkJcGdfbG9nX2Vycm9yKCJwZ19jdGwgd2FzIHRlcm1pbmF0ZWQgYnkgZXhjZXB0aW9uIDB4 JVgiLAorCQkJCQkJIFdURVJNU0lHKHJjKSk7CisJCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJTZWUg QyBpbmNsdWRlIGZpbGUgXCJudHN0YXR1cy5oXCIgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGhl eGFkZWNpbWFsIHZhbHVlLiIpOworI2Vsc2UKKwkJCXBnX2xvZ19lcnJvcigicGdfY3RsIHdhcyB0 ZXJtaW5hdGVkIGJ5IHNpZ25hbCAlZDogJXMiLAorCQkJCQkJIFdURVJNU0lHKHJjKSwgcGdfc3Ry c2lnbmFsKFdURVJNU0lHKHJjKSkpOworI2VuZGlmCisJCX0KKwkJZWxzZQorCQl7CisJCQlwZ19s b2dfZXJyb3IoInBnX2N0bCBleGl0ZWQgd2l0aCB1bnJlY29nbml6ZWQgc3RhdHVzICVkIiwgcmMp OworCQl9CisKKwkJcGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIGZhaWxlZCBjb21tYW5kIHdhczog JXMiLCBwZ19jdGxfY21kKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitzdGFy dF9zdGFuZGJ5X3NlcnZlcihzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCwgY29u c3QgY2hhciAqcGdfY3RsX3BhdGgsCisJCQkJCSBib29sIHdpdGhfb3B0aW9ucykKK3sKKwlQUUV4 cEJ1ZmZlciBwZ19jdGxfY21kID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwljaGFyCQlzb2NrZXRf c3RyaW5nW01BWFBHUEFUSCArIDIwMF07CisJaW50CQkJcmM7CisKKwlzb2NrZXRfc3RyaW5nWzBd ID0gJ1wwJzsKKworI2lmICFkZWZpbmVkKFdJTjMyKQorCisJLyoKKwkgKiBBbiBlbXB0eSBsaXN0 ZW5fYWRkcmVzc2VzIGxpc3QgbWVhbnMgdGhlIHNlcnZlciBkb2VzIG5vdCBsaXN0ZW4gb24gYW55 CisJICogSVAgaW50ZXJmYWNlczsgb25seSBVbml4LWRvbWFpbiBzb2NrZXRzIGNhbiBiZSB1c2Vk IHRvIGNvbm5lY3QgdG8gdGhlCisJICogc2VydmVyLiBQcmV2ZW50IGV4dGVybmFsIGNvbm5lY3Rp b25zIHRvIG1pbmltaXplIHRoZSBjaGFuY2Ugb2YgZmFpbHVyZS4KKwkgKi8KKwlzdHJjYXQoc29j a2V0X3N0cmluZywKKwkJICAgIiAtYyBsaXN0ZW5fYWRkcmVzc2VzPScnIC1jIHVuaXhfc29ja2V0 X3Blcm1pc3Npb25zPTA3MDAiKTsKKworCWlmIChvcHQtPnNvY2tldF9kaXIpCisJCXNucHJpbnRm KHNvY2tldF9zdHJpbmcgKyBzdHJsZW4oc29ja2V0X3N0cmluZyksCisJCQkJIHNpemVvZihzb2Nr ZXRfc3RyaW5nKSAtIHN0cmxlbihzb2NrZXRfc3RyaW5nKSwKKwkJCQkgIiAtYyB1bml4X3NvY2tl dF9kaXJlY3Rvcmllcz0nJXMnIiwKKwkJCQkgb3B0LT5zb2NrZXRfZGlyKTsKKyNlbmRpZgorCisJ YXBwZW5kUFFFeHBCdWZmZXIocGdfY3RsX2NtZCwgIlwiJXNcIiBzdGFydCAtRCBcIiVzXCIgLXMi LAorCQkJCQkgIHBnX2N0bF9wYXRoLCBvcHQtPnN1YnNjcmliZXJfZGlyKTsKKwlpZiAod2l0aF9v cHRpb25zKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1vIFwiLXAgJXUlc1wi IiwKKwkJCQkJCSAgb3B0LT5zdWJfcG9ydCwgc29ja2V0X3N0cmluZyk7CisJcGdfbG9nX2RlYnVn KCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kLT5kYXRhKTsKKwlyYyA9IHN5c3Rl bShwZ19jdGxfY21kLT5kYXRhKTsKKwlwZ19jdGxfc3RhdHVzKHBnX2N0bF9jbWQtPmRhdGEsIHJj KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocGdfY3RsX2NtZCk7CisJcGdfbG9nX2luZm8oInNlcnZl ciB3YXMgc3RhcnRlZCIpOworfQorCitzdGF0aWMgdm9pZAorc3RvcF9zdGFuZGJ5X3NlcnZlcihj b25zdCBjaGFyICpwZ19jdGxfcGF0aCwgY29uc3QgY2hhciAqZGF0YWRpcikKK3sKKwljaGFyCSAg ICpwZ19jdGxfY21kOworCWludAkJCXJjOworCisJcGdfY3RsX2NtZCA9IHBzcHJpbnRmKCJcIiVz XCIgc3RvcCAtRCBcIiVzXCIgLXMiLCBwZ19jdGxfcGF0aCwKKwkJCQkJCSAgZGF0YWRpcik7CisJ cGdfbG9nX2RlYnVnKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kKTsKKwlyYyA9 IHN5c3RlbShwZ19jdGxfY21kKTsKKwlwZ19jdGxfc3RhdHVzKHBnX2N0bF9jbWQsIHJjKTsKKwlw Z19sb2dfaW5mbygic2VydmVyIHdhcyBzdG9wcGVkIik7Cit9CisKKy8qCisgKiBSZXR1cm5zIGFm dGVyIHRoZSBzZXJ2ZXIgZmluaXNoZXMgdGhlIHJlY292ZXJ5IHByb2Nlc3MuCisgKgorICogSWYg cmVjb3ZlcnlfdGltZW91dCBvcHRpb24gaXMgc2V0LCB0ZXJtaW5hdGUgYWJub3JtYWxseSB3aXRo b3V0IGZpbmlzaGluZworICogdGhlIHJlY292ZXJ5IHByb2Nlc3MuIEJ5IGRlZmF1bHQsIGl0IHdh aXRzIGZvcmV2ZXIuCisgKi8KK3N0YXRpYyB2b2lkCit3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29u c3QgY2hhciAqY29ubmluZm8sIGNvbnN0IGNoYXIgKnBnX2N0bF9wYXRoLAorCQkJCQkgIHN0cnVj dCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0KQoreworCVBHY29ubgkgICAqY29ubjsKKwlp bnQJCQlzdGF0dXMgPSBQT1NUTUFTVEVSX1NUSUxMX1NUQVJUSU5HOworCWludAkJCXRpbWVyID0g MDsKKwlpbnQJCQljb3VudCA9IDA7CQkvKiBudW1iZXIgb2YgY29uc2VjdXRpdmUgY29ubmVjdGlv biBhdHRlbXB0cyAqLworCisjZGVmaW5lIE5VTV9DT05OX0FUVEVNUFRTCTUKKworCXBnX2xvZ19p bmZvKCJ3YWl0aW5nIGZvciB0aGUgdGFyZ2V0IHNlcnZlciB0byByZWFjaCB0aGUgY29uc2lzdGVu dCBzdGF0ZSIpOworCisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29ubmluZm8sIHRydWUpOwor CisJZm9yICg7OykKKwl7CisJCVBHcmVzdWx0ICAgKnJlczsKKwkJYm9vbAkJaW5fcmVjb3Zlcnkg PSBzZXJ2ZXJfaXNfaW5fcmVjb3ZlcnkoY29ubik7CisKKwkJLyoKKwkJICogRG9lcyB0aGUgcmVj b3ZlcnkgcHJvY2VzcyBmaW5pc2g/IEluIGRyeSBydW4gbW9kZSwgdGhlcmUgaXMgbm8KKwkJICog cmVjb3ZlcnkgbW9kZS4gQmFpbCBvdXQgYXMgdGhlIHJlY292ZXJ5IHByb2Nlc3MgaGFzIGVuZGVk LgorCQkgKi8KKwkJaWYgKCFpbl9yZWNvdmVyeSB8fCBkcnlfcnVuKQorCQl7CisJCQlzdGF0dXMg PSBQT1NUTUFTVEVSX1JFQURZOworCQkJcmVjb3ZlcnlfZW5kZWQgPSB0cnVlOworCQkJYnJlYWs7 CisJCX0KKworCQkvKgorCQkgKiBJZiBpdCBpcyBzdGlsbCBpbiByZWNvdmVyeSwgbWFrZSBzdXJl IHRoZSB0YXJnZXQgc2VydmVyIGlzCisJCSAqIGNvbm5lY3RlZCB0byB0aGUgcHJpbWFyeSBzbyBp dCBjYW4gcmVjZWl2ZSB0aGUgcmVxdWlyZWQgV0FMIHRvCisJCSAqIGZpbmlzaCB0aGUgcmVjb3Zl cnkgcHJvY2Vzcy4gSWYgaXQgaXMgZGlzY29ubmVjdGVkIHRyeQorCQkgKiBOVU1fQ09OTl9BVFRF TVBUUyBpbiBhIHJvdyBhbmQgYmFpbCBvdXQgaWYgbm90IHN1Y2NlZWQuCisJCSAqLworCQlyZXMg PSBQUWV4ZWMoY29ubiwKKwkJCQkJICJTRUxFQ1QgMSBGUk9NIHBnX2NhdGFsb2cucGdfc3RhdF93 YWxfcmVjZWl2ZXIiKTsKKwkJaWYgKFBRbnR1cGxlcyhyZXMpID09IDApCisJCXsKKwkJCWlmICgr K2NvdW50ID4gTlVNX0NPTk5fQVRURU1QVFMpCisJCQl7CisJCQkJc3RvcF9zdGFuZGJ5X3NlcnZl cihwZ19jdGxfcGF0aCwgb3B0LT5zdWJzY3JpYmVyX2Rpcik7CisJCQkJcGdfbG9nX2Vycm9yKCJz dGFuZGJ5IHNlcnZlciBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgcHJpbWFyeSIpOworCQkJCWJyZWFr OworCQkJfQorCQl9CisJCWVsc2UKKwkJCWNvdW50ID0gMDsJCQkvKiByZXNldCBjb3VudGVyIGlm IGl0IGNvbm5lY3RzIGFnYWluICovCisKKwkJUFFjbGVhcihyZXMpOworCisJCS8qIEJhaWwgb3V0 IGFmdGVyIHJlY292ZXJ5X3RpbWVvdXQgc2Vjb25kcyBpZiB0aGlzIG9wdGlvbiBpcyBzZXQgKi8K KwkJaWYgKG9wdC0+cmVjb3ZlcnlfdGltZW91dCA+IDAgJiYgdGltZXIgPj0gb3B0LT5yZWNvdmVy eV90aW1lb3V0KQorCQl7CisJCQlzdG9wX3N0YW5kYnlfc2VydmVyKHBnX2N0bF9wYXRoLCBvcHQt PnN1YnNjcmliZXJfZGlyKTsKKwkJCXBnX2xvZ19lcnJvcigicmVjb3ZlcnkgdGltZWQgb3V0Iik7 CisJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCQl9CisKKwkJLyogS2VlcCB3 YWl0aW5nICovCisJCXBnX3VzbGVlcChXQUlUX0lOVEVSVkFMICogVVNFQ19QRVJfU0VDKTsKKwor CQl0aW1lciArPSBXQUlUX0lOVEVSVkFMOworCX0KKworCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29u biwgZmFsc2UpOworCisJaWYgKHN0YXR1cyA9PSBQT1NUTUFTVEVSX1NUSUxMX1NUQVJUSU5HKQor CQlwZ19mYXRhbCgic2VydmVyIGRpZCBub3QgZW5kIHJlY292ZXJ5Iik7CisKKwlwZ19sb2dfaW5m bygidGFyZ2V0IHNlcnZlciByZWFjaGVkIHRoZSBjb25zaXN0ZW50IHN0YXRlIik7CisJcGdfbG9n X2luZm9faGludCgiSWYgcGdfY3JlYXRlc3Vic2NyaWJlciBmYWlscyBhZnRlciB0aGlzIHBvaW50 LCAiCisJCQkJCSAieW91IG11c3QgcmVjcmVhdGUgdGhlIHBoeXNpY2FsIHJlcGxpY2EgYmVmb3Jl IGNvbnRpbnVpbmcuIik7Cit9CisKKy8qCisgKiBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IGlu Y2x1ZGVzIGFsbCB0YWJsZXMgaW4gdGhlIGRhdGFiYXNlLgorICovCitzdGF0aWMgdm9pZAorY3Jl YXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmlu Zm8pCit7CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3Vs dCAgICpyZXM7CisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsKKworCS8qIENoZWNrIGlmIHRoZSBw dWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cyAqLworCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwKKwkJ CQkJICAiU0VMRUNUIDEgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uICIKKwkJCQkJICAi V0hFUkUgcHVibmFtZSA9ICclcyciLAorCQkJCQkgIGRiaW5mby0+cHVibmFtZSk7CisJcmVzID0g UFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfVFVQTEVTX09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHB1Ymxp Y2F0aW9uIGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMp KTsKKwkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKKwl9CisKKwlpZiAoUFFudHVw bGVzKHJlcykgPT0gMSkKKwl7CisJCS8qCisJCSAqIFVuZm9ydHVuYXRlbHksIGlmIGl0IHJlYWNo ZXMgdGhpcyBjb2RlIHBhdGgsIGl0IHdpbGwgYWx3YXlzIGZhaWwKKwkJICogKHVubGVzcyB5b3Ug ZGVjaWRlIHRvIGNoYW5nZSB0aGUgZXhpc3RpbmcgcHVibGljYXRpb24gbmFtZSkuIFRoYXQncwor CQkgKiBiYWQgYnV0IGl0IGlzIHZlcnkgdW5saWtlbHkgdGhhdCB0aGUgdXNlciB3aWxsIGNob29z ZSBhIG5hbWUgd2l0aAorCQkgKiBwZ19jcmVhdGVzdWJzY3JpYmVyXyBwcmVmaXggZm9sbG93ZWQg YnkgdGhlIGV4YWN0IGRhdGFiYXNlIG9pZC4KKwkJICovCisJCXBnX2xvZ19lcnJvcigicHVibGlj YXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgZGJpbmZvLT5wdWJuYW1lKTsKKwkJcGdfbG9n X2Vycm9yX2hpbnQoIkNvbnNpZGVyIHJlbmFtaW5nIHRoaXMgcHVibGljYXRpb24gYmVmb3JlIGNv bnRpbnVpbmcuIik7CisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CisJfQorCisJ UFFjbGVhcihyZXMpOworCXJlc2V0UFFFeHBCdWZmZXIoc3RyKTsKKworCXBnX2xvZ19pbmZvKCJj cmVhdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQlkYmlu Zm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwg IkNSRUFURSBQVUJMSUNBVElPTiAlcyBGT1IgQUxMIFRBQkxFUyIsCisJCQkJCSAgZGJpbmZvLT5w dWJuYW1lKTsKKworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOwor CisJaWYgKCFkcnlfcnVuKQorCXsKKwkJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CisJ CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXsKKwkJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBwdWJsaWNhdGlvbiBcIiVzXCIgb24gZGF0YWJh c2UgXCIlc1wiOiAlcyIsCisJCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwg UFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4s IHRydWUpOworCQl9CisJCVBRY2xlYXIocmVzKTsKKwl9CisKKwkvKiBGb3IgY2xlYW51cCBwdXJw b3NlcyAqLworCWRiaW5mby0+bWFkZV9wdWJsaWNhdGlvbiA9IHRydWU7CisKKwlkZXN0cm95UFFF eHBCdWZmZXIoc3RyKTsKK30KKworLyoKKyAqIFJlbW92ZSBwdWJsaWNhdGlvbiBpZiBpdCBjb3Vs ZG4ndCBmaW5pc2ggYWxsIHN0ZXBzLgorICovCitzdGF0aWMgdm9pZAorZHJvcF9wdWJsaWNhdGlv bihQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQoreworCVBRRXhw QnVmZmVyIHN0ciA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCisJ QXNzZXJ0KGNvbm4gIT0gTlVMTCk7CisKKwlwZ19sb2dfaW5mbygiZHJvcHBpbmcgcHVibGljYXRp b24gXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmlu Zm8tPmRibmFtZSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJEUk9QIFBVQkxJQ0FUSU9O ICVzIiwgZGJpbmZvLT5wdWJuYW1lKTsKKworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMi LCBzdHItPmRhdGEpOworCisJaWYgKCFkcnlfcnVuKQorCXsKKwkJcmVzID0gUFFleGVjKGNvbm4s IHN0ci0+ZGF0YSk7CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRf T0spCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRyb3AgcHVibGljYXRpb24gXCIl c1wiIG9uIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJIGRiaW5mby0+cHVibmFtZSwgZGJp bmZvLT5kYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJZGJpbmZvLT5tYWRl X3B1YmxpY2F0aW9uID0gZmFsc2U7CS8qIGRvbid0IHRyeSBhZ2Fpbi4gKi8KKworCQkJLyoKKwkJ CSAqIERvbid0IGRpc2Nvbm5lY3QgYW5kIGV4aXQgaGVyZS4gVGhpcyByb3V0aW5lIGlzIHVzZWQg YnkgcHJpbWFyeQorCQkJICogKGNsZWFudXAgcHVibGljYXRpb24gLyByZXBsaWNhdGlvbiBzbG90 IGR1ZSB0byBhbiBlcnJvcikgYW5kCisJCQkgKiBzdWJzY3JpYmVyIChyZW1vdmUgdGhlIHJlcGxp Y2F0ZWQgcHVibGljYXRpb25zKS4gSW4gYm90aCBjYXNlcywKKwkJCSAqIGl0IGNhbiBjb250aW51 ZSBhbmQgcHJvdmlkZSBpbnN0cnVjdGlvbnMgZm9yIHRoZSB1c2VyIHRvIHJlbW92ZQorCQkJICog aXQgbGF0ZXIgaWYgY2xlYW51cCBmYWlscy4KKwkJCSAqLworCQl9CisJCVBRY2xlYXIocmVzKTsK Kwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoc3RyKTsKK30KKworLyoKKyAqIENyZWF0ZSBhIHN1 YnNjcmlwdGlvbiB3aXRoIHNvbWUgcHJlZGVmaW5lZCBvcHRpb25zLgorICoKKyAqIEEgcmVwbGlj YXRpb24gc2xvdCB3YXMgYWxyZWFkeSBjcmVhdGVkIGluIGEgcHJldmlvdXMgc3RlcC4gTGV0J3Mg dXNlIGl0LiBCeQorICogZGVmYXVsdCwgdGhlIHN1YnNjcmlwdGlvbiBuYW1lIGlzIHVzZWQgYXMg cmVwbGljYXRpb24gc2xvdCBuYW1lLiBJdCBpcworICogbm90IHJlcXVpcmVkIHRvIGNvcHkgZGF0 YS4gVGhlIHN1YnNjcmlwdGlvbiB3aWxsIGJlIGNyZWF0ZWQgYnV0IGl0IHdpbGwgbm90CisgKiBi ZSBlbmFibGVkIG5vdy4gVGhhdCdzIGJlY2F1c2UgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIG11 c3QgYmUgc2V0IGFuZCB0aGUKKyAqIHJlcGxpY2F0aW9uIG9yaWdpbiBuYW1lIChvbmUgb2YgdGhl IGZ1bmN0aW9uIGFyZ3VtZW50cykgY29udGFpbnMgdGhlCisgKiBzdWJzY3JpcHRpb24gT0lEIGlu IGl0cyBuYW1lLiBPbmNlIHRoZSBzdWJzY3JpcHRpb24gaXMgY3JlYXRlZCwKKyAqIHNldF9yZXBs aWNhdGlvbl9wcm9ncmVzcygpIGNhbiBvYnRhaW4gdGhlIGNob3NlbiBvcmlnaW4gbmFtZSBhbmQg c2V0IHVwIGl0cworICogaW5pdGlhbCBsb2NhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0 ZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5m bykKK3sKKwlQUUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBHcmVzdWx0 ICAgKnJlczsKKworCUFzc2VydChjb25uICE9IE5VTEwpOworCisJcGdfbG9nX2luZm8oImNyZWF0 aW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQlkYmluZm8t PnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwKKwkJ CQkJICAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9OICclcycgUFVCTElDQVRJT04g JXMgIgorCQkJCQkgICJXSVRIIChjcmVhdGVfc2xvdCA9IGZhbHNlLCBjb3B5X2RhdGEgPSBmYWxz ZSwgZW5hYmxlZCA9IGZhbHNlKSIsCisJCQkJCSAgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPnB1 YmNvbm5pbmZvLCBkYmluZm8tPnB1Ym5hbWUpOworCisJcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlz OiAlcyIsIHN0ci0+ZGF0YSk7CisKKwlpZiAoIWRyeV9ydW4pCisJeworCQlyZXMgPSBQUWV4ZWMo Y29ubiwgc3RyLT5kYXRhKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09N TUFORF9PSykKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHN1YnNjcmlw dGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJCQkJCQkgZGJpbmZvLT5zdWJu YW1lLCBkYmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlkaXNj b25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCQl9CisJCVBRY2xlYXIocmVzKTsKKwl9CisK KwlkZXN0cm95UFFFeHBCdWZmZXIoc3RyKTsKK30KKworLyoKKyAqIFNldHMgdGhlIHJlcGxpY2F0 aW9uIHByb2dyZXNzIHRvIHRoZSBjb25zaXN0ZW50IExTTi4KKyAqCisgKiBUaGUgc3Vic2NyaWJl ciBjYXVnaHQgdXAgdG8gdGhlIGNvbnNpc3RlbnQgTFNOIHByb3ZpZGVkIGJ5IHRoZSB0ZW1wb3Jh cnkKKyAqIHJlcGxpY2F0aW9uIHNsb3QuIFRoZSBnb2FsIGlzIHRvIHNldCB1cCB0aGUgaW5pdGlh bCBsb2NhdGlvbiBmb3IgdGhlIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHRoYXQgaXMgdGhlIGV4 YWN0IExTTiB0aGF0IHRoZSBzdWJzY3JpYmVyIHdhcyBwcm9tb3RlZC4gT25jZSB0aGUKKyAqIHN1 YnNjcmlwdGlvbiBpcyBlbmFibGVkIGl0IHdpbGwgc3RhcnQgc3RyZWFtaW5nIGZyb20gdGhhdCBs b2NhdGlvbiBvbndhcmRzLgorICogSW4gZHJ5IHJ1biBtb2RlLCB0aGUgc3Vic2NyaXB0aW9uIE9J RCBhbmQgTFNOIGFyZSBzZXQgdG8gaW52YWxpZCB2YWx1ZXMgZm9yCisgKiBwcmludGluZyBwdXJw b3Nlcy4KKyAqLworc3RhdGljIHZvaWQKK3NldF9yZXBsaWNhdGlvbl9wcm9ncmVzcyhQR2Nvbm4g KmNvbm4sIHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpsc24pCit7 CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpy ZXM7CisJT2lkCQkJc3Vib2lkOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCWNo YXIJCWxzbnN0clsxNyArIDFdOyAvKiBNQVhQR19MU05MRU4gPSAxNyAqLworCisJQXNzZXJ0KGNv bm4gIT0gTlVMTCk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsCisJCQkJCSAgIlNFTEVDVCBv aWQgRlJPTSBwZ19jYXRhbG9nLnBnX3N1YnNjcmlwdGlvbiAiCisJCQkJCSAgIldIRVJFIHN1Ym5h bWUgPSAnJXMnIiwKKwkJCQkJICBkYmluZm8tPnN1Ym5hbWUpOworCisJcmVzID0gUFFleGVjKGNv bm4sIHN0ci0+ZGF0YSk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmlwdGlvbiBP SUQ6ICVzIiwKKwkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlkaXNjb25uZWN0 X2RhdGFiYXNlKGNvbm4sIHRydWUpOworCX0KKworCWlmIChQUW50dXBsZXMocmVzKSAhPSAxICYm ICFkcnlfcnVuKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmlw dGlvbiBPSUQ6IGdvdCAlZCByb3dzLCBleHBlY3RlZCAlZCByb3dzIiwKKwkJCQkJIFBRbnR1cGxl cyhyZXMpLCAxKTsKKwkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKKwl9CisKKwlp ZiAoZHJ5X3J1bikKKwl7CisJCXN1Ym9pZCA9IEludmFsaWRPaWQ7CisJCXNucHJpbnRmKGxzbnN0 ciwgc2l6ZW9mKGxzbnN0ciksICIlWC8lWCIsCisJCQkJIExTTl9GT1JNQVRfQVJHUygoWExvZ1Jl Y1B0cikgSW52YWxpZFhMb2dSZWNQdHIpKTsKKwl9CisJZWxzZQorCXsKKwkJc3Vib2lkID0gc3Ry dG91bChQUWdldHZhbHVlKHJlcywgMCwgMCksIE5VTEwsIDEwKTsKKwkJc25wcmludGYobHNuc3Ry LCBzaXplb2YobHNuc3RyKSwgIiVzIiwgbHNuKTsKKwl9CisKKwlQUWNsZWFyKHJlcyk7CisKKwkv KgorCSAqIFRoZSBvcmlnaW4gbmFtZSBpcyBkZWZpbmVkIGFzIHBnXyV1LiAldSBpcyB0aGUgc3Vi c2NyaXB0aW9uIE9JRC4gU2VlCisJICogQXBwbHlXb3JrZXJNYWluKCkuCisJICovCisJc25wcmlu dGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBzdWJvaWQpOworCisJ cGdfbG9nX2luZm8oInNldHRpbmcgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUg XCIlc1wiIDsgTFNOICVzKSBvbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCW9yaWdpbm5hbWUsIGxz bnN0ciwgZGJpbmZvLT5kYm5hbWUpOworCisJcmVzZXRQUUV4cEJ1ZmZlcihzdHIpOworCWFwcGVu ZFBRRXhwQnVmZmVyKHN0ciwKKwkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cucGdfcmVwbGljYXRp b25fb3JpZ2luX2FkdmFuY2UoJyVzJywgJyVzJykiLAorCQkJCQkgIG9yaWdpbm5hbWUsIGxzbnN0 cik7CisKKwlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKworCWlm ICghZHJ5X3J1bikKKwl7CisJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOworCQlpZiAo UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IHNldCByZXBsaWNhdGlvbiBwcm9ncmVzcyBmb3IgdGhlIHN1YnNjcmlw dGlvbiBcIiVzXCI6ICVzIiwKKwkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIFBRcmVzdWx0RXJyb3JN ZXNzYWdlKHJlcykpOworCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKKwkJfQor CQlQUWNsZWFyKHJlcyk7CisJfQorCisJZGVzdHJveVBRRXhwQnVmZmVyKHN0cik7Cit9CisKKy8q CisgKiBFbmFibGVzIHRoZSBzdWJzY3JpcHRpb24uCisgKgorICogVGhlIHN1YnNjcmlwdGlvbiB3 YXMgY3JlYXRlZCBpbiBhIHByZXZpb3VzIHN0ZXAgYnV0IGl0IHdhcyBkaXNhYmxlZC4gQWZ0ZXIK KyAqIGFkanVzdGluZyB0aGUgaW5pdGlhbCBsb2dpY2FsIHJlcGxpY2F0aW9uIGxvY2F0aW9uLCBl bmFibGUgdGhlIHN1YnNjcmlwdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2VuYWJsZV9zdWJzY3Jp cHRpb24oUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKK3sKKwlQ UUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBHcmVzdWx0ICAgKnJlczsK KworCUFzc2VydChjb25uICE9IE5VTEwpOworCisJcGdfbG9nX2luZm8oImVuYWJsaW5nIHN1YnNj cmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQlkYmluZm8tPnN1Ym5hbWUs IGRiaW5mby0+ZGJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkFMVEVSIFNVQlND UklQVElPTiAlcyBFTkFCTEUiLCBkYmluZm8tPnN1Ym5hbWUpOworCisJcGdfbG9nX2RlYnVnKCJj b21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisKKwlpZiAoIWRyeV9ydW4pCisJeworCQlyZXMg PSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfQ09NTUFORF9PSykKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZW5hYmxl IHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwKKwkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIFBRcmVz dWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVl KTsKKwkJfQorCisJCVBRY2xlYXIocmVzKTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoc3Ry KTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdGF0aWMgc3Ry dWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9CisJeworCQl7ImRhdGFiYXNlIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsICdkJ30sCisJCXsicGdkYXRhIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsICdEJ30sCisJCXsiZHJ5LXJ1biIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnbid9LAorCQl7InN1 YnNjcmliZXItcG9ydCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorCQl7InB1Ymxp c2hlci1zZXJ2ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKwkJeyJzb2NrZXQt ZGlyZWN0b3J5IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisJCXsicmVjb3Zlcnkt dGltZW91dCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndCd9LAorCQl7InN1YnNjcmliZXIt dXNlcm5hbWUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1UnfSwKKwkJeyJ2ZXJib3NlIiwg bm9fYXJndW1lbnQsIE5VTEwsICd2J30sCisJCXsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCBOVUxM LCAnVid9LAorCQl7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJz8nfSwKKwkJe05VTEwsIDAs IE5VTEwsIDB9CisJfTsKKworCXN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyBvcHQgPSB7 MH07CisKKwlpbnQJCQljOworCWludAkJCW9wdGlvbl9pbmRleDsKKworCWNoYXIJICAgKnBnX2N0 bF9wYXRoID0gTlVMTDsKKwljaGFyCSAgICpwZ19yZXNldHdhbF9wYXRoID0gTlVMTDsKKworCWNo YXIJICAgKnB1Yl9iYXNlX2Nvbm5pbmZvOworCWNoYXIJICAgKnN1Yl9iYXNlX2Nvbm5pbmZvOwor CWNoYXIJICAgKmRibmFtZV9jb25uaW5mbyA9IE5VTEw7CisKKwl1aW50NjQJCXB1Yl9zeXNpZDsK Kwl1aW50NjQJCXN1Yl9zeXNpZDsKKwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworCisJY2hhcgkgICAq Y29uc2lzdGVudF9sc247CisKKwljaGFyCQlwaWRmaWxlW01BWFBHUEFUSF07CisKKwlwZ19sb2dn aW5nX2luaXQoYXJndlswXSk7CisJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX1dBUk5JTkcp OworCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOworCXNldF9wZ2xvY2FsZV9wZ3Nl cnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfY3JlYXRlc3Vic2NyaWJlciIpKTsKKwor CWlmIChhcmdjID4gMSkKKwl7CisJCWlmIChzdHJjbXAoYXJndlsxXSwgIi0taGVscCIpID09IDAg fHwgc3RyY21wKGFyZ3ZbMV0sICItPyIpID09IDApCisJCXsKKwkJCXVzYWdlKCk7CisJCQlleGl0 KDApOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiLVYiKSA9PSAwCisJCQkJIHx8 IHN0cmNtcChhcmd2WzFdLCAiLS12ZXJzaW9uIikgPT0gMCkKKwkJeworCQkJcHV0cygicGdfY3Jl YXRlc3Vic2NyaWJlciAoUG9zdGdyZVNRTCkgIiBQR19WRVJTSU9OKTsKKwkJCWV4aXQoMCk7CisJ CX0KKwl9CisKKwkvKiBEZWZhdWx0IHNldHRpbmdzICovCisJb3B0LnN1YnNjcmliZXJfZGlyID0g TlVMTDsKKwlvcHQucHViX2Nvbm5pbmZvX3N0ciA9IE5VTEw7CisJb3B0LnNvY2tldF9kaXIgPSBO VUxMOworCW9wdC5zdWJfcG9ydCA9IERFRkFVTFRfU1VCX1BPUlQ7CisJb3B0LnN1Yl91c2VybmFt ZSA9IE5VTEw7CisJb3B0LmRhdGFiYXNlX25hbWVzID0gKFNpbXBsZVN0cmluZ0xpc3QpCisJewor CQlOVUxMLCBOVUxMCisJfTsKKwlvcHQucmVjb3ZlcnlfdGltZW91dCA9IDA7CisKKwkvKgorCSAq IERvbid0IGFsbG93IGl0IHRvIGJlIHJ1biBhcyByb290LiBJdCB1c2VzIHBnX2N0bCB3aGljaCBk b2VzIG5vdCBhbGxvdworCSAqIGl0IGVpdGhlci4KKwkgKi8KKyNpZm5kZWYgV0lOMzIKKwlpZiAo Z2V0ZXVpZCgpID09IDApCisJeworCQlwZ19sb2dfZXJyb3IoImNhbm5vdCBiZSBleGVjdXRlZCBi eSBcInJvb3RcIiIpOworCQlwZ19sb2dfZXJyb3JfaGludCgiWW91IG11c3QgcnVuICVzIGFzIHRo ZSBQb3N0Z3JlU1FMIHN1cGVydXNlci4iLAorCQkJCQkJICBwcm9nbmFtZSk7CisJCWV4aXQoMSk7 CisJfQorI2VuZGlmCisKKwlnZXRfcmVzdHJpY3RlZF90b2tlbigpOworCisJd2hpbGUgKChjID0g Z2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImQ6RDpucDpQOnM6dDpVOnYiLAorCQkJCQkJCWxvbmdf b3B0aW9ucywgJm9wdGlvbl9pbmRleCkpICE9IC0xKQorCXsKKwkJc3dpdGNoIChjKQorCQl7CisJ CQljYXNlICdkJzoKKwkJCQkvKiBJZ25vcmUgZHVwbGljYXRlZCBkYXRhYmFzZSBuYW1lcyAqLwor CQkJCWlmICghc2ltcGxlX3N0cmluZ19saXN0X21lbWJlcigmb3B0LmRhdGFiYXNlX25hbWVzLCBv cHRhcmcpKQorCQkJCXsKKwkJCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmb3B0LmRhdGFi YXNlX25hbWVzLCBvcHRhcmcpOworCQkJCQludW1fZGJzKys7CisJCQkJfQorCQkJCWJyZWFrOwor CQkJY2FzZSAnRCc6CisJCQkJb3B0LnN1YnNjcmliZXJfZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7 CisJCQkJY2Fub25pY2FsaXplX3BhdGgob3B0LnN1YnNjcmliZXJfZGlyKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgJ24nOgorCQkJCWRyeV9ydW4gPSB0cnVlOworCQkJCWJyZWFrOworCQkJY2FzZSAn cCc6CisJCQkJaWYgKChvcHQuc3ViX3BvcnQgPSBhdG9pKG9wdGFyZykpIDw9IDApCisJCQkJCXBn X2ZhdGFsKCJpbnZhbGlkIHN1YnNjcmliZXIgcG9ydCBudW1iZXIiKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgJ1AnOgorCQkJCW9wdC5wdWJfY29ubmluZm9fc3RyID0gcGdfc3RyZHVwKG9wdGFyZyk7 CisJCQkJYnJlYWs7CisJCQljYXNlICdzJzoKKwkJCQlvcHQuc29ja2V0X2RpciA9IHBnX3N0cmR1 cChvcHRhcmcpOworCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKG9wdC5zb2NrZXRfZGlyKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgJ3QnOgorCQkJCW9wdC5yZWNvdmVyeV90aW1lb3V0ID0gYXRvaShvcHRh cmcpOworCQkJCWJyZWFrOworCQkJY2FzZSAnVSc6CisJCQkJb3B0LnN1Yl91c2VybmFtZSA9IHBn X3N0cmR1cChvcHRhcmcpOworCQkJCWJyZWFrOworCQkJY2FzZSAndic6CisJCQkJcGdfbG9nZ2lu Z19pbmNyZWFzZV92ZXJib3NpdHkoKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyog Z2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCisJCQkJcGdfbG9nX2Vy cm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2du YW1lKTsKKwkJCQlleGl0KDEpOworCQl9CisJfQorCisJLyogQW55IG5vbi1vcHRpb24gYXJndW1l bnRzPyAqLworCWlmIChvcHRpbmQgPCBhcmdjKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFu eSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zb b3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CisJCWV4aXQoMSk7CisJfQorCisJLyogUmVxdWly ZWQgYXJndW1lbnRzICovCisJaWYgKG9wdC5zdWJzY3JpYmVyX2RpciA9PSBOVUxMKQorCXsKKwkJ cGdfbG9nX2Vycm9yKCJubyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwor CQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRp b24uIiwgcHJvZ25hbWUpOworCQlleGl0KDEpOworCX0KKworCS8qIElmIHNvY2tldCBkaXJlY3Rv cnkgaXMgbm90IHByb3ZpZGVkLCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5ICovCisJaWYgKG9w dC5zb2NrZXRfZGlyID09IE5VTEwpCisJeworCQljaGFyCQljd2RbTUFYUEdQQVRIXTsKKworCQlp ZiAoIWdldGN3ZChjd2QsIE1BWFBHUEFUSCkpCisJCQlwZ19mYXRhbCgiY291bGQgbm90IGRldGVy bWluZSBjdXJyZW50IGRpcmVjdG9yeSIpOworCQlvcHQuc29ja2V0X2RpciA9IHBnX3N0cmR1cChj d2QpOworCQljYW5vbmljYWxpemVfcGF0aChvcHQuc29ja2V0X2Rpcik7CisJfQorCisJLyoKKwkg KiBJZiBzdWJzY3JpYmVyIHVzZXJuYW1lIGlzIG5vdCBwcm92aWRlZCwgY2hlY2sgaWYgdGhlIGVu dmlyb25tZW50CisJICogdmFyaWFibGUgc2V0cyBpdC4gSWYgbm90LCBvYnRhaW4gdGhlIG9wZXJh dGluZyBzeXN0ZW0gbmFtZSBvZiB0aGUgdXNlcgorCSAqIHJ1bm5pbmcgaXQuCisJICovCisJaWYg KG9wdC5zdWJfdXNlcm5hbWUgPT0gTlVMTCkKKwl7CisJCWlmIChnZXRlbnYoIlBHVVNFUiIpKQor CQl7CisJCQlvcHQuc3ViX3VzZXJuYW1lID0gZ2V0ZW52KCJQR1VTRVIiKTsKKwkJfQorCQllbHNl CisJCXsKKwkJCWNoYXIJICAgKmVycnN0ciA9IE5VTEw7CisKKwkJCW9wdC5zdWJfdXNlcm5hbWUg PSBnZXRfdXNlcl9uYW1lKCZlcnJzdHIpOworCQkJaWYgKGVycnN0cikKKwkJCQlwZ19mYXRhbCgi JXMiLCBlcnJzdHIpOworCQl9CisJfQorCisJLyoKKwkgKiBQYXJzZSBjb25uZWN0aW9uIHN0cmlu Zy4gQnVpbGQgYSBiYXNlIGNvbm5lY3Rpb24gc3RyaW5nIHRoYXQgbWlnaHQgYmUKKwkgKiByZXVz ZWQgYnkgbXVsdGlwbGUgZGF0YWJhc2VzLgorCSAqLworCWlmIChvcHQucHViX2Nvbm5pbmZvX3N0 ciA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVE9ETyB1c2UgcHJpbWFyeV9jb25uaW5mbyAoaWYg YXZhaWxhYmxlKSBmcm9tIHN1YnNjcmliZXIgYW5kCisJCSAqIGV4dHJhY3QgcHVibGlzaGVyIGNv bm5lY3Rpb24gc3RyaW5nLiBBc3N1bWUgdGhhdCB0aGVyZSBhcmUKKwkJICogaWRlbnRpY2FsIGVu dHJpZXMgZm9yIHBoeXNpY2FsIGFuZCBsb2dpY2FsIHJlcGxpY2F0aW9uLiBJZiB0aGVyZSBpcwor CQkgKiBub3QsIHdlIHdvdWxkIGZhaWwgYW55d2F5LgorCQkgKi8KKwkJcGdfbG9nX2Vycm9yKCJu byBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgc3BlY2lmaWVkIik7CisJCXBnX2xvZ19lcnJv cl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFt ZSk7CisJCWV4aXQoMSk7CisJfQorCXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIGNvbm5lY3Rpb24g c3RyaW5nIG9uIHB1Ymxpc2hlciIpOworCXB1Yl9iYXNlX2Nvbm5pbmZvID0gZ2V0X2Jhc2VfY29u bmluZm8ob3B0LnB1Yl9jb25uaW5mb19zdHIsCisJCQkJCQkJCQkJICAmZGJuYW1lX2Nvbm5pbmZv KTsKKwlpZiAocHViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkKKwkJZXhpdCgxKTsKKworCXBnX2xv Z19pbmZvKCJ2YWxpZGF0aW5nIGNvbm5lY3Rpb24gc3RyaW5nIG9uIHN1YnNjcmliZXIiKTsKKyNp ZiAhZGVmaW5lZChXSU4zMikKKwlzdWJfYmFzZV9jb25uaW5mbyA9IHBzcHJpbnRmKCJob3N0PSVz IHBvcnQ9JXUgdXNlcj0lcyBmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lPSVzIiwKKwkJCQkJCQkJ IG9wdC5zb2NrZXRfZGlyLCBvcHQuc3ViX3BvcnQsIG9wdC5zdWJfdXNlcm5hbWUsIHByb2duYW1l KTsKKyNlbHNlCQkJCQkJCS8qIFdJTjMyICovCisJc3ViX2Jhc2VfY29ubmluZm8gPSBwc3ByaW50 ZigicG9ydD0ldSB1c2VyPSVzIGZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWU9JXMiLAorCQkJCQkJ CQkgb3B0LnN1Yl9wb3J0LCBvcHQuc3ViX3VzZXJuYW1lLCBwcm9nbmFtZSk7CisjZW5kaWYKKwor CWlmIChvcHQuZGF0YWJhc2VfbmFtZXMuaGVhZCA9PSBOVUxMKQorCXsKKwkJcGdfbG9nX2luZm8o Im5vIGRhdGFiYXNlIHdhcyBzcGVjaWZpZWQiKTsKKworCQkvKgorCQkgKiBJZiAtLWRhdGFiYXNl IG9wdGlvbiBpcyBub3QgcHJvdmlkZWQsIHRyeSB0byBvYnRhaW4gdGhlIGRibmFtZSBmcm9tCisJ CSAqIHRoZSBwdWJsaXNoZXIgY29ubmluZm8uIElmIGRibmFtZSBwYXJhbWV0ZXIgaXMgbm90IGF2 YWlsYWJsZSwgZXJyb3IKKwkJICogb3V0LgorCQkgKi8KKwkJaWYgKGRibmFtZV9jb25uaW5mbykK KwkJeworCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmb3B0LmRhdGFiYXNlX25hbWVzLCBk Ym5hbWVfY29ubmluZm8pOworCQkJbnVtX2RicysrOworCisJCQlwZ19sb2dfaW5mbygiZGF0YWJh c2UgXCIlc1wiIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3Ry aW5nIiwKKwkJCQkJCWRibmFtZV9jb25uaW5mbyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwZ19s b2dfZXJyb3IoIm5vIGRhdGFiYXNlIG5hbWUgc3BlY2lmaWVkIik7CisJCQlwZ19sb2dfZXJyb3Jf aGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwKKwkJCQkJCQkg IHByb2duYW1lKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwkvKiBHZXQgdGhlIGFic29sdXRl IHBhdGggb2YgcGdfY3RsIGFuZCBwZ19yZXNldHdhbCBvbiB0aGUgc3Vic2NyaWJlciAqLworCXBn X2N0bF9wYXRoID0gZ2V0X2V4ZWNfcGF0aChhcmd2WzBdLCAicGdfY3RsIik7CisJcGdfcmVzZXR3 YWxfcGF0aCA9IGdldF9leGVjX3BhdGgoYXJndlswXSwgInBnX3Jlc2V0d2FsIik7CisKKwkvKiBS dWRpbWVudGFyeSBjaGVjayBmb3IgYSBkYXRhIGRpcmVjdG9yeSAqLworCWNoZWNrX2RhdGFfZGly ZWN0b3J5KG9wdC5zdWJzY3JpYmVyX2Rpcik7CisKKwkvKgorCSAqIFN0b3JlIGRhdGFiYXNlIGlu Zm9ybWF0aW9uIGZvciBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuIEl0IHNob3VsZCBiZQorCSAq IGNhbGxlZCBiZWZvcmUgYXRleGl0KCkgYmVjYXVzZSBpdHMgcmV0dXJuIGlzIHVzZWQgaW4gdGhl CisJICogY2xlYW51cF9vYmplY3RzX2F0ZXhpdCgpLgorCSAqLworCWRiaW5mbyA9IHN0b3JlX3B1 Yl9zdWJfaW5mbyhvcHQuZGF0YWJhc2VfbmFtZXMsIHB1Yl9iYXNlX2Nvbm5pbmZvLAorCQkJCQkJ CQlzdWJfYmFzZV9jb25uaW5mbyk7CisKKwkvKiBSZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGNsZWFu IHVwIG9iamVjdHMgaW4gY2FzZSBvZiBmYWlsdXJlICovCisJYXRleGl0KGNsZWFudXBfb2JqZWN0 c19hdGV4aXQpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVj dG9yeSBoYXMgdGhlIHNhbWUgc3lzdGVtIGlkZW50aWZpZXIKKwkgKiB0aGFuIHRoZSBwdWJsaXNo ZXIgZGF0YSBkaXJlY3RvcnkuCisJICovCisJcHViX3N5c2lkID0gZ2V0X3ByaW1hcnlfc3lzaWQo ZGJpbmZvWzBdLnB1YmNvbm5pbmZvKTsKKwlzdWJfc3lzaWQgPSBnZXRfc3RhbmRieV9zeXNpZChv cHQuc3Vic2NyaWJlcl9kaXIpOworCWlmIChwdWJfc3lzaWQgIT0gc3ViX3N5c2lkKQorCQlwZ19m YXRhbCgic3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSBpcyBub3QgYSBjb3B5IG9mIHRoZSBzb3Vy Y2UgZGF0YWJhc2UgY2x1c3RlciIpOworCisJLyogU3Vic2NyaWJlciBQSUQgZmlsZSAqLworCXNu cHJpbnRmKHBpZGZpbGUsIE1BWFBHUEFUSCwgIiVzL3Bvc3RtYXN0ZXIucGlkIiwgb3B0LnN1YnNj cmliZXJfZGlyKTsKKworCS8qCisJICogSWYgdGhlIHN0YW5kYnkgc2VydmVyIGlzIHJ1bm5pbmcs IHN0b3AgaXQuIFNvbWUgcGFyYW1ldGVycyAodGhhdCBjYW4KKwkgKiBvbmx5IGJlIHNldCBhdCBz ZXJ2ZXIgc3RhcnQpIGFyZSBpbmZvcm1lZCBieSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KKwkgKi8K KwlpZiAoc3RhdChwaWRmaWxlLCAmc3RhdGJ1ZikgPT0gMCkKKwl7CisKKwkJcGdfbG9nX2luZm8o InN0YW5kYnkgaXMgdXAgYW5kIHJ1bm5pbmciKTsKKwkJcGdfbG9nX2luZm8oInN0b3BwaW5nIHRo ZSBzZXJ2ZXIgdG8gc3RhcnQgdGhlIHRyYW5zZm9ybWF0aW9uIHN0ZXBzIik7CisJCXN0b3Bfc3Rh bmRieV9zZXJ2ZXIocGdfY3RsX3BhdGgsIG9wdC5zdWJzY3JpYmVyX2Rpcik7CisJfQorCisJLyoK KwkgKiBTdGFydCBhIHNob3J0LWxpdmVkIHN0YW5kYnkgc2VydmVyIHdpdGggdGVtcG9yYXJ5IHBh cmFtZXRlcnMgKHByb3ZpZGVkCisJICogYnkgY29tbWFuZC1saW5lIG9wdGlvbnMpLiBUaGUgZ29h bCBpcyB0byBhdm9pZCBjb25uZWN0aW9ucyBkdXJpbmcgdGhlCisJICogdHJhbnNmb3JtYXRpb24g c3RlcHMuCisJICovCisJcGdfbG9nX2luZm8oInN0YXJ0aW5nIHRoZSBzdGFuZGJ5IHdpdGggY29t bWFuZC1saW5lIG9wdGlvbnMiKTsKKwlzdGFydF9zdGFuZGJ5X3NlcnZlcigmb3B0LCBwZ19jdGxf cGF0aCwgdHJ1ZSk7CisKKwkvKiBDaGVjayBpZiB0aGUgc3RhbmRieSBzZXJ2ZXIgaXMgcmVhZHkg Zm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gKi8KKwljaGVja19zdWJzY3JpYmVyKGRiaW5mbyk7CisK KwkvKgorCSAqIENoZWNrIGlmIHRoZSBwcmltYXJ5IHNlcnZlciBpcyByZWFkeSBmb3IgbG9naWNh bCByZXBsaWNhdGlvbi4gVGhpcworCSAqIHJvdXRpbmUgY2hlY2tzIGlmIGEgcmVwbGljYXRpb24g c2xvdCBpcyBpbiB1c2Ugb24gcHJpbWFyeSBzbyBpdCByZWxpZXMKKwkgKiBvbiBjaGVja19zdWJz Y3JpYmVyKCkgdG8gb2J0YWluIHRoZSBwcmltYXJ5X3Nsb3RfbmFtZS4gVGhhdCdzIHdoeSBpdCBp cworCSAqIGNhbGxlZCBhZnRlciBpdC4KKwkgKi8KKwljaGVja19wdWJsaXNoZXIoZGJpbmZvKTsK KworCS8qCisJICogQ3JlYXRlIHRoZSByZXF1aXJlZCBvYmplY3RzIGZvciBlYWNoIGRhdGFiYXNl IG9uIHB1Ymxpc2hlci4gVGhpcyBzdGVwCisJICogaXMgaGVyZSBtYWlubHkgYmVjYXVzZSBpZiB3 ZSBzdG9wIHRoZSBzdGFuZGJ5IHdlIGNhbm5vdCB2ZXJpZnkgaWYgdGhlCisJICogcHJpbWFyeSBz bG90IGlzIGluIHVzZS4gV2UgY291bGQgdXNlIGFuIGV4dHJhIGNvbm5lY3Rpb24gZm9yIGl0IGJ1 dCBpdAorCSAqIGRvZXNuJ3Qgc2VlbSB3b3J0aC4KKwkgKi8KKwlzZXR1cF9wdWJsaXNoZXIoZGJp bmZvKTsKKworCS8qCisJICogR2V0IHRoZSByZXBsaWNhdGlvbiBzdGFydCBwb2ludCBhbmQgd3Jp dGUgdGhlIHJlcXVpcmVkIHJlY292ZXJ5CisJICogcGFyYW1ldGVycyBpbnRvIHRoZSBjb25maWd1 cmF0aW9uIGZpbGUuCisJICovCisJY29uc2lzdGVudF9sc24gPSBzZXR1cF9yZWNvdmVyeShkYmlu Zm8sIG9wdC5zdWJzY3JpYmVyX2Rpcik7CisKKwkvKgorCSAqIFJlc3RhcnQgc3Vic2NyaWJlciBz byB0aGUgcmVjb3ZlcnkgcGFyYW1ldGVycyB3aWxsIHRha2UgZWZmZWN0LiBXYWl0CisJICogdW50 aWwgYWNjZXB0aW5nIGNvbm5lY3Rpb25zLgorCSAqLworCXBnX2xvZ19pbmZvKCJzdG9wcGluZyBh bmQgc3RhcnRpbmcgdGhlIHN1YnNjcmliZXIiKTsKKwlzdG9wX3N0YW5kYnlfc2VydmVyKHBnX2N0 bF9wYXRoLCBvcHQuc3Vic2NyaWJlcl9kaXIpOworCXN0YXJ0X3N0YW5kYnlfc2VydmVyKCZvcHQs IHBnX2N0bF9wYXRoLCB0cnVlKTsKKworCS8qIFdhaXRpbmcgdGhlIHN1YnNjcmliZXIgdG8gYmUg cHJvbW90ZWQgKi8KKwl3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoZGJpbmZvWzBdLnN1YmNvbm5pbmZv LCBwZ19jdGxfcGF0aCwgJm9wdCk7CisKKwkvKgorCSAqIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9u IGZvciBlYWNoIGRhdGFiYXNlIG9uIHN1YnNjcmliZXIuIEl0IGRvZXMgbm90CisJICogZW5hYmxl IGl0IGltbWVkaWF0ZWx5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYWRqdXN0IHRoZSByZXBsaWNhdGlv biBzdGFydAorCSAqIHBvaW50IHRvIHRoZSBMU04gcmVwb3J0ZWQgYnkgc2V0dXBfcmVjb3Zlcnko KS4gIEl0IGFsc28gY2xlYW5zIHVwCisJICogcHVibGljYXRpb25zIGNyZWF0ZWQgYnkgdGhpcyB0 b29sIGFuZCByZXBsaWNhdGlvbiB0byB0aGUgc3RhbmRieS4KKwkgKi8KKwlzZXR1cF9zdWJzY3Jp YmVyKGRiaW5mbywgY29uc2lzdGVudF9sc24pOworCisJLyogUmVtb3ZlIHByaW1hcnlfc2xvdF9u YW1lIGlmIGl0IGV4aXN0cyBvbiBwcmltYXJ5ICovCisJZHJvcF9wcmltYXJ5X3JlcGxpY2F0aW9u X3Nsb3QoZGJpbmZvLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CisKKwkvKiBTdG9wIHRoZSBzdWJzY3Jp YmVyICovCisJcGdfbG9nX2luZm8oInN0b3BwaW5nIHRoZSBzdWJzY3JpYmVyIik7CisJc3RvcF9z dGFuZGJ5X3NlcnZlcihwZ19jdGxfcGF0aCwgb3B0LnN1YnNjcmliZXJfZGlyKTsKKworCS8qIENo YW5nZSBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIgKi8KKwltb2RpZnlfc3Vic2Ny aWJlcl9zeXNpZChwZ19yZXNldHdhbF9wYXRoLCAmb3B0KTsKKworCS8qCisJICogSW4gZHJ5IHJ1 biBtb2RlLCB0aGUgc2VydmVyIGlzIHJlc3RhcnRlZCB3aXRoIHRoZSBwcm92aWRlZCBjb21tYW5k LWxpbmUKKwkgKiBvcHRpb25zIHNvIHZhbGlkYXRpb24gY2FuIGJlIGFwcGxpZWQgaW4gdGhlIHRh cmdldCBzZXJ2ZXIuIEluIG9yZGVyIHRvCisJICogcHJlc2VydmUgdGhlIGluaXRpYWwgc3RhdGUg b2YgdGhlIHNlcnZlciAocnVubmluZyksIHN0YXJ0IGl0IHdpdGhvdXQKKwkgKiB0aGUgY29tbWFu ZC1saW5lIG9wdGlvbnMuCisJICovCisJaWYgKGRyeV9ydW4pCisJCXN0YXJ0X3N0YW5kYnlfc2Vy dmVyKCZvcHQsIHBnX2N0bF9wYXRoLCBmYWxzZSk7CisKKwlzdWNjZXNzID0gdHJ1ZTsKKworCXBn X2xvZ19pbmZvKCJEb25lISIpOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbCBiL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJzY3JpYmVyLnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNiYzRmM2RjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbApAQCAtMCwwICsx LDI2NyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyMKKyMgVGVzdCB1c2luZyBhIHN0YW5kYnkgc2VydmVyIGFzIHRoZSBzdWJz Y3JpYmVyLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 Cit1c2UgVGVzdDo6TW9yZTsKKworcHJvZ3JhbV9oZWxwX29rKCdwZ19jcmVhdGVzdWJzY3JpYmVy Jyk7Citwcm9ncmFtX3ZlcnNpb25fb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKK3Byb2dyYW1f b3B0aW9uc19oYW5kbGluZ19vaygncGdfY3JlYXRlc3Vic2NyaWJlcicpOworCitteSAkZGF0YWRp ciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOworCisjCisjIFRlc3QgbWFuZGF0 b3J5IG9wdGlvbnMKK2NvbW1hbmRfZmFpbHMoWydwZ19jcmVhdGVzdWJzY3JpYmVyJ10sCisJJ25v IHN1YnNjcmliZXIgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkJyk7Citjb21tYW5kX2ZhaWxzKAor CVsgJ3BnX2NyZWF0ZXN1YnNjcmliZXInLCAnLS1wZ2RhdGEnLCAkZGF0YWRpciBdLAorCSdubyBw dWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgc3BlY2lmaWVkJyk7Citjb21tYW5kX2ZhaWxzKAor CVsKKwkJJ3BnX2NyZWF0ZXN1YnNjcmliZXInLCAnLS12ZXJib3NlJywKKwkJJy0tcGdkYXRhJywg JGRhdGFkaXIsCisJCSctLXB1Ymxpc2hlci1zZXJ2ZXInLCAncG9ydD01NDMyJworCV0sCisJJ25v IGRhdGFiYXNlIG5hbWUgc3BlY2lmaWVkJyk7CisKKyMgU2V0IHVwIG5vZGUgUCBhcyBwcmltYXJ5 CitteSAkbm9kZV9wID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlX3AnKTsK KyRub2RlX3AtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcC0+ c3RhcnQ7CisKKyMgU2V0IHVwIG5vZGUgRiBhcyBhYm91dC10by1mYWlsIG5vZGUKKyMgRm9yY2Ug aXQgdG8gaW5pdGlhbGl6ZSBhIG5ldyBjbHVzdGVyIGluc3RlYWQgb2YgY29weWluZyBhCisjIHBy ZXZpb3VzbHkgaW5pdGRiJ2QgY2x1c3Rlci4gTmV3IGNsdXN0ZXIgaGFzIGEgZGlmZmVyZW50IHN5 c3RlbSBpZGVudGlmaWVyIHNvCisjIHdlIGNhbiB0ZXN0IGlmIHRoZSB0YXJnZXQgY2x1c3RlciBp cyBhIGNvcHkgb2YgdGhlIHNvdXJjZSBjbHVzdGVyLgorbXkgJG5vZGVfZiA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZV9mJyk7Ciskbm9kZV9mLT5pbml0KGZvcmNlX2luaXRk YiA9PiAxLCBhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9mLT5zdGFydDsK KworIyBPbiBub2RlIFAKKyMgLSBjcmVhdGUgZGF0YWJhc2VzCisjIC0gY3JlYXRlIHRlc3QgdGFi bGVzCisjIC0gaW5zZXJ0IGEgcm93CisjIC0gY3JlYXRlIGEgcGh5c2ljYWwgcmVwbGljYXRpb24g c2xvdAorJG5vZGVfcC0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIERBVEFC QVNFIHBnMTsKKwlDUkVBVEUgREFUQUJBU0UgcGcyOworKSk7Ciskbm9kZV9wLT5zYWZlX3BzcWwo J3BnMScsICdDUkVBVEUgVEFCTEUgdGJsMSAoYSB0ZXh0KScpOworJG5vZGVfcC0+c2FmZV9wc3Fs KCdwZzEnLCAiSU5TRVJUIElOVE8gdGJsMSBWQUxVRVMoJ2ZpcnN0IHJvdycpIik7Ciskbm9kZV9w LT5zYWZlX3BzcWwoJ3BnMicsICdDUkVBVEUgVEFCTEUgdGJsMiAoYSB0ZXh0KScpOworbXkgJHNs b3RuYW1lID0gJ3BoeXNpY2FsX3Nsb3QnOworJG5vZGVfcC0+c2FmZV9wc3FsKCdwZzInLAorCSJT RUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRzbG90bmFtZScpIik7 CisKKyMgU2V0IHVwIG5vZGUgUyBhcyBzdGFuZGJ5IGxpbmtpbmcgdG8gbm9kZSBQCiskbm9kZV9w LT5iYWNrdXAoJ2JhY2t1cF8xJyk7CitteSAkbm9kZV9zID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdub2RlX3MnKTsKKyRub2RlX3MtPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcCwg J2JhY2t1cF8xJywgaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3MtPmFwcGVuZF9jb25mKAor CSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKK3ByaW1hcnlfc2xvdF9uYW1lID0gJyRzbG90bmFtZScK K10pOworJG5vZGVfcy0+c2V0X3N0YW5kYnlfbW9kZSgpOworJG5vZGVfcy0+c3RhcnQ7CisKKyMg UnVuIHBnX2NyZWF0ZXN1YnNjcmliZXIgb24gYWJvdXQtdG8tZmFpbCBub2RlIEYKK2NvbW1hbmRf ZmFpbHMoCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsICctLXZlcmJvc2UnLAorCQknLS1w Z2RhdGEnLCAkbm9kZV9mLT5kYXRhX2RpciwKKwkJJy0tcHVibGlzaGVyLXNlcnZlcicsICRub2Rl X3AtPmNvbm5zdHIoJ3BnMScpLAorCQknLS1zb2NrZXQtZGlyZWN0b3J5JywgJG5vZGVfZi0+aG9z dCwKKwkJJy0tc3Vic2NyaWJlci1wb3J0JywgJG5vZGVfZi0+cG9ydCwKKwkJJy0tZGF0YWJhc2Un LCAncGcxJywKKwkJJy0tZGF0YWJhc2UnLCAncGcyJworCV0sCisJJ3N1YnNjcmliZXIgZGF0YSBk aXJlY3RvcnkgaXMgbm90IGEgY29weSBvZiB0aGUgc291cmNlIGRhdGFiYXNlIGNsdXN0ZXInKTsK KworIyBTZXQgdXAgbm9kZSBDIGFzIHN0YW5kYnkgbGlua2luZyB0byBub2RlIFMKKyRub2RlX3Mt PmJhY2t1cCgnYmFja3VwXzInKTsKK215ICRub2RlX2MgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ25vZGVfYycpOworJG5vZGVfYy0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9zLCAn YmFja3VwXzInLCBoYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfYy0+c2V0X3N0YW5kYnlfbW9k ZSgpOworJG5vZGVfYy0+c3RhcnQ7CisKKyMgUnVuIHBnX2NyZWF0ZXN1YnNjcmliZXIgb24gbm9k ZSBDIChQIC0+IFMgLT4gQykKK2NvbW1hbmRfZmFpbHMoCisJWworCQkncGdfY3JlYXRlc3Vic2Ny aWJlcicsICctLXZlcmJvc2UnLAorCQknLS1kcnktcnVuJywgJy0tcGdkYXRhJywKKwkJJG5vZGVf Yy0+ZGF0YV9kaXIsICctLXB1Ymxpc2hlci1zZXJ2ZXInLAorCQkkbm9kZV9zLT5jb25uc3RyKCdw ZzEnKSwKKwkJJy0tc29ja2V0LWRpcmVjdG9yeScsICRub2RlX2MtPmhvc3QsCisJCSctLXN1YnNj cmliZXItcG9ydCcsICRub2RlX2MtPnBvcnQsCisJCSctLWRhdGFiYXNlJywgJ3BnMScsCisJCSct LWRhdGFiYXNlJywgJ3BnMicKKwldLAorCSdwcmltYXJ5IHNlcnZlciBpcyBpbiByZWNvdmVyeScp OworCisjIFN0b3Agbm9kZSBDCiskbm9kZV9jLT50ZWFyZG93bl9ub2RlOworCisjIEluc2VydCBh bm90aGVyIHJvdyBvbiBub2RlIFAgYW5kIHdhaXQgbm9kZSBTIHRvIGNhdGNoIHVwCiskbm9kZV9w LT5zYWZlX3BzcWwoJ3BnMScsICJJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUygnc2Vjb25kIHJvdycp Iik7Ciskbm9kZV9wLT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zKTsKKworIyBDaGVj ayBzb21lIHVubWV0IGNvbmRpdGlvbnMgb24gbm9kZSBQCiskbm9kZV9wLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgcXsKK3dhbF9sZXZlbCA9IHJlcGxpY2EKK21heF9yZXBsaWNhdGlv bl9zbG90cyA9IDEKK21heF93YWxfc2VuZGVycyA9IDEKK21heF93b3JrZXJfcHJvY2Vzc2VzID0g MgorfSk7Ciskbm9kZV9wLT5yZXN0YXJ0OworY29tbWFuZF9mYWlscygKKwlbCisJCSdwZ19jcmVh dGVzdWJzY3JpYmVyJywgJy0tdmVyYm9zZScsCisJCSctLWRyeS1ydW4nLCAnLS1wZ2RhdGEnLAor CQkkbm9kZV9zLT5kYXRhX2RpciwgJy0tcHVibGlzaGVyLXNlcnZlcicsCisJCSRub2RlX3AtPmNv bm5zdHIoJ3BnMScpLAorCQknLS1zb2NrZXQtZGlyZWN0b3J5JywgJG5vZGVfcy0+aG9zdCwKKwkJ Jy0tc3Vic2NyaWJlci1wb3J0JywgJG5vZGVfcy0+cG9ydCwKKwkJJy0tZGF0YWJhc2UnLCAncGcx JywKKwkJJy0tZGF0YWJhc2UnLCAncGcyJworCV0sCisJJ3ByaW1hcnkgY29udGFpbnMgdW5tZXQg Y29uZGl0aW9ucyBvbiBub2RlIFAnKTsKKyMgUmVzdG9yZSBkZWZhdWx0IHNldHRpbmdzIGhlcmUg YnV0IG9ubHkgYXBwbHkgaXQgYWZ0ZXIgdGVzdGluZyBzdGFuZGJ5LiBTb21lCisjIHN0YW5kYnkg c2V0dGluZ3Mgc2hvdWxkIG5vdCBiZSBhIGxvd2VyIHNldHRpbmcgdGhhbiBvbiB0aGUgcHJpbWFy eS4KKyRub2RlX3AtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVs ID0gbG9naWNhbAorbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gMTAKK21heF93YWxfc2VuZGVycyA9 IDEwCittYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDgKK30pOworCisjIENoZWNrIHNvbWUgdW5tZXQg Y29uZGl0aW9ucyBvbiBub2RlIFMKKyRub2RlX3MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCBxeworbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gMQorbWF4X2xvZ2ljYWxfcmVwbGljYXRp b25fd29ya2VycyA9IDEKK21heF93b3JrZXJfcHJvY2Vzc2VzID0gMgorfSk7Ciskbm9kZV9zLT5y ZXN0YXJ0OworY29tbWFuZF9mYWlscygKKwlbCisJCSdwZ19jcmVhdGVzdWJzY3JpYmVyJywgJy0t dmVyYm9zZScsCisJCSctLWRyeS1ydW4nLCAnLS1wZ2RhdGEnLAorCQkkbm9kZV9zLT5kYXRhX2Rp ciwgJy0tcHVibGlzaGVyLXNlcnZlcicsCisJCSRub2RlX3AtPmNvbm5zdHIoJ3BnMScpLAorCQkn LS1zb2NrZXQtZGlyZWN0b3J5JywgJG5vZGVfcy0+aG9zdCwKKwkJJy0tc3Vic2NyaWJlci1wb3J0 JywgJG5vZGVfcy0+cG9ydCwKKwkJJy0tZGF0YWJhc2UnLCAncGcxJywKKwkJJy0tZGF0YWJhc2Un LCAncGcyJworCV0sCisJJ3N0YW5kYnkgY29udGFpbnMgdW5tZXQgY29uZGl0aW9ucyBvbiBub2Rl IFMnKTsKKyRub2RlX3MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworbWF4X3Jl cGxpY2F0aW9uX3Nsb3RzID0gMTAKK21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0 CittYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDgKK30pOworIyBSZXN0b3JlIGRlZmF1bHQgc2V0dGlu Z3Mgb24gYm90aCBzZXJ2ZXJzCiskbm9kZV9zLT5yZXN0YXJ0OworJG5vZGVfcC0+cmVzdGFydDsK KworIyBkcnkgcnVuIG1vZGUgb24gbm9kZSBTCitjb21tYW5kX29rKAorCVsKKwkJJ3BnX2NyZWF0 ZXN1YnNjcmliZXInLCAnLS12ZXJib3NlJywKKwkJJy0tZHJ5LXJ1bicsICctLXBnZGF0YScsCisJ CSRub2RlX3MtPmRhdGFfZGlyLCAnLS1wdWJsaXNoZXItc2VydmVyJywKKwkJJG5vZGVfcC0+Y29u bnN0cigncGcxJyksCisJCSctLXNvY2tldC1kaXJlY3RvcnknLCAkbm9kZV9zLT5ob3N0LAorCQkn LS1zdWJzY3JpYmVyLXBvcnQnLCAkbm9kZV9zLT5wb3J0LAorCQknLS1kYXRhYmFzZScsICdwZzEn LAorCQknLS1kYXRhYmFzZScsICdwZzInCisJXSwKKwkncnVuIHBnX2NyZWF0ZXN1YnNjcmliZXIg LS1kcnktcnVuIG9uIG5vZGUgUycpOworCisjIENoZWNrIGlmIG5vZGUgUyBpcyBzdGlsbCBhIHN0 YW5kYnkKK2lzKCRub2RlX3MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIHBnX2NhdGFs b2cucGdfaXNfaW5fcmVjb3ZlcnkoKScpLAorCSd0JywgJ3N0YW5kYnkgaXMgaW4gcmVjb3Zlcnkn KTsKKworIyBwZ19jcmVhdGVzdWJzY3JpYmVyIGNhbiBydW4gd2l0aG91dCAtLWRhdGFiYXNlcyBv cHRpb24KK2NvbW1hbmRfb2soCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsICctLXZlcmJv c2UnLAorCQknLS1kcnktcnVuJywgJy0tcGdkYXRhJywKKwkJJG5vZGVfcy0+ZGF0YV9kaXIsICct LXB1Ymxpc2hlci1zZXJ2ZXInLAorCQkkbm9kZV9wLT5jb25uc3RyKCdwZzEnKSwKKwkJJy0tc29j a2V0LWRpcmVjdG9yeScsICRub2RlX3MtPmhvc3QsCisJCSctLXN1YnNjcmliZXItcG9ydCcsICRu b2RlX3MtPnBvcnQKKwldLAorCSdydW4gcGdfY3JlYXRlc3Vic2NyaWJlciB3aXRob3V0IC0tZGF0 YWJhc2VzJyk7CisKKyMgUnVuIHBnX2NyZWF0ZXN1YnNjcmliZXIgb24gbm9kZSBTCitjb21tYW5k X29rKAorCVsKKwkJJ3BnX2NyZWF0ZXN1YnNjcmliZXInLCAnLS12ZXJib3NlJywKKwkJJy0tdmVy Ym9zZScsICctLXBnZGF0YScsCisJCSRub2RlX3MtPmRhdGFfZGlyLCAnLS1wdWJsaXNoZXItc2Vy dmVyJywKKwkJJG5vZGVfcC0+Y29ubnN0cigncGcxJyksCisJCSctLXNvY2tldC1kaXJlY3Rvcnkn LCAkbm9kZV9zLT5ob3N0LAorCQknLS1zdWJzY3JpYmVyLXBvcnQnLCAkbm9kZV9zLT5wb3J0LAor CQknLS1kYXRhYmFzZScsICdwZzEnLAorCQknLS1kYXRhYmFzZScsICdwZzInCisJXSwKKwkncnVu IHBnX2NyZWF0ZXN1YnNjcmliZXIgb24gbm9kZSBTJyk7CisKKyMgQ29uZmlybSB0aGUgcGh5c2lj YWwgcmVwbGljYXRpb24gc2xvdCBoYXMgYmVlbiByZW1vdmVkCitteSAkcmVzdWx0ID0gJG5vZGVf cC0+c2FmZV9wc3FsKCdwZzEnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19yZXBsaWNhdGlv bl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1lJyIKKyk7CitpcygkcmVzdWx0LCBx cSgwKSwKKwkndGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgdXNlZCBhcyBwcmltYXJ5X3Ns b3RfbmFtZSBoYXMgYmVlbiByZW1vdmVkJworKTsKKworIyBJbnNlcnQgcm93cyBvbiBQCiskbm9k ZV9wLT5zYWZlX3BzcWwoJ3BnMScsICJJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUygndGhpcmQgcm93 JykiKTsKKyRub2RlX3AtPnNhZmVfcHNxbCgncGcyJywgIklOU0VSVCBJTlRPIHRibDIgVkFMVUVT KCdyb3cgMScpIik7CisKKyMgUElEIHNldHMgdG8gdW5kZWZpbmVkIGJlY2F1c2Ugc3Vic2NyaWJl ciB3YXMgc3RvcHBlZCBiZWhpbmQgdGhlIHNjZW5lcy4KKyMgU3RhcnQgc3Vic2NyaWJlcgorJG5v ZGVfcy0+e19waWR9ID0gdW5kZWY7Ciskbm9kZV9zLT5zdGFydDsKKworIyBHZXQgc3Vic2NyaXB0 aW9uIG5hbWVzCiskcmVzdWx0ID0gJG5vZGVfcy0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCVNFTEVDVCBzdWJuYW1lIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgfiAn XnBnX2NyZWF0ZXN1YnNjcmliZXJfJworKSk7CitteSBAc3VibmFtZXMgPSBzcGxpdCgiXG4iLCAk cmVzdWx0KTsKKworIyBXYWl0IHN1YnNjcmliZXIgdG8gY2F0Y2ggdXAKKyRub2RlX3MtPndhaXRf Zm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3AsICRzdWJuYW1lc1swXSk7Ciskbm9kZV9zLT53 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wLCAkc3VibmFtZXNbMV0pOworCisjIENo ZWNrIHJlc3VsdCBvbiBkYXRhYmFzZSBwZzEKKyRyZXN1bHQgPSAkbm9kZV9zLT5zYWZlX3BzcWwo J3BnMScsICdTRUxFQ1QgKiBGUk9NIHRibDEnKTsKK2lzKCAkcmVzdWx0LCBxcShmaXJzdCByb3cK K3NlY29uZCByb3cKK3RoaXJkIHJvdyksCisJJ2xvZ2ljYWwgcmVwbGljYXRpb24gd29ya3Mgb24g ZGF0YWJhc2UgcGcxJyk7CisKKyMgQ2hlY2sgcmVzdWx0IG9uIGRhdGFiYXNlIHBnMgorJHJlc3Vs dCA9ICRub2RlX3MtPnNhZmVfcHNxbCgncGcyJywgJ1NFTEVDVCAqIEZST00gdGJsMicpOworaXMo JHJlc3VsdCwgcXEocm93IDEpLCAnbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrcyBvbiBkYXRhYmFz ZSBwZzInKTsKKworIyBEaWZmZXJlbnQgc3lzdGVtIGlkZW50aWZpZXI/CitteSAkc3lzaWRfcCA9 ICRub2RlX3AtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdTRUxFQ1Qgc3lzdGVtX2lkZW50aWZp ZXIgRlJPTSBwZ19jb250cm9sX3N5c3RlbSgpJyk7CitteSAkc3lzaWRfcyA9ICRub2RlX3MtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSdTRUxFQ1Qgc3lzdGVtX2lkZW50aWZpZXIgRlJPTSBwZ19j b250cm9sX3N5c3RlbSgpJyk7Citvaygkc3lzaWRfcCAhPSAkc3lzaWRfcywgJ3N5c3RlbSBpZGVu dGlmaWVyIHdhcyBjaGFuZ2VkJyk7CisKKyMgY2xlYW4gdXAKKyRub2RlX3AtPnRlYXJkb3duX25v ZGU7Ciskbm9kZV9zLT50ZWFyZG93bl9ub2RlOworJG5vZGVfZi0+dGVhcmRvd25fbm9kZTsKKwor ZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQzLjAKCg== --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_ Content-Type: application/octet-stream; name="v28-0002-Use-last-replication-slot-position-as-replicatio.patch" Content-Description: v28-0002-Use-last-replication-slot-position-as-replicatio.patch Content-Disposition: attachment; filename="v28-0002-Use-last-replication-slot-position-as-replicatio.patch"; size=7703; creation-date="Wed, 13 Mar 2024 07:45:31 GMT"; modification-date="Wed, 13 Mar 2024 07:47:52 GMT" Content-Transfer-Encoding: base64 RnJvbSA1M2NiMDU0NDU4NTRmMTg2ODQxMDUyYzhhYjU4Nzk4YWUxMDU4ZTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KRGF0 ZTogV2VkLCA2IE1hciAyMDI0IDE3OjUwOjAxIC0wMzAwClN1YmplY3Q6IFtQQVRDSCB2MjggMi80 XSBVc2UgbGFzdCByZXBsaWNhdGlvbiBzbG90IHBvc2l0aW9uIGFzIHJlcGxpY2F0aW9uCiBzdGFy dCBwb2ludAoKSW5zdGVhZCBvZiB1c2luZyBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90LCB1 c2UgdGhlIGxhc3QKcmVwbGljYXRpb24gc2xvdCBwb3NpdGlvbiAoTFNOKS4KLS0tCiBkb2Mvc3Jj L3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbCAgIHwgMTcgKystLS0tCiBzcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jIHwgNjAgKysrKysrKysrKy0tLS0t LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJlci5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKaW5kZXggOGNhOWRl NTExOS4uYTg4OWNlYTM4NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVz dWJzY3JpYmVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVy LnNnbWwKQEAgLTM1MCwxOSArMzUwLDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAg ICA8cXVvdGU+PGxpdGVyYWw+cGdfY3JlYXRlc3Vic2NyaWJlcl8ldV8lZDwvbGl0ZXJhbD48L3F1 b3RlPiAocGFyYW1ldGVyczoKICAgICAgZGF0YWJhc2UgPHBhcmFtZXRlcj5vaWQ8L3BhcmFtZXRl cj4sIFBJRCA8cGFyYW1ldGVyPmludDwvcGFyYW1ldGVyPikuCiAgICAgIFRoZXNlIHJlcGxpY2F0 aW9uIHNsb3RzIHdpbGwgYmUgdXNlZCBieSB0aGUgc3Vic2NyaXB0aW9ucyBpbiBhIGZ1dHVyZSBz dGVwLgotICAgIDwvcGFyYT4KLSAgIDwvc3RlcD4KLQotICAgPHN0ZXA+Ci0gICAgPHBhcmE+Ci0g ICAgIENyZWF0ZSBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IHRvIGdldCBhIGNvbnNpc3Rl bnQgc3RhcnQgbG9jYXRpb24uCi0gICAgIFRoaXMgcmVwbGljYXRpb24gc2xvdCBoYXMgdGhlIGZv bGxvd2luZyBuYW1lIHBhdHRlcm46Ci0gICAgIDxxdW90ZT48bGl0ZXJhbD5wZ19jcmVhdGVzdWJz Y3JpYmVyXyVkX3N0YXJ0cG9pbnQ8L2xpdGVyYWw+PC9xdW90ZT4KLSAgICAgKHBhcmFtZXRlcjog UElEIDxwYXJhbWV0ZXI+aW50PC9wYXJhbWV0ZXI+KS4gVGhlIExTTiByZXR1cm5lZCBieQotICAg ICA8bGluayBsaW5rZW5kPSJwZy1jcmVhdGUtbG9naWNhbC1yZXBsaWNhdGlvbi1zbG90Ij48ZnVu Y3Rpb24+cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgpPC9mdW5jdGlvbj48L2xp bms+Ci0gICAgIGlzIHVzZWQgYXMgYSBzdG9wcGluZyBwb2ludCBpbiB0aGUgPHhyZWYgbGlua2Vu ZD0iZ3VjLXJlY292ZXJ5LXRhcmdldC1sc24iLz4KLSAgICAgcGFyYW1ldGVyIGFuZCBieSB0aGUg c3Vic2NyaXB0aW9ucyBhcyBhIHJlcGxpY2F0aW9uIHN0YXJ0IHBvaW50LiBJdAotICAgICBndWFy YW50ZWVzIHRoYXQgbm8gdHJhbnNhY3Rpb24gd2lsbCBiZSBsb3N0LgorICAgICBUaGUgbGFzdCBy ZXBsaWNhdGlvbiBzbG90IExTTiBpcyB1c2VkIGFzIGEgc3RvcHBpbmcgcG9pbnQgaW4gdGhlCisg ICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZWNvdmVyeS10YXJnZXQtbHNuIi8+IHBhcmFtZXRlciBh bmQgYnkgdGhlCisgICAgIHN1YnNjcmlwdGlvbnMgYXMgYSByZXBsaWNhdGlvbiBzdGFydCBwb2lu dC4gSXQgZ3VhcmFudGVlcyB0aGF0IG5vCisgICAgIHRyYW5zYWN0aW9uIHdpbGwgYmUgbG9zdC4K ICAgICA8L3BhcmE+CiAgICA8L3N0ZXA+CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3Jl YXRlc3Vic2NyaWJlci5jCmluZGV4IDU2NjQxZjU4M2MuLjJhMGNkNDdhOGQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jp bi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwpAQCAtNzMsMTEgKzczLDEyIEBA IHN0YXRpYyB2b2lkIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IGNoYXIgKnBnX3Jlc2V0 d2FsX3BhdGgsCiAJCQkJCQkJCQlzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCk7 CiBzdGF0aWMgYm9vbCBzZXJ2ZXJfaXNfaW5fcmVjb3ZlcnkoUEdjb25uICpjb25uKTsKIHN0YXRp YyB2b2lkIGNoZWNrX3B1Ymxpc2hlcihzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7Ci1z dGF0aWMgdm9pZCBzZXR1cF9wdWJsaXNoZXIoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8p Oworc3RhdGljIGNoYXIgKnNldHVwX3B1Ymxpc2hlcihzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRi aW5mbyk7CiBzdGF0aWMgdm9pZCBjaGVja19zdWJzY3JpYmVyKHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKTsKIHN0YXRpYyB2b2lkIHNldHVwX3N1YnNjcmliZXIoc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNvbnNpc3RlbnRfbHNuKTsKLXN0 YXRpYyBjaGFyICpzZXR1cF9yZWNvdmVyeShzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbywg Y2hhciAqZGF0YWRpcik7CitzdGF0aWMgdm9pZCBzZXR1cF9yZWNvdmVyeShzdHJ1Y3QgTG9naWNh bFJlcEluZm8gKmRiaW5mbywgY2hhciAqZGF0YWRpciwKKwkJCQkJCSAgIGNoYXIgKmxzbik7CiBz dGF0aWMgdm9pZCBkcm9wX3ByaW1hcnlfcmVwbGljYXRpb25fc2xvdChzdHJ1Y3QgTG9naWNhbFJl cEluZm8gKmRiaW5mbywKIAkJCQkJCQkJCQkgIGNoYXIgKnNsb3RuYW1lKTsKIHN0YXRpYyBjaGFy ICpjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwKQEAgLTU3MCwx MSArNTcxLDE1IEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IGNoYXIgKnBnX3Jlc2V0 d2FsX3BhdGgsIHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0CiAKIC8qCiAgKiBDcmVhdGUgdGhl IHB1YmxpY2F0aW9ucyBhbmQgcmVwbGljYXRpb24gc2xvdHMgaW4gcHJlcGFyYXRpb24gZm9yIGxv Z2ljYWwKLSAqIHJlcGxpY2F0aW9uLgorICogcmVwbGljYXRpb24uIFJldHVybnMgdGhlIExTTiBm cm9tIGxhdGVzdCByZXBsaWNhdGlvbiBzbG90LiBJdCB3aWxsIGJlIHRoZQorICogcmVwbGljYXRp b24gc3RhcnQgcG9pbnQgdGhhdCBpcyB1c2VkIHRvIGFkanVzdCB0aGUgc3Vic2NyaXB0aW9ucyAo c2VlCisgKiBzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3MpLgogICovCi1zdGF0aWMgdm9pZAorc3Rh dGljIGNoYXIgKgogc2V0dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZv KQogeworCWNoYXIJICAgKmxzbiA9IE5VTEw7CisKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bV9k YnM7IGkrKykKIAl7CiAJCVBHY29ubgkgICAqY29ubjsKQEAgLTYzNyw4ICs2NDIsMTAgQEAgc2V0 dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCQlkYmluZm9baV0u c3VibmFtZSA9IHBnX3N0cmR1cChyZXBsc2xvdG5hbWUpOwogCiAJCS8qIENyZWF0ZSByZXBsaWNh dGlvbiBzbG90IG9uIHB1Ymxpc2hlciAqLwotCQlpZiAoY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRp b25fc2xvdChjb25uLCAmZGJpbmZvW2ldLCBmYWxzZSkgIT0gTlVMTCB8fAotCQkJZHJ5X3J1bikK KwkJaWYgKGxzbikKKwkJCXBnX2ZyZWUobHNuKTsKKwkJbHNuID0gY3JlYXRlX2xvZ2ljYWxfcmVw bGljYXRpb25fc2xvdChjb25uLCAmZGJpbmZvW2ldLCBmYWxzZSk7CisJCWlmIChsc24gIT0gTlVM TCB8fCBkcnlfcnVuKQogCQkJcGdfbG9nX2luZm8oImNyZWF0ZSByZXBsaWNhdGlvbiBzbG90IFwi JXNcIiBvbiBwdWJsaXNoZXIiLAogCQkJCQkJcmVwbHNsb3RuYW1lKTsKIAkJZWxzZQpAQCAtNjQ2 LDYgKzY1Myw4IEBAIHNldHVwX3B1Ymxpc2hlcihzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5m bykKIAogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsKIAl9CisKKwlyZXR1cm4g bHNuOwogfQogCiAvKgpAQCAtMTAxMiwxNCArMTAyMSwxMSBAQCBzZXR1cF9zdWJzY3JpYmVyKHN0 cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpjb25zaXN0ZW50X2xzbikK IH0KIAogLyoKLSAqIEdldCBhIHJlcGxpY2F0aW9uIHN0YXJ0IGxvY2F0aW9uIGFuZCB3cml0ZSB0 aGUgcmVxdWlyZWQgcmVjb3ZlcnkgcGFyYW1ldGVycwotICogaW50byB0aGUgY29uZmlndXJhdGlv biBmaWxlLiBSZXR1cm5zIHRoZSByZXBsaWNhdGlvbiBzdGFydCBsb2NhdGlvbiB0aGF0IGlzCi0g KiB1c2VkIHRvIGFkanVzdCB0aGUgc3Vic2NyaXB0aW9ucyAoc2VlIHNldF9yZXBsaWNhdGlvbl9w cm9ncmVzcykuCisgKiBXcml0ZSB0aGUgcmVxdWlyZWQgcmVjb3ZlcnkgcGFyYW1ldGVycy4KICAq Lwotc3RhdGljIGNoYXIgKgotc2V0dXBfcmVjb3Zlcnkoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpk YmluZm8sIGNoYXIgKmRhdGFkaXIpCitzdGF0aWMgdm9pZAorc2V0dXBfcmVjb3Zlcnkoc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNoYXIgKmRhdGFkaXIsIGNoYXIgKmxzbikKIHsKLQlj aGFyCSAgICpjb25zaXN0ZW50X2xzbjsKIAlQR2Nvbm4JICAgKmNvbm47CiAJUFFFeHBCdWZmZXIg cmVjb3Zlcnljb25mY29udGVudHM7CiAKQEAgLTEwMzMsMTUgKzEwMzksMTIgQEAgc2V0dXBfcmVj b3Zlcnkoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNoYXIgKmRhdGFkaXIpCiAJLyoK IAkgKiBXcml0ZSByZWNvdmVyeSBwYXJhbWV0ZXJzLgogCSAqCi0JICogRGVzcGl0ZSBvZiB0aGUg cmVjb3ZlcnkgcGFyYW1ldGVycyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHN1YnNjcmliZXIsCi0J ICogdXNlIGEgcHVibGlzaGVyIGNvbm5lY3Rpb24gZm9yIHRoZSBmb2xsb3dpbmcgcmVjb3Zlcnkg ZnVuY3Rpb25zLiBUaGUKLQkgKiBjb25uZWN0aW9uIGlzIG9ubHkgdXNlZCB0byBjaGVjayB0aGUg Y3VycmVudCBzZXJ2ZXIgdmVyc2lvbiAocGh5c2ljYWwKLQkgKiByZXBsaWNhLCBzYW1lIHNlcnZl ciB2ZXJzaW9uKS4gVGhlIHN1YnNjcmliZXIgaXMgbm90IHJ1bm5pbmcgeWV0LiBJbgotCSAqIGRy eSBydW4gbW9kZSwgdGhlIHJlY292ZXJ5IHBhcmFtZXRlcnMgKndvbid0KiBiZSB3cml0dGVuLiBB biBpbnZhbGlkCi0JICogTFNOIGlzIHVzZWQgZm9yIHByaW50aW5nIHB1cnBvc2VzLiBBZGRpdGlv bmFsIHJlY292ZXJ5IHBhcmFtZXRlcnMgYXJlCi0JICogYWRkZWQgaGVyZS4gSXQgYXZvaWRzIHVu ZXhwZWN0ZWQgYmVoYXZpb3Igc3VjaCBhcyBlbmQgb2YgcmVjb3ZlcnkgYXMKLQkgKiBzb29uIGFz IGEgY29uc2lzdGVudCBzdGF0ZSBpcyByZWFjaGVkIChyZWNvdmVyeV90YXJnZXQpIGFuZCBmYWls dXJlIGR1ZQotCSAqIHRvIG11bHRpcGxlIHJlY292ZXJ5IHRhcmdldHMgKG5hbWUsIHRpbWUsIHhp ZCwgTFNOKS4KKwkgKiBUaGUgc3Vic2NyaWJlciBpcyBub3QgcnVubmluZyB5ZXQuIEluIGRyeSBy dW4gbW9kZSwgdGhlIHJlY292ZXJ5CisJICogcGFyYW1ldGVycyAqd29uJ3QqIGJlIHdyaXR0ZW4u IEFuIGludmFsaWQgTFNOIGlzIHVzZWQgZm9yIHByaW50aW5nCisJICogcHVycG9zZXMuIEFkZGl0 aW9uYWwgcmVjb3ZlcnkgcGFyYW1ldGVycyBhcmUgYWRkZWQgaGVyZS4gSXQgYXZvaWRzCisJICog dW5leHBlY3RlZCBiZWhhdmlvciBzdWNoIGFzIGVuZCBvZiByZWNvdmVyeSBhcyBzb29uIGFzIGEg Y29uc2lzdGVudAorCSAqIHN0YXRlIGlzIHJlYWNoZWQgKHJlY292ZXJ5X3RhcmdldCkgYW5kIGZh aWx1cmUgZHVlIHRvIG11bHRpcGxlIHJlY292ZXJ5CisJICogdGFyZ2V0cyAobmFtZSwgdGltZSwg eGlkLCBMU04pLgogCSAqLwogCXJlY292ZXJ5Y29uZmNvbnRlbnRzID0gR2VuZXJhdGVSZWNvdmVy eUNvbmZpZyhjb25uLCBOVUxMKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250 ZW50cywgInJlY292ZXJ5X3RhcmdldCA9ICcnXG4iKTsKQEAgLTEwNjUsMTQgKzEwNjgsMTIgQEAg c2V0dXBfcmVjb3Zlcnkoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNoYXIgKmRhdGFk aXIpCiAJZWxzZQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXIocmVjb3Zlcnljb25mY29udGVudHMs ICJyZWNvdmVyeV90YXJnZXRfbHNuID0gJyVzJ1xuIiwKLQkJCQkJCSAgY29uc2lzdGVudF9sc24p OworCQkJCQkJICBsc24pOwogCQlXcml0ZVJlY292ZXJ5Q29uZmlnKGNvbm4sIGRhdGFkaXIsIHJl Y292ZXJ5Y29uZmNvbnRlbnRzKTsKIAl9CiAJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBmYWxz ZSk7CiAKIAlwZ19sb2dfZGVidWcoInJlY292ZXJ5IHBhcmFtZXRlcnM6XG4lcyIsIHJlY292ZXJ5 Y29uZmNvbnRlbnRzLT5kYXRhKTsKLQotCXJldHVybiBjb25zaXN0ZW50X2xzbjsKIH0KIAogLyoK QEAgLTE5NDcsMTMgKzE5NDgsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICog cHJpbWFyeSBzbG90IGlzIGluIHVzZS4gV2UgY291bGQgdXNlIGFuIGV4dHJhIGNvbm5lY3Rpb24g Zm9yIGl0IGJ1dCBpdAogCSAqIGRvZXNuJ3Qgc2VlbSB3b3J0aC4KIAkgKi8KLQlzZXR1cF9wdWJs aXNoZXIoZGJpbmZvKTsKKwljb25zaXN0ZW50X2xzbiA9IHNldHVwX3B1Ymxpc2hlcihkYmluZm8p OwogCi0JLyoKLQkgKiBHZXQgdGhlIHJlcGxpY2F0aW9uIHN0YXJ0IHBvaW50IGFuZCB3cml0ZSB0 aGUgcmVxdWlyZWQgcmVjb3ZlcnkKLQkgKiBwYXJhbWV0ZXJzIGludG8gdGhlIGNvbmZpZ3VyYXRp b24gZmlsZS4KLQkgKi8KLQljb25zaXN0ZW50X2xzbiA9IHNldHVwX3JlY292ZXJ5KGRiaW5mbywg b3B0LnN1YnNjcmliZXJfZGlyKTsKKwkvKiBXcml0ZSB0aGUgcmVxdWlyZWQgcmVjb3ZlcnkgcGFy YW1ldGVycyAqLworCXNldHVwX3JlY292ZXJ5KGRiaW5mbywgb3B0LnN1YnNjcmliZXJfZGlyLCBj b25zaXN0ZW50X2xzbik7CiAKIAkvKgogCSAqIFJlc3RhcnQgc3Vic2NyaWJlciBzbyB0aGUgcmVj b3ZlcnkgcGFyYW1ldGVycyB3aWxsIHRha2UgZWZmZWN0LiBXYWl0CkBAIC0xOTY5LDcgKzE5Njcs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkvKgogCSAqIENyZWF0ZSB0aGUgc3Vi c2NyaXB0aW9uIGZvciBlYWNoIGRhdGFiYXNlIG9uIHN1YnNjcmliZXIuIEl0IGRvZXMgbm90CiAJ ICogZW5hYmxlIGl0IGltbWVkaWF0ZWx5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYWRqdXN0IHRoZSBy ZXBsaWNhdGlvbiBzdGFydAotCSAqIHBvaW50IHRvIHRoZSBMU04gcmVwb3J0ZWQgYnkgc2V0dXBf cmVjb3ZlcnkoKS4gIEl0IGFsc28gY2xlYW5zIHVwCisJICogcG9pbnQgdG8gdGhlIExTTiByZXBv cnRlZCBieSBzZXR1cF9wdWJsaXNoZXIoKS4gIEl0IGFsc28gY2xlYW5zIHVwCiAJICogcHVibGlj YXRpb25zIGNyZWF0ZWQgYnkgdGhpcyB0b29sIGFuZCByZXBsaWNhdGlvbiB0byB0aGUgc3RhbmRi eS4KIAkgKi8KIAlzZXR1cF9zdWJzY3JpYmVyKGRiaW5mbywgY29uc2lzdGVudF9sc24pOwotLSAK Mi40My4wCgo= --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_ Content-Type: application/octet-stream; name="v28-0003-port-replace-int-with-string.patch" Content-Description: v28-0003-port-replace-int-with-string.patch Content-Disposition: attachment; filename="v28-0003-port-replace-int-with-string.patch"; size=3749; creation-date="Wed, 13 Mar 2024 07:45:31 GMT"; modification-date="Wed, 13 Mar 2024 07:47:52 GMT" Content-Transfer-Encoding: base64 RnJvbSBkZDllNGM4OTU1YWRjOThiY2UxZGQxMWQwZTg5ZTAyMGE4MDNjOWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KRGF0 ZTogV2VkLCA2IE1hciAyMDI0IDIyOjAwOjIzIC0wMzAwClN1YmplY3Q6IFtQQVRDSCB2MjggMy80 XSBwb3J0OiByZXBsYWNlIGludCB3aXRoIHN0cmluZwoKLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNr dXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jIHwgMTcgKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFz ZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKaW5kZXggMmEwY2Q0N2E4ZC4uMDUyMTUzZTAw OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIu YworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCkBAIC0y OCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNsdWRl ICJnZXRvcHRfbG9uZy5oIgogCi0jZGVmaW5lCURFRkFVTFRfU1VCX1BPUlQJNTA0MzIKKyNkZWZp bmUJREVGQVVMVF9TVUJfUE9SVAkiNTA0MzIiCiAjZGVmaW5lCUJBU0VfT1VUUFVUX0RJUgkJInBn X2NyZWF0ZXN1YnNjcmliZXJfb3V0cHV0LmQiCiAKIC8qIENvbW1hbmQtbGluZSBvcHRpb25zICov CkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucwogCWNoYXIJ ICAgKnN1YnNjcmliZXJfZGlyOyAvKiBzdGFuZGJ5L3N1YnNjcmliZXIgZGF0YSBkaXJlY3Rvcnkg Ki8KIAljaGFyCSAgICpwdWJfY29ubmluZm9fc3RyOwkvKiBwdWJsaXNoZXIgY29ubmVjdGlvbiBz dHJpbmcgKi8KIAljaGFyCSAgICpzb2NrZXRfZGlyOwkJLyogZGlyZWN0b3J5IGZvciBVbml4LWRv bWFpbiBzb2NrZXQsIGlmIGFueSAqLwotCXVuc2lnbmVkIHNob3J0IHN1Yl9wb3J0OwkvKiBzdWJz Y3JpYmVyIHBvcnQgbnVtYmVyICovCisJY2hhcgkgICAqc3ViX3BvcnQ7CQkvKiBzdWJzY3JpYmVy IHBvcnQgbnVtYmVyICovCiAJY29uc3QgY2hhciAqc3ViX3VzZXJuYW1lOwkvKiBzdWJzY3JpYmVy IHVzZXJuYW1lICovCiAJU2ltcGxlU3RyaW5nTGlzdCBkYXRhYmFzZV9uYW1lczsJLyogbGlzdCBv ZiBkYXRhYmFzZSBuYW1lcyAqLwogCWludAkJCXJlY292ZXJ5X3RpbWVvdXQ7CS8qIHN0b3AgcmVj b3ZlcnkgYWZ0ZXIgdGhpcyB0aW1lICovCkBAIC0xOTcsNyArMTk3LDcgQEAgdXNhZ2Uodm9pZCkK IAlwcmludGYoXygiIC1kLCAtLWRhdGFiYXNlPURCTkFNRSAgICAgICAgICAgICAgIGRhdGFiYXNl IHRvIGNyZWF0ZSBhIHN1YnNjcmlwdGlvblxuIikpOwogCXByaW50ZihfKCIgLUQsIC0tcGdkYXRh PURBVEFESVIgICAgICAgICAgICAgICAgbG9jYXRpb24gZm9yIHRoZSBzdWJzY3JpYmVyIGRhdGEg ZGlyZWN0b3J5XG4iKSk7CiAJcHJpbnRmKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgICAgICAg ICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBkb25lXG4iKSk7Ci0JcHJp bnRmKF8oIiAtcCwgLS1zdWJzY3JpYmVyLXBvcnQ9UE9SVCAgICAgICAgICBzdWJzY3JpYmVyIHBv cnQgbnVtYmVyIChkZWZhdWx0ICVkKVxuIiksIERFRkFVTFRfU1VCX1BPUlQpOworCXByaW50Zihf KCIgLXAsIC0tc3Vic2NyaWJlci1wb3J0PVBPUlQgICAgICAgICAgc3Vic2NyaWJlciBwb3J0IG51 bWJlciAoZGVmYXVsdCAlcylcbiIpLCBERUZBVUxUX1NVQl9QT1JUKTsKIAlwcmludGYoXygiIC1Q LCAtLXB1Ymxpc2hlci1zZXJ2ZXI9Q09OTlNUUiAgICAgIHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0 cmluZ1xuIikpOwogCXByaW50ZihfKCIgLXMsIC0tc29ja2V0LWRpcmVjdG9yeT1ESVIgICAgICAg ICAgc29ja2V0IGRpcmVjdG9yeSB0byB1c2UgKGRlZmF1bHQgY3VycmVudCBkaXJlY3RvcnkpXG4i KSk7CiAJcHJpbnRmKF8oIiAtdCwgLS1yZWNvdmVyeS10aW1lb3V0PVNFQ1MgICAgICAgICBzZWNv bmRzIHRvIHdhaXQgZm9yIHJlY292ZXJ5IHRvIGVuZFxuIikpOwpAQCAtMTI2MCw3ICsxMjYwLDcg QEAgc3RhcnRfc3RhbmRieV9zZXJ2ZXIoc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpv cHQsIGNvbnN0IGNoYXIgKnBnX2N0bF9wYXQKIAlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21k LCAiXCIlc1wiIHN0YXJ0IC1EIFwiJXNcIiAtcyIsCiAJCQkJCSAgcGdfY3RsX3BhdGgsIG9wdC0+ c3Vic2NyaWJlcl9kaXIpOwogCWlmICh3aXRoX29wdGlvbnMpCi0JCWFwcGVuZFBRRXhwQnVmZmVy KHBnX2N0bF9jbWQsICIgLW8gXCItcCAldSVzXCIiLAorCQlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19j dGxfY21kLCAiIC1vIFwiLXAgJXMlc1wiIiwKIAkJCQkJCSAgb3B0LT5zdWJfcG9ydCwgc29ja2V0 X3N0cmluZyk7CiAJcGdfbG9nX2RlYnVnKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxf Y21kLT5kYXRhKTsKIAlyYyA9IHN5c3RlbShwZ19jdGxfY21kLT5kYXRhKTsKQEAgLTE3MDQsNyAr MTcwNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCW9wdC5zdWJzY3JpYmVyX2Rp ciA9IE5VTEw7CiAJb3B0LnB1Yl9jb25uaW5mb19zdHIgPSBOVUxMOwogCW9wdC5zb2NrZXRfZGly ID0gTlVMTDsKLQlvcHQuc3ViX3BvcnQgPSBERUZBVUxUX1NVQl9QT1JUOworCW9wdC5zdWJfcG9y dCA9IHBhbGxvYygxNik7CisJc3RyY3B5KG9wdC5zdWJfcG9ydCwgREVGQVVMVF9TVUJfUE9SVCk7 CiAJb3B0LnN1Yl91c2VybmFtZSA9IE5VTEw7CiAJb3B0LmRhdGFiYXNlX25hbWVzID0gKFNpbXBs ZVN0cmluZ0xpc3QpCiAJewpAQCAtMTc0OSw4ICsxNzUwLDggQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCQkJZHJ5X3J1biA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdwJzoK LQkJCQlpZiAoKG9wdC5zdWJfcG9ydCA9IGF0b2kob3B0YXJnKSkgPD0gMCkKLQkJCQkJcGdfZmF0 YWwoImludmFsaWQgc3Vic2NyaWJlciBwb3J0IG51bWJlciIpOworCQkJCXBnX2ZyZWUob3B0LnN1 Yl9wb3J0KTsKKwkJCQlvcHQuc3ViX3BvcnQgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQlicmVh azsKIAkJCWNhc2UgJ1AnOgogCQkJCW9wdC5wdWJfY29ubmluZm9fc3RyID0gcGdfc3RyZHVwKG9w dGFyZyk7CkBAIC0xODQ4LDcgKzE4NDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAogCXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIGNvbm5lY3Rpb24gc3RyaW5nIG9uIHN1YnNjcmli ZXIiKTsKICNpZiAhZGVmaW5lZChXSU4zMikKLQlzdWJfYmFzZV9jb25uaW5mbyA9IHBzcHJpbnRm KCJob3N0PSVzIHBvcnQ9JXUgdXNlcj0lcyBmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lPSVzIiwK KwlzdWJfYmFzZV9jb25uaW5mbyA9IHBzcHJpbnRmKCJob3N0PSVzIHBvcnQ9JXMgdXNlcj0lcyBm YWxsYmFja19hcHBsaWNhdGlvbl9uYW1lPSVzIiwKIAkJCQkJCQkJIG9wdC5zb2NrZXRfZGlyLCBv cHQuc3ViX3BvcnQsIG9wdC5zdWJfdXNlcm5hbWUsIHByb2duYW1lKTsKICNlbHNlCQkJCQkJCS8q IFdJTjMyICovCiAJc3ViX2Jhc2VfY29ubmluZm8gPSBwc3ByaW50ZigicG9ydD0ldSB1c2VyPSVz IGZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWU9JXMiLAotLSAKMi40My4wCgo= --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_ Content-Type: application/octet-stream; name="v28-0004-fix.patch" Content-Description: v28-0004-fix.patch Content-Disposition: attachment; filename="v28-0004-fix.patch"; size=994; creation-date="Wed, 13 Mar 2024 07:45:31 GMT"; modification-date="Wed, 13 Mar 2024 07:47:52 GMT" Content-Transfer-Encoding: base64 RnJvbSA5Y2E4Nzc1MzI1YmI3NTFmODY1NTFmMWI2MGZmZGY0ZTBjZTM0YTc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDEzIE1hciAyMDI0IDA3OjMwOjA1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggNC80XSBmaXgKCi0tLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNj cmliZXIuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3Jp YmVyLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCmluZGV4 IDA1MjE1M2UwMDkuLmM3OWVkOTA0NGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Ny ZWF0ZXN1YnNjcmliZXIuYwpAQCAtMTg1Miw3ICsxODUyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJc3ViX2Jhc2VfY29ubmluZm8gPSBwc3ByaW50ZigiaG9zdD0lcyBwb3J0PSVz IHVzZXI9JXMgZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZT0lcyIsCiAJCQkJCQkJCSBvcHQuc29j a2V0X2Rpciwgb3B0LnN1Yl9wb3J0LCBvcHQuc3ViX3VzZXJuYW1lLCBwcm9nbmFtZSk7CiAjZWxz ZQkJCQkJCQkvKiBXSU4zMiAqLwotCXN1Yl9iYXNlX2Nvbm5pbmZvID0gcHNwcmludGYoInBvcnQ9 JXUgdXNlcj0lcyBmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lPSVzIiwKKwlzdWJfYmFzZV9jb25u aW5mbyA9IHBzcHJpbnRmKCJwb3J0PSVzIHVzZXI9JXMgZmFsbGJhY2tfYXBwbGljYXRpb25fbmFt ZT0lcyIsCiAJCQkJCQkJCSBvcHQuc3ViX3BvcnQsIG9wdC5zdWJfdXNlcm5hbWUsIHByb2duYW1l KTsKICNlbmRpZgogCi0tIAoyLjQzLjAKCg== --_005_TYCPR01MB12077FD21BB186C5A685C0BF3F52A2TYCPR01MB12077jp_--