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 1rNB1U-009qY9-Hw for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jan 2024 12:16:01 +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 1rNB1T-00CU5J-Mz for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jan 2024 12:15:59 +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 1rNB1T-00CU5A-BN for pgsql-hackers@lists.postgresql.org; Tue, 09 Jan 2024 12:15:59 +0000 Received: from esa7.fujitsucc.c3s2.iphmx.com ([68.232.159.87]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNB1Q-000dxz-BZ for pgsql-hackers@postgresql.org; Tue, 09 Jan 2024 12:15:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1704802556; x=1736338556; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IOAmtpd/QsmYE//g+Kbkfq3NnzcKbxRG0vukLq+jxoM=; b=fDNP+ERKiqMWZqyDqKL1ZPjBa8wnuUqxytQ01eDZLVcE8saJZWUEYc4P XO3Vauzqu4WwktWuMSvTykKojYDLqYoZTXI5t4U+kN15n3VYpCqfzaa1e MY6iRRFalArOsKDZspuL6gqnfsVWebVuhupJ+b2XZC1wrc/E6Zf6K1B3y FeIiS/pU4KEBN6s8LS9vo+bPh7PsOxAUgG7m1E+mB4OsTC7q0AKsV93Wv 80w+lMLYrbThOpJ045i2CAALFhdAoqsKwUtxGWevgstI3sSuZO/uo4LQO 8DkNZvv1s2YRBJcovrCeFetOKlI6pwZ2WW+I6HrXP/Z/2vzzDhrNE1FoJ A==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="107673727" X-IronPort-AV: E=Sophos;i="6.04,182,1695654000"; d="scan'208";a="107673727" Received: from mail-os0jpn01lp2104.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.104]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 21:15:50 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jIRUGlxds4A5dwevHKJjg0qvYmhOxMXgPabqUc41OBA7d7QuyXCGKDVzMUFKgGyzS480mTsH4I9827w3voe9rCNbAx0cNr9usJ14nxPjrRkbBa6+O/PIVMM6NeBxCpezKx5wOtD9Kngxmu7NEsyV2KetkQHXBGp9jI03iw8pdoUTYp0hM/3gV5yBSpqrzg4OTS08pykWlsezavZfvJXM4EwBQWEdYXBOIVbLTMKGMinbYhoFg5iw7mpQjbS2GqrlUScRdWUhGx5ggXa+6wAxHTQ88c1pSYuz0Qw11Z+5cUho6WIo6maveSsMYOI3+a+zRRMxljJEcuVofqPRai6zCw== 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=IOAmtpd/QsmYE//g+Kbkfq3NnzcKbxRG0vukLq+jxoM=; b=L38hzrC6TfzSt2Q25atuFbz/HiJ8f4AjJUI40y3CJcIHZcJqvSidEBsQyQNftpKCkJtgyjobzYJhGFy4tx5IsUUS1N4+WffKQZ0VYMUTvup3gfURs9PayvR0pKOBrDNDwDkHvSz9qkDlC9lKkMX2BgbkBY5qsytX/3ZIFM6AFSO67MK8CGeOc79eFE38A5s3ec0cl9cV98MU+MYw3s4fAS2Rjsp+lzqRoQIHQraKiNgJ0m4iLw4j9LAGzqI3HUhhF+CoPeYEoYhtpg3Hr77gYs4qjRFrnPyLsTDnvO/qx6L+KO+3Ots3ipyxEipK0LYGZqi3l/KbxC6KBWhCVd8zYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYWPR01MB8348.jpnprd01.prod.outlook.com (2603:1096:400:177::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.15; Tue, 9 Jan 2024 12:15:46 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::638f:c5ac:dcaf:baa1]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::638f:c5ac:dcaf:baa1%7]) with mapi id 15.20.7181.015; Tue, 9 Jan 2024 12:15:46 +0000 From: "Zhijie Hou (Fujitsu)" To: Peter Smith , shveta malik CC: Amit Kapila , Masahiko Sawada , "Drouvot, Bertrand" , Nisha Moond , "Hayato Kuroda (Fujitsu)" , Bharath Rupireddy , Peter Eisentraut , Bruce Momjian , Ashutosh Sharma , Andres Freund , pgsql-hackers , Ajin Cherian , Alvaro Herrera Subject: RE: Synchronizing slots from primary to standby Thread-Topic: Synchronizing slots from primary to standby Thread-Index: AQHaJE9sgJJNJUqALky3mvuBKJq3g7CYl8uAgAC/xgCAANHogIAAa3WAgAArgoCAAQCOgIAADoeAgAA1dgCAABjKgIAABtwAgAL+XYCABKJcAIAAQJWAgAK2zQCAABFoAIAAWssAgADokgCAAKIxAIABM9iAgAUcsHCAAOg8AIAAsL6AgAEHJgCAAGl7gIAAGzGAgAljCKCAABkPgIABJ9qAgABFKACAApdEgIAANHAAgAanVQCAAbfUMIAA/DsAgAATNYCAB54sgIAAq0yQ Date: Tue, 9 Jan 2024 12:15:46 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9YmNlYmQ0OGMtMDAwMi00OGI2LWJlNzQtMzZmMDZkYWYx?= =?utf-8?B?ZDIyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZXREYXRlPTIwMjQtMDEtMDlUMTE6MzA6MzJaO01TSVBfTGFiZWxfYTcyOTVj?= =?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: OS0PR01MB5716:EE_|TYWPR01MB8348:EE_ x-ms-office365-filtering-correlation-id: 3224651f-e4d7-4d4d-f15c-08dc110cb5b0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: a70nBgf0sstH+6zKHEAHa73VgMBb0shaC2kgEIqCLczpOEFNEOKupvLTWIo/AyPgHzV8o/30uYxWKZlviJwxJsyI/AaZEBxzYMrab4mTMj4dkNCyyo0B8yHXJ0CSdmyb8Iw+fdbEFoWFm4hUBFtRuwIs2Nm3Nix+kZi3SZYmSWiyhVfH9dm1E7v0Tmo/MbihQOcKQ9PHRM+Hwl3v8RjaYqyPe56KtdRW1edazh583Z/9KfJVAOwVcZF6YLpU/G0a19yd4MNO/TWmHtxlebPSFeQ8/9UC35dvYxYs0momO2qDYriBqCQ5i8yQQsQthpPiB5/DNgZ8AtouhuTj/26+OpFsK35SUhTfJQBsAGJ+QfK7F19ixxfjD/CoLoQVbWfh7RREHU75Ze/yLHly9B71IdXoJTEDOHc9Iou4oWqXbUOuCi15217pD0nYrWRjUXc3Eqn0hM10mGV0kKvJKHBTTHBXN06McLnLAbpkJZcZ+5SXd6ETlMUYGRyKCyXcLd+5LNLooTSTjYqVcTzoAuJQ0D+IcG7rVhFf7vjslg+WZi+EdhtG1F+c+vjJ2iTeHnBfscCdcd1b9gqPZmHqWrOt6h6ESs7OsDgPjYRV+WZmL26uQmGOGqKefnVdb8RGaJ16WIth8Ny6sHiiUgAwsQqkQQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(396003)(346002)(136003)(366004)(230922051799003)(186009)(451199024)(1590799021)(1800799012)(64100799003)(55016003)(1580799018)(7696005)(53546011)(9686003)(6506007)(478600001)(71200400001)(26005)(38100700002)(122000001)(82960400001)(33656002)(85182001)(2906002)(30864003)(41300700001)(5660300002)(7416002)(66446008)(83380400001)(66946007)(86362001)(38070700009)(76116006)(4326008)(110136005)(52536014)(54906003)(64756008)(66476007)(66556008)(316002)(8676002)(8936002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ckxUcHZLVjVkTTRZTDZ6eGJFRjIxSUZTSEY4MzlWS2pqWWgwWlhjSUpReXha?= =?utf-8?B?b0twTklzd1ZkaDJQZTYzZk9SUUVkWlpIWlB4RmJ5Tm5sbTRqSjNQYlRhNTZi?= =?utf-8?B?YnhicGRjcXJLUWZzcGRJL1c5c1RWT1VPOWk2VkgrQU80OWlQZkpjL2I1bWt3?= =?utf-8?B?bWRoZ2hNcUlVRmJQcjN3OWNodXpVRWhwWmlkZDg5ZGphWXlScDh1eDZuRkdi?= =?utf-8?B?UnpGNTYxRjQxUkl0b2toRnEzRXhSMEZ4enl6NmRhZU5qV29TV0pGZTdoL2dB?= =?utf-8?B?VW1hN3FIalYwZzVEUHBpQzVXSGpMSG5VelJkTVBCeGFmd081K0xXekRoR1NB?= =?utf-8?B?SjJMNkN4SGx0bDFxWUJqdE1IKzRicFVhTnVpZUVzcTV1a3krVU1mOGZ3aDll?= =?utf-8?B?cXZXbkdYcmt1ajdZZVUwSlEvb1ZBenhaRWF1TG5rS1FPYTJWSVdFd1VCYlhU?= =?utf-8?B?YjhzdnpNUm5DZ0R3KzNiOS9jcUxDa0o5RnU5RDVDKytPbkltR1F1MHhqNWtG?= =?utf-8?B?aUYrVWV1ZE5wakJsM0Q3QjdmR3VjSWlDYm1Ld05jaFpSZUQ5aTBROU1iL1BF?= =?utf-8?B?K0tGVUhwU051cFl5cXVCV2g3aWh0NmJjclRpTE5IWGhyNjFFeFNJbktsbFlH?= =?utf-8?B?SzliS2QwZDlPRmdmcHVUUTdtRGpaRXY0WU10RVFwa2szZnNUc0RzYlVpMlBv?= =?utf-8?B?d25IV3c2RGFObjRlcVlKOEdIa0ZQWmJtNE9VMFU5dnFvUDhTTmZDeTdVd0kv?= =?utf-8?B?T1JWWW9SSmV4TGlHNW50VHdWbkNTOWQwRDJhUURwb213WXdPMlNDWkw5Rlgx?= =?utf-8?B?RWtOaDlpQmVCc2d1Ym41eUhHYWNKYkFsUTlmOERVRWpHN0J2U1RKcG1ZMFlv?= =?utf-8?B?VUFJb3c4THF4b1FBOG9adHpKK255S2NYTFJBZzFrb0oxSlgzeGhvZjdSYkJs?= =?utf-8?B?cHh3S05pVkpDamUyaXpJd2F1cEFqNDBwMms5OUtGSHlIc3pxVkJBck9KU0hJ?= =?utf-8?B?ejlIeWw5dDhlVkY0bktHSUJqZ1dQOGZGQ0FZcmc1YnR3VzliMkw2RUp1ZG9i?= =?utf-8?B?dTZoZmdBQitoUzVmUkZuVmdZS3VESVlKQ1NkRFdZRTlWNkZRZzlWaHMwdlRC?= =?utf-8?B?L0h3Ri9CYUpNWHlyN1JXR3Y1MVFLTXVEaWRrSzFPSVhvREU3L29LMEU2OGw5?= =?utf-8?B?dnUwcDFZK0VrcjRoQnZJeDVKei81YUlVZ3FINHhWT2pMcThqamVrSzZZcUl0?= =?utf-8?B?aDJ6TDFOV2xESFZFcHVhdEJFdHVHMlhtcFFVL2ZkWFhQZVNaTWlUZXZ3TVlx?= =?utf-8?B?UXZRNzI4UnhrSVRGVjVaRzRVVlZ3R3dOVnJZbFUxY0NvOU1ueGp5NVpOanBI?= =?utf-8?B?KzNxekRoNUJaMVR2bXFpL1JLRTN1TU1CSnJoQ2dCejFlNTRKOXFvSFVJMGI3?= =?utf-8?B?dXMvOUxQQzcreC9rQTZ5WGdEbDNtb1ZENi9DK20rY3VXVG1IRTFzaDRLdHgr?= =?utf-8?B?SWhZa1E0R28wSkY2OHprWldQYm9ZUks5RExJcmR3WlYwODYrVVdwTHBZem15?= =?utf-8?B?djRweTZBa3Nra0lyNkQ3aWs0dnp3S0RhSE1ncXF2NUplY0ZmeEg0eXd5M1lz?= =?utf-8?B?d1c3dWI0RldFWEYzNlRNRm0rSEsreE5uZ3A0d2g0WnNrN0FvbjNIbW1CaEJN?= =?utf-8?B?cmY1N0xjNHljVzlpTzhlQjM2QU56L1N2dE5QbFYwN1F3SGwwcFJLODZIZnNX?= =?utf-8?B?VWRDUGZHNlZqRmtLaEVlTVVacFo5SnlrZzdwM0xhR0FPY00rTEthQmlDSllk?= =?utf-8?B?TDlXZ2Noa0ZqZi9HSG5QZ0g0VjV0dlU5TGFDYnJhclJuS084V3NWSFRMbjlR?= =?utf-8?B?MXcwRmd0THVFR2NjYnpXWHEycVJsOEZ0ajRCTzdSUytCd1c3NHZaeStsemp5?= =?utf-8?B?NG1iY3hmbTk5OERaN1FlWEVlamViaElvOHU0a1ZSSGJVWlpWdGNxa3BPMThD?= =?utf-8?B?dlhvL0l0M2R3cE1ZL0dKUkZ1bEdMeVJnR1crc05kNHFBVDJHZ0pDUHJheWVx?= =?utf-8?B?UXZ6WkhWblF5ZDVha042T3hjVjNmbkNNRFNaWCs5SWc1aGx3RjlQeXhzNENn?= =?utf-8?Q?umE6wV9iWk4sVa503EFM3DvD3?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: f+RoG0agsudCi2hYEVYGbvqet535GTRyUu7qhxdYG4Lo+6x5nSX9PXTkzaAuZfmmmt1vjloRCntG1Bm82QebC1vwBIFHWrHVI3dQKZKQ1VsqKa8AvxIXBNFCgYOtu3OlytloGhOiFPZfhhZpnFZDXCwamXOBFeeRxg6d5w5QTxO72gDtzgjfmsYonNzRSKcrvTlxVyl20UWW6UHEP8GvUJXy9NQxHQpsbXdSXdjG+zV2y8i2td1l3iB/dK5vmR3eVOW/lJLoLd89ZlM/FxAZkga8IrAZNhi58jYlpMYliJI3bR+kbCkFsL49t2+w+TybnUkp683e6lts+oVZPD1Kbh3lLIczjmG97VksehuMj6r2uEEbbUxQrnaH4AD37l/qcK4yQ6xZpTuUaoGfXf26ra+U2fi9bQ/2s947y8H0cITcRl9VXMbSElhHA74+ujt2QdF3Mxhnkr/EuAB34q6CaZ4gznzk5ZCcQP4GOIopdUjyv+jNsbdU6MdjxlCdQPYEQnips2y6PJjWHj/9+yvQ6KCZbPjTCXKJh5URIIPDP/ubYayp/7URWwO/eRIN5wE7dvnn9dPIPJGQVSyFXLf+v2PRwrboL899IM6+6cl0rRON//ypmeIiZEg+gn2NZjFd X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3224651f-e4d7-4d4d-f15c-08dc110cb5b0 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 12:15:46.4741 (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: uTQ3aUhJZpdsoNz4SNfmM57qgAqjwfqGenbooVr24TELmsHED5zivNuHT8d7YF2/+oC2CLMijistPR7paw5n+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB8348 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gVHVlc2RheSwgSmFudWFyeSA5LCAyMDI0IDk6MTcgQU0gUGV0ZXIgU21pdGggPHNtaXRocGIy MjUwQGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBIZXJlIGFyZSBzb21lIHJldmlldyBjb21tZW50 cyBmb3IgcGF0Y2ggdjU3LTAwMDEuDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzIQ0KDQo+IA0K PiA9PT09PT0NCj4gZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwNCj4gDQo+IDEuIENSRUFURV9S RVBMSUNBVElPTl9TTE9UIC4uLiBGQUlMT1ZFUg0KPiANCj4gKyAgICAgICA8dmFybGlzdGVudHJ5 Pg0KPiArICAgICAgICA8dGVybT48bGl0ZXJhbD5GQUlMT1ZFUiBbIDxyZXBsYWNlYWJsZQ0KPiBj bGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD48L3Rlcm0+ DQo+ICsgICAgICAgIDxsaXN0aXRlbT4NCj4gKyAgICAgICAgIDxwYXJhPg0KPiArICAgICAgICAg IElmIHRydWUsIHRoZSBzbG90IGlzIGVuYWJsZWQgdG8gYmUgc3luY2VkIHRvIHRoZSBwaHlzaWNh bA0KPiArICAgICAgICAgIHN0YW5kYnlzIHNvIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbiBjYW4g YmUgcmVzdW1lZCBhZnRlciBmYWlsb3Zlci4NCj4gKyAgICAgICAgIDwvcGFyYT4NCj4gKyAgICAg ICAgPC9saXN0aXRlbT4NCj4gKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4NCj4gDQo+IFRoaXMgc3lu dGF4IHNheXMgcGFzc2luZyB0aGUgYm9vbGVhbiB2YWx1ZSBpcyBvcHRpb25hbC4gU28gdGhlIGRl ZmF1bHQgbmVlZHMgdG8NCj4gdGhlIHNwZWNpZmllZCBoZXJlIGluIHRoZSBkb2NzIChsaWtlIHdo YXQgdGhlIFRXT19QSEFTRSBvcHRpb24gZG9lcykuDQo+IA0KPiB+fn4NCj4gDQo+IDIuIEFMVEVS X1JFUExJQ0FUSU9OX1NMT1QgLi4uIEZBSUxPVkVSDQo+IA0KPiArICAgICAgPHZhcmlhYmxlbGlz dD4NCj4gKyAgICAgICA8dmFybGlzdGVudHJ5Pg0KPiArICAgICAgICA8dGVybT48bGl0ZXJhbD5G QUlMT1ZFUiBbIDxyZXBsYWNlYWJsZQ0KPiBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBs YWNlYWJsZT4gXTwvbGl0ZXJhbD48L3Rlcm0+DQo+ICsgICAgICAgIDxsaXN0aXRlbT4NCj4gKyAg ICAgICAgIDxwYXJhPg0KPiArICAgICAgICAgIElmIHRydWUsIHRoZSBzbG90IGlzIGVuYWJsZWQg dG8gYmUgc3luY2VkIHRvIHRoZSBwaHlzaWNhbA0KPiArICAgICAgICAgIHN0YW5kYnlzIHNvIHRo YXQgbG9naWNhbCByZXBsaWNhdGlvbiBjYW4gYmUgcmVzdW1lZCBhZnRlciBmYWlsb3Zlci4NCj4g KyAgICAgICAgIDwvcGFyYT4NCj4gKyAgICAgICAgPC9saXN0aXRlbT4NCj4gKyAgICAgICA8L3Zh cmxpc3RlbnRyeT4NCj4gKyAgICAgIDwvdmFyaWFibGVsaXN0Pg0KPiANCj4gVGhpcyBzeW50YXgg c2F5cyBwYXNzaW5nIHRoZSBib29sZWFuIHZhbHVlIGlzIG9wdGlvbmFsLiBTbyBpdCBuZWVkcyB0 byBiZQ0KPiBzcGVjaWZpZWQgaGVyZSBpbiB0aGUgZG9jcyB0aGF0IG5vdCBwYXNzaW5nIGEgdmFs dWUgd291bGQgYmUgdGhlIHNhbWUgYXMNCj4gcGFzc2luZyB0aGUgdmFsdWUgdHJ1ZS4NCg0KVGhl IGJlaGF2aW9yIHRoYXQgIm5vdCBwYXNzaW5nIGEgdmFsdWUgd291bGQgYmUgdGhlIHNhbWUgYXMg cGFzc2luZyB0aGUgdmFsdWUNCnRydWUgIiBpcyBkdWUgdG8gdGhlIHJ1bGUgb2YgZGVmR2V0Qm9v bGVhbigpLiBBbmQgYWxsIHRoZSBvcHRpb25zIG9mIGNvbW1hbmRzDQppbiB0aGlzIGRvY3VtZW50 IGJlaGF2ZSB0aGUgc2FtZSBpbiB0aGlzIGNhc2UsIHRoZXJlZm9yZSBJIHRoaW5rIHdlJ2QgYmV0 dGVyDQphZGQgZG9jdW1lbnQgZm9yIGl0IGluIGEgZ2VuZXJhbCBwbGFjZSBpbiBhIHNlcGFyYXRl IHBhdGNoL3RocmVhZCBpbnN0ZWFkIG9mDQptZW50aW9uaW5nIHRoaXMgaW4gZWFjaCBvcHRpb24n cyBwYXJhZ3JhcGguDQoNCj4gDQo+ID09PT09PQ0KPiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1 YnNjcmlwdGlvbi5zZ21sDQo+IA0KPiAzLg0KPiArICAgSWYgPGxpbmsNCj4gbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1mYWlsb3ZlciI+PGxpdGVyYWw+ZmFpbG92 ZXI8L2xpdA0KPiBlcmFsPjwvbGluaz4NCj4gKyAgIGlzIGVuYWJsZWQsIHlvdSBjYW4gdGVtcG9y YXJpbHkgZGlzYWJsZSBpdCBpbiBvcmRlciB0byBleGVjdXRlDQo+IHRoZXNlIGNvbW1hbmRzLg0K PiANCj4gL2luIG9yZGVyIHRvL3RvLw0KDQpUaGlzIHBhcnQgaGFzIGJlZW4gcmVtb3ZlZCBkdWUg dG8gZGVzaWduIGNoYW5nZS4NCg0KPiANCj4gfn5+DQo+IA0KPiA0Lg0KPiArICAgICA8cGFyYT4N Cj4gKyAgICAgIFdoZW4gYWx0ZXJpbmcgdGhlDQo+ICsgICAgICA8bGluaw0KPiBsaW5rZW5kPSJz cWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXNsb3QtbmFtZSI+PGxpdGVyYWw+c2xv dF9uYW0NCj4gZTwvbGl0ZXJhbD48L2xpbms+LA0KPiArICAgICAgdGhlIDxsaXRlcmFsPmZhaWxv dmVyPC9saXRlcmFsPiBwcm9wZXJ0eSBvZiB0aGUgbmV3IHNsb3QgbWF5DQo+IGRpZmZlciBmcm9t IHRoZQ0KPiArICAgICAgPGxpbmsNCj4gbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1w YXJhbXMtd2l0aC1mYWlsb3ZlciI+PGxpdGVyYWw+ZmFpbG92ZXI8L2xpdA0KPiBlcmFsPjwvbGlu az4NCj4gKyAgICAgIHBhcmFtZXRlciBzcGVjaWZpZWQgaW4gdGhlIHN1YnNjcmlwdGlvbi4gV2hl biBjcmVhdGluZyB0aGUgc2xvdCwNCj4gKyAgICAgIGVuc3VyZSB0aGUgc2xvdCBmYWlsb3ZlciBw cm9wZXJ0eSBtYXRjaGVzIHRoZQ0KPiArICAgICAgPGxpbmsNCj4gbGlua2VuZD0ic3FsLWNyZWF0 ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1mYWlsb3ZlciI+PGxpdGVyYWw+ZmFpbG92ZXI8L2xp dA0KPiBlcmFsPjwvbGluaz4NCj4gKyAgICAgIHBhcmFtZXRlciB2YWx1ZSBvZiB0aGUgc3Vic2Ny aXB0aW9uLg0KPiArICAgICA8L3BhcmE+DQo+IA0KPiA0YS4NCj4gdGhlIDxsaXRlcmFsPmZhaWxv dmVyPC9saXRlcmFsPiBwcm9wZXJ0eSBvZiB0aGUgbmV3IHNsb3QgbWF5IGRpZmZlcg0KPiANCj4g TWF5YmUgaXQgd291bGQgYmUgbW9yZSBjbGVhciBpZiB0aGF0IHNhaWQgInRoZSBmYWlsb3ZlciBw cm9wZXJ0eSB2YWx1ZSBvZiB0aGUNCj4gbmFtZWQgc2xvdC4uLiIuDQoNCkNoYW5nZWQuDQoNCj4g DQo+IH4NCj4gDQo+IDRiLg0KPiBJbiB0aGUgImZhaWxvdmVyIHByb3BlcnR5IG1hdGNoZXMiIHBh cnQgc2hvdWxkIHRoYXQgZmFpbG92ZXIgYWxzbyBiZSByZW5kZXJlZCBhcw0KPiA8bGl0ZXJhbD4g bGlrZSBiZWZvcmUgaW4gdGhlIHNhbWUgcGFyYWdyYXBoPw0KDQpBZGRlZC4NCg0KPiANCj4gPT09 PT09DQo+IGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbA0KPiANCj4gNS4NCj4gKyAgICAg PHJvdz4NCj4gKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+DQo+ICsgICAgICAgPHN0cnVjdGZpZWxkPmZhaWxvdmVy PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4NCj4gKyAgICAgIDwvcGFyYT4NCj4gKyAg ICAgIDxwYXJhPg0KPiArICAgICAgIFRydWUgaWYgdGhpcyBsb2dpY2FsIHNsb3QgaXMgZW5hYmxl ZCB0byBiZSBzeW5jZWQgdG8gdGhlIHBoeXNpY2FsDQo+ICsgICAgICAgc3RhbmRieXMgc28gdGhh dCBsb2dpY2FsIHJlcGxpY2F0aW9uIGNhbiBiZSByZXN1bWVkIGZyb20gdGhlIG5ldw0KPiBwcmlt YXJ5DQo+ICsgICAgICAgYWZ0ZXIgZmFpbG92ZXIuIEFsd2F5cyBmYWxzZSBmb3IgcGh5c2ljYWwg c2xvdHMuDQo+ICsgICAgICA8L3BhcmE+PC9lbnRyeT4NCj4gKyAgICAgPC9yb3c+DQo+IA0KPiAv VHJ1ZSBpZiB0aGlzIGxvZ2ljYWwgc2xvdCBpcyBlbmFibGVkLi4uL1RydWUgaWYgdGhpcyBpcyBh IGxvZ2ljYWwgc2xvdCBlbmFibGVkLi4uLw0KDQpDaGFuZ2VkLg0KDQo+IA0KPiA9PT09PT0NCj4g c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jDQo+IA0KPiA2LiBDcmVhdGVT dWJzY3JpcHRpb24NCj4gDQo+ICsgLyoNCj4gKyAqIEV2ZW4gaWYgZmFpbG92ZXIgaXMgc2V0LCBk b24ndCBjcmVhdGUgdGhlIHNsb3Qgd2l0aCBmYWlsb3Zlcg0KPiArICogZW5hYmxlZC4gV2lsbCBl bmFibGUgaXQgb25jZSBhbGwgdGhlIHRhYmxlcyBhcmUgc3luY2VkIGFuZA0KPiArICogcmVhZHku IFRoZSBpbnRlbnRpb24gaXMgdGhhdCBpZiBmYWlsb3ZlciBoYXBwZW5zIGF0IHRoZSB0aW1lIG9m DQo+ICsgKiB0YWJsZS1zeW5jLCB1c2VyIHNob3VsZCByZS1sYXVuY2ggdGhlIHN1YnNjcmlwdGlv biBpbnN0ZWFkIG9mDQo+ICsgKiByZWx5aW5nIG9uIG1haW4gc2xvdCAoaWYgc3luY2VkKSB3aXRo IG5vIHRhYmxlLXN5bmMgZGF0YQ0KPiArICogcHJlc2VudC4gV2hlbiB0aGUgc3Vic2NyaXB0aW9u IGhhcyBubyB0YWJsZXMsIGxlYXZlIGZhaWxvdmVyIGFzDQo+ICsgKiBmYWxzZSB0byBhbGxvdyBB TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8NCj4gKyAqIHdvcmsu DQo+ICsgKi8NCj4gKyBpZiAob3B0cy5mYWlsb3ZlciAmJiAhb3B0cy5jb3B5X2RhdGEgJiYgdGFi bGVzICE9IE5JTCkNCj4gKyBmYWlsb3Zlcl9lbmFibGVkID0gdHJ1ZTsNCj4gDQo+IEFGQUlDVCBp dCBtaWdodCBiZSBwb3NzaWJsZSBmb3IgdGhpcyB0byBzZXQgZmFpbG92ZXJfZW5hYmxlZCA9IHRy dWUgaWYgY29weV9kYXRhDQo+IGlzIGZhbHNlLiBTbyBmYWlsb3Zlcl9lbmFibGVkIHdvdWxkIGJl IHRydWUgd2hlbiBsYXRlcg0KPiBjYWxsaW5nOg0KPiAgIHdhbHJjdl9jcmVhdGVfc2xvdCh3cmNv bm4sIG9wdHMuc2xvdF9uYW1lLCBmYWxzZSwgdHdvcGhhc2VfZW5hYmxlZCwNCj4gICAgIGZhaWxv dmVyX2VuYWJsZWQsIENSU19OT0VYUE9SVF9TTkFQU0hPVCwgTlVMTCk7DQo+IA0KPiBJc24ndCB0 aGF0IGNvbnRyYXJ5IHRvIHdoYXQgdGhpcyBjb21tZW50IHNhaWQ6ICJFdmVuIGlmIGZhaWxvdmVy IGlzIHNldCwgZG9uJ3QNCj4gY3JlYXRlIHRoZSBzbG90IHdpdGggZmFpbG92ZXIgZW5hYmxlZCIN Cg0KVGhpcyBwYXJ0IGhhcyBiZWVuIHJlbW92ZWQgZHVlIHRvIGRlc2lnbiBjaGFuZ2UuDQoNCj4g DQo+IH5+fg0KPiANCj4gNy4gQWx0ZXJTdWJzY3JpcHRpb24uIGNhc2UgQUxURVJfU1VCU0NSSVBU SU9OX09QVElPTlM6DQo+IA0KPiArIGlmICghc3ViLT5zbG90bmFtZSkNCj4gKyBlcmVwb3J0KEVS Uk9SLA0KPiArIChlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLA0KPiArIGVycm1zZygiY2Fubm90IHNldCBmYWlsb3ZlciBmb3Igc3Vic2NyaXB0aW9uIHRo YXQgZG9lcyBub3QgaGF2ZSBzbG90DQo+ICsgbmFtZSIpKSk7DQo+IA0KPiAvZm9yIHN1YnNjcmlw dGlvbiB0aGF0IGRvZXMgbm90IGhhdmUgc2xvdCBuYW1lL2ZvciBhIHN1YnNjcmlwdGlvbiB0aGF0 IGRvZXMgbm90DQo+IGhhdmUgYSBzbG90IG5hbWUvDQoNCkNoYW5nZWQuDQoNCj4gDQo+ID09PT09 PQ0KPiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMNCj4gDQo+IDguDQo+ ICsgaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykgZXJlcG9ydChF UlJPUiwNCj4gKyAoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksDQo+ICsgZXJy bXNnKCJjb3VsZCBub3QgYWx0ZXIgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLCBzbG90bmFtZSkp KTsNCj4gDQo+IFRoaXMgdXNlZCB0byBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlIGxpa2UNCj4g cGNob21wKFBRZXJyb3JNZXNzYWdlKGNvbm4tPnN0cmVhbUNvbm4pKSBidXQgaXQgd2FzIHJlbW92 ZWQuIElzIGl0IE9LPw0KDQpJIGFkZGVkIHRoaXMgYmFjay4NCg0KPiANCj4gPT09PT09DQo+IHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMNCj4gDQo+IDkuDQo+ICsg aWYgKE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09DQo+ICsgTE9HSUNBTFJFUF9UV09Q SEFTRV9TVEFURV9QRU5ESU5HKQ0KPiArIGVyZXBvcnQoTE9HLA0KPiArIC8qIHRyYW5zbGF0b3I6 ICVzIGlzIGEgc3Vic2NyaXB0aW9uIG9wdGlvbiAqLyAoZXJybXNnKCJsb2dpY2FsDQo+ICsgcmVw bGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiDQo+IHdpbGwgcmVz dGFydCBzbyB0aGF0ICVzIGNhbiBiZSBlbmFibGVkIiwNCj4gKyBNeVN1YnNjcmlwdGlvbi0+bmFt ZSwgInR3b19waGFzZSIpKSk7DQo+ICsNCj4gKyBpZiAoTXlTdWJzY3JpcHRpb24tPmZhaWxvdmVy c3RhdGUgPT0NCj4gKyBMT0dJQ0FMUkVQX0ZBSUxPVkVSX1NUQVRFX1BFTkRJTkcpDQo+ICsgZXJl cG9ydChMT0csDQo+ICsgLyogdHJhbnNsYXRvcjogJXMgaXMgYSBzdWJzY3JpcHRpb24gb3B0aW9u ICovIChlcnJtc2coImxvZ2ljYWwNCj4gKyByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCINCj4gd2lsbCByZXN0YXJ0IHNvIHRoYXQgJXMgY2FuIGJlIGVuYWJs ZWQiLA0KPiArIE15U3Vic2NyaXB0aW9uLT5uYW1lLCAiZmFpbG92ZXIiKSkpOw0KPiANCj4gVGhv c2UgZXJyb3JzIGhhdmUgbXVsdGlwbGUgJXMsIHNvIHRoZSB0cmFuc2xhdG9yJ3MgY29tbWVudCBz aG91bGQgc2F5ICJ0aGUNCj4gMm5kICVzIGlzIGEuLi4iDQoNClRoaXMgcGFydCBoYXMgYmVlbiBy ZW1vdmVkIGR1ZSB0byBkZXNpZ24gY2hhbmdlLg0KDQo+IA0KPiB+fn4NCj4gDQo+IDEwLg0KPiAg dm9pZA0KPiAtVXBkYXRlVHdvUGhhc2VTdGF0ZShPaWQgc3Vib2lkLCBjaGFyIG5ld19zdGF0ZSkN Cj4gK0VuYWJsZVR3b1BoYXNlRmFpbG92ZXJUcmlTdGF0ZShPaWQgc3Vib2lkLCBib29sIGVuYWJs ZV90d29waGFzZSwNCj4gKyAgICBib29sIGVuYWJsZV9mYWlsb3ZlcikNCj4gDQo+IEkgZmVsdCB0 aGUgZnVuY3Rpb24gbmFtZSB3YXMgYSBiaXQgY29uZnVzaW5nLiBNYXliZSBpdCBpcyBzaW1wbGVy IHRvIGNhbGwgaXQgbGlrZQ0KPiAiRW5hYmxlVHJpU3RhdGUiIG9yICJFbmFibGVTdWJUcmlTdGF0 ZSIgLS0gdGhlIHBhcmFtZXRlcnMgYW55d2F5IHNwZWNpZnkgd2hhdA0KPiBhY3R1YWwgc3RhdGUo cykgd2lsbCBiZSBzZXQuDQoNClRoaXMgcGFydCBoYXMgYmVlbiByZW1vdmVkIGR1ZSB0byBkZXNp Z24gY2hhbmdlLg0KDQo+IA0KPiA9PT09PT0NCj4gc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYw0KPiANCj4gMTEuDQo+ICsgLyogVXBkYXRlIHR3b3BoYXNlIGFuZC9vciBm YWlsb3ZlciAqLw0KPiArIEVuYWJsZVR3b1BoYXNlRmFpbG92ZXJUcmlTdGF0ZShNeVN1YnNjcmlw dGlvbi0+b2lkLCB0d29waGFzZV9wZW5kaW5nLA0KPiArICAgIGZhaWxvdmVyX3BlbmRpbmcpOw0K PiArIGlmICh0d29waGFzZV9wZW5kaW5nKQ0KPiArIE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0 YXRlID0NCj4gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9FTkFCTEVEOw0KPiArDQo+ICsgaWYg KGZhaWxvdmVyX3BlbmRpbmcpDQo+ICsgTXlTdWJzY3JpcHRpb24tPmZhaWxvdmVyc3RhdGUgPSBM T0dJQ0FMUkVQX0ZBSUxPVkVSX1NUQVRFX0VOQUJMRUQ7DQo+IA0KPiBDYW4ndCB5b3UgcGFzcyB0 aGUgTXlTdWJzY3JpcHRpb24gYXMgYSBwYXJhbWV0ZXIgYW5kIHRoZW4gdGhlDQo+IEVuYWJsZVR3 b1BoYXNlRmFpbG92ZXJUcmlTdGF0ZSBjYW4gYWxzbyBzZXQgdGhlc2UNCj4gTE9HSUNBTFJFUF9U V09QSEFTRV9TVEFURV9FTkFCTEVEL0xPR0lDQUxSRVBfRkFJTE9WRVJfU1RBVEVfRU4NCj4gQUJM RUQNCj4gc3RhdGVzIHdpdGhpbiB0aGUgRW5hYmxlKiBmdW5jdGlvbj8NCg0KVGhpcyBwYXJ0IGhh cyBiZWVuIHJlbW92ZWQgZHVlIHRvIGRlc2lnbiBjaGFuZ2UuDQoNCj4gDQo+ID09PT09PQ0KPiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX2dyYW0ueQ0KPiANCj4gMTIuDQo+ICAldG9rZW4g S19DUkVBVEVfUkVQTElDQVRJT05fU0xPVA0KPiAgJXRva2VuIEtfRFJPUF9SRVBMSUNBVElPTl9T TE9UDQo+ICsldG9rZW4gS19BTFRFUl9SRVBMSUNBVElPTl9TTE9UDQo+IA0KPiBhbmQNCj4gDQo+ ICsgY3JlYXRlX3JlcGxpY2F0aW9uX3Nsb3QgZHJvcF9yZXBsaWNhdGlvbl9zbG90IGFsdGVyX3Jl cGxpY2F0aW9uX3Nsb3QNCj4gKyBpZGVudGlmeV9zeXN0ZW0gcmVhZF9yZXBsaWNhdGlvbl9zbG90 IHRpbWVsaW5lX2hpc3Rvcnkgc2hvdw0KPiArIHVwbG9hZF9tYW5pZmVzdA0KPiANCj4gYW5kDQo+ IA0KPiAgIHwgY3JlYXRlX3JlcGxpY2F0aW9uX3Nsb3QNCj4gICB8IGRyb3BfcmVwbGljYXRpb25f c2xvdA0KPiArIHwgYWx0ZXJfcmVwbGljYXRpb25fc2xvdA0KPiANCj4gYW5kDQo+IA0KPiAgIHwg S19DUkVBVEVfUkVQTElDQVRJT05fU0xPVCB7ICQkID0gImNyZWF0ZV9yZXBsaWNhdGlvbl9zbG90 IjsgfQ0KPiAgIHwgS19EUk9QX1JFUExJQ0FUSU9OX1NMT1QgeyAkJCA9ICJkcm9wX3JlcGxpY2F0 aW9uX3Nsb3QiOyB9DQo+ICsgfCBLX0FMVEVSX1JFUExJQ0FUSU9OX1NMT1QgeyAkJCA9ICJhbHRl cl9yZXBsaWNhdGlvbl9zbG90IjsgfQ0KPiANCj4gZXRjLg0KPiANCj4gfg0KPiANCj4gQWx0aG91 Z2ggaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSBJTU8gaXQgaXMgbW9yZSBuYXR1cmFsIHRvIGNvZGUg ZXZlcnl0aGluZyBpbg0KPiB0aGUgb3JkZXI6IGNyZWF0ZSwgYWx0ZXIsIGRyb3AuDQo+IA0KPiA9 PT09PT0NCj4gc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcmVwbF9zY2FubmVyLmwNCj4gDQo+IDEz Lg0KPiAgQ1JFQVRFX1JFUExJQ0FUSU9OX1NMT1QgeyByZXR1cm4gS19DUkVBVEVfUkVQTElDQVRJ T05fU0xPVDsgfQ0KPiBEUk9QX1JFUExJQ0FUSU9OX1NMT1QgeyByZXR1cm4gS19EUk9QX1JFUExJ Q0FUSU9OX1NMT1Q7IH0NCj4gK0FMVEVSX1JFUExJQ0FUSU9OX1NMT1QgeyByZXR1cm4gS19BTFRF Ul9SRVBMSUNBVElPTl9TTE9UOyB9DQo+IA0KPiBhbmQNCj4gDQo+ICAgY2FzZSBLX0NSRUFURV9S RVBMSUNBVElPTl9TTE9UOg0KPiAgIGNhc2UgS19EUk9QX1JFUExJQ0FUSU9OX1NMT1Q6DQo+ICsg Y2FzZSBLX0FMVEVSX1JFUExJQ0FUSU9OX1NMT1Q6DQo+IA0KPiBBbHRob3VnaCBpdCBtYWtlcyBu byBkaWZmZXJlbmNlIElNTyBpdCBpcyBtb3JlIG5hdHVyYWwgdG8gY29kZSBldmVyeXRoaW5nIGlu DQo+IHRoZSBvcmRlcjogY3JlYXRlLCBhbHRlciwgZHJvcC4NCg0KUGVyc29uYWxseSwgSSBhbSBu b3Qgc3VyZSBpZiBpdCBsb29rcyBiZXR0ZXIsIHNvIEkgZGlkbuKAmXQgY2hhbmdlIHRoaXMuDQoN Cj4gDQo+ID09PT09PQ0KPiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMNCj4gDQo+IDE0 Lg0KPiArIGlmIChTbG90SXNQaHlzaWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpDQo+ICsgZXJlcG9y dChFUlJPUiwNCj4gKyBlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwNCj4g KyBlcnJtc2coImNhbm5vdCB1c2UgJXMgd2l0aCBhIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qi LA0KPiArICAgICJBTFRFUl9SRVBMSUNBVElPTl9TTE9UIikpOw0KPiANCj4gL3dpdGggYS9mb3Ig YS8NCg0KVGhpcyBpcyB0byBiZSBjb25zaXN0ZW50IHdpdGggYW5vdGhlciBlcnJvciBtZXNzYWdl LCBzbyBJIGRpZG7igJl0IGNoYW5nZSB0aGlzLg0KDQoJZXJybXNnKCJjYW5ub3QgdXNlICVzIHdp dGggYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QiLA0KCQkiUkVBRF9SRVBMSUNBVElPTl9TTE9U IikpOw0KDQo+IA0KPiA9PT09PT0NCj4gc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMNCj4gDQo+IDE1Lg0KPiArc3RhdGljIHZvaWQNCj4gK1BhcnNlQWx0ZXJSZXBsU2xvdE9wdGlv bnMoQWx0ZXJSZXBsaWNhdGlvblNsb3RDbWQgKmNtZCwgYm9vbCAqZmFpbG92ZXIpDQo+ICt7DQo+ ICsgTGlzdENlbGwgICAqbGM7DQo+ICsgYm9vbCBmYWlsb3Zlcl9naXZlbiA9IGZhbHNlOw0KPiAr DQo+ICsgLyogUGFyc2Ugb3B0aW9ucyAqLw0KPiArIGZvcmVhY2gobGMsIGNtZC0+b3B0aW9ucykN Cj4gKyB7DQo+ICsgRGVmRWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QobGMpOw0K PiANCj4gQUZBSUsgdGhlcmUgYXJlIHNvbWUgbmV3LXN0eWxlIG1hY3JvcyBub3cgeW91IGNhbiB1 c2UgZm9yIHRoaXMgY29kZS4NCj4gZS5nLiBmb3JlYWNoX3B0cj8gU2VlIFsxXS4NCg0KQ2hhbmdl ZC4NCg0KPiANCj4gfn5+DQo+IA0KPiAxNi4NCj4gKyBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAiZmFpbG92ZXIiKSA9PSAwKSB7IGlmIChmYWlsb3Zlcl9naXZlbikNCj4gKyBlcmVwb3J0KEVS Uk9SLCAoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksIGVycm1zZygiY29uZmxpY3Rpbmcg b3INCj4gKyByZWR1bmRhbnQgb3B0aW9ucyIpKSk7IGZhaWxvdmVyX2dpdmVuID0gdHJ1ZTsgKmZh aWxvdmVyID0NCj4gKyBkZWZHZXRCb29sZWFuKGRlZmVsKTsgfQ0KPiANCj4gVGhlIGRvY3VtZW50 ZWQgc3ludGF4IHNob3dlZCB0aGF0IHBhc3NpbmcgdGhlIGJvb2xlYW4gdmFsdWUgZm9yIHRoZQ0K PiBGQUlMT1ZFUiBvcHRpb24gaXMgbm90IG1hbmRhdG9yeS4gRG9lcyB0aGlzIGNvZGUgd29yayBp ZiB0aGUgYm9vbGVhbiB2YWx1ZSBpcw0KPiBub3QgcGFzc2VkPw0KDQpJdCB3b3JrcywgZGVmR2V0 Qm9vbGVhbiB3aWxsIGhhbmRsZSB0aGlzIGNhc2UuDQogDQo+IA0KPiA9PT09PT0NCj4gc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jDQo+IA0KPiAxNy4NCj4gSSB0aGluayAiQUxURVIgU1VCU0NS SVBUSU9OIC4uLiBTRVQgKGZhaWxvdmVyKSIgaXMgcG9zc2libGUsIGJ1dCB0aGUgQUxURVINCj4g U1VCU0NSSVBUSU9OIHRhYiBjb21wbGV0aW9uIGNvZGUgaXMgbWlzc2luZy4NCg0KQWRkZWQuDQoN Cj4gPT09PT09DQo+IC4uLi90LzA1MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwNCj4g DQo+IDE5Lg0KPiArDQo+ICsjIENvcHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXANCj4gKw0KPiANCj4gLzIwMjMvMjAyNC8NCg0KQ2hhbmdlZC4NCg0K PiANCj4gfn5+DQo+IA0KPiAyMC4NCj4gKyMgQ3JlYXRlIGFub3RoZXIgc3Vic2NyaXB0aW9uICh1 c2luZyB0aGUgc2FtZSBzbG90IGNyZWF0ZWQgYWJvdmUpIHRoYXQNCj4gK2VuYWJsZXMgIyBmYWls b3Zlci4NCj4gKyRzdWJzY3JpYmVyMS0+c2FmZV9wc3FsKA0KPiArICdwb3N0Z3JlcycsIHFxWw0K PiArIENSRUFURSBUQUJMRSB0YWJfaW50IChhIGludCBQUklNQVJZIEtFWSk7ICBDUkVBVEUgU1VC U0NSSVBUSU9ODQo+ICtyZWdyZXNzX215c3ViMSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInDQo+IFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfbXlwdWIgV0lUSCAoc2xvdF9uYW1lID0gbHN1YjFf c2xvdCwgY29weV9kYXRhPWZhbHNlLA0KPiBmYWlsb3ZlciA9IHRydWUsIGNyZWF0ZV9zbG90ID0g ZmFsc2UpOw0KPiANCj4gVGhlIGNvbW1lbnQgc2hvdWxkIG5vdCBzYXkgIkNyZWF0ZSBhbm90aGVy IHN1YnNjcmlwdGlvbiIgYmVjYXVzZSB0aGlzIGlzIHRoZQ0KPiBmaXJzdCBzdWJzY3JpcHRpb24g YmVpbmcgY3JlYXRlZC4NCj4gDQo+IC9hbm90aGVyL2EvDQoNCkNoYW5nZWQuDQoNCj4gDQo+IH5+ fg0KPiANCj4gMjEuDQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIw0KPiArIyBUZXN0IGlmIGNoYW5naW5nIHRoZSBmYWlsb3ZlciBwcm9wZXJ0eSBv ZiBhIHN1YnNjcmlwdGlvbiB1cGRhdGVzIHRoZQ0KPiArIyBjb3JyZXNwb25kaW5nIGZhaWxvdmVy IHByb3BlcnR5IG9mIHRoZSBzbG90Lg0KPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IC9UZXN0IGlmL1Rlc3QgdGhhdC8NCg0KQ2hhbmdl ZC4NCg0KPiANCj4gPT09PT09DQo+IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwNCj4gDQo+IDIyLg0KPiArQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09O TkVDVElPTg0KPiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0 cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwNCj4gZmFpbG92ZXIgPSB0cnVlKTsNCj4gKw0KPiAr XGRScysNCj4gDQo+IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgdGVzdGluZyB0aGUgZXhwbGljaXQg ImZhaWxvdmVyPXRydWUiLg0KPiANCj4gTWF5YmUgeW91IGNhbiBhbHNvIHRlc3QgdGhlIG90aGVy IGtpbmRzIHdvcmsgYXMgZXhwZWN0ZWQ6DQo+IC0gZXhwbGljaXQgIlNFVCAoZmFpbG92ZXI9ZmFs c2UpIg0KPiAtIGV4cGxpY2l0ICJTRVQgKGZhaWxvdmVyKSIgd2l0aCBubyB2YWx1ZSBzcGVjaWZp ZWQNCg0KSSB0aGluayB0aGVzZSB0ZXN0cyBkb24ndCBhZGQgZW5vdWdoIHZhbHVlIHRvIGNhdGNo IGZ1dHVyZSBidWdzLA0Kc28gSSBwcmVmZXIgbm90IHRvIGFkZCB0aGVzZS4NCg0KQmVzdCBSZWdh cmRzLA0KSG91IHpqDQo=