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 1rBnK3-00COqd-JT for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Dec 2023 02:44: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 1rBnK2-00E91l-06 for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Dec 2023 02:44:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBnK1-00E917-GO for pgsql-hackers@lists.postgresql.org; Sat, 09 Dec 2023 02:44:05 +0000 Received: from esa8.fujitsucc.c3s2.iphmx.com ([68.232.159.88]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rBnJt-009VJk-RT for pgsql-hackers@postgresql.org; Sat, 09 Dec 2023 02:44:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1702089837; x=1733625837; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=luUNcjTW5wrW5AZxJe19i2LBzCaXJ9wWBAvt/RBvhRk=; b=uopgYvU2AkgutX2Ord2I0DrRYKxgXE1McOGe1f8ZmiHNaPfNs3fnvzM0 IPNBk4rpQrFAQ1UFEOaBVj92K+4lQPFJS1xJhP5TXsfU/YxxGJSXvF6DB 7oDB/ksIhhMLf/K0KnEyJaDtcAMG/5X1cnm62bizCKRNoFAAclOqE+3kp O7XUKst1kKuRHacSVd6nCf/Ai9JiugoL5+3nEylvOF8OyLk524kNctmdx KczLygKL40uw8X/piI/obS60mAwi14D2BBIYN29dVLvkZGpXQ67gX9ou4 ZAbWQeL/EQzy4jinqVDvCM3BglP4WqAxvhZ5aSkQ3ULZz7qcIo5OQCGrK Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10918"; a="105259270" X-IronPort-AV: E=Sophos;i="6.04,262,1695654000"; d="scan'208";a="105259270" Received: from mail-tycjpn01lp2168.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.168]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Dec 2023 11:43:52 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N3jEkC4HAF9t5nxOMNepDtViLHyrLO4m7+MI5e+R+eCciOahyCBMnM+PO/slV0qmNsNrieVVR4emhr2J4F6F3vcfIjncSf9Zyl4VU+XsMHMhjrjkJkAzjAkmRUD80GhymSnh0P+Umx9HdpLtKehfsz1Cxfc+FYi/MO266GHWjh0kxeG6QT7137m38pGu/FJ+IRyjWcZpBC5wtMtIbXTu9V1CRD5kiOH9CeKAl1KGpGZTDbxdpyJzcX+tLW8MtgvJtPfIypRtVbBTKB59bU12b88r1s4JXLMWKWitaWwP1Eq4iuGAEAkj3aByVxLEK6R3G48HrHuEIMHW7eOmxuJNpw== 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=luUNcjTW5wrW5AZxJe19i2LBzCaXJ9wWBAvt/RBvhRk=; b=eBjcRTjs2cI9xP4owUedIs79674rEQw6cWDERk4d8ALcMvf5/CUUIIFPd6GUrDHFiswJULrKCDPtwjRlLWGAwaZ7UMnyqRU14QC7uOqTSiAl/CJ/bH8dehJwlY0421djbDCw5QdJY5vGUwSwM/28CiX0k5J3wsybF/aRh65Ks3plCr5VKn26ZyAycB0DAL3vX+lp9H6EuZsUNBsQSJA26qgiQpR900NyUXeG8k3IBtidSPPbleaVaNLM702Jv5u3FO6GXMLmINd+4o3+3x+0DWvUy/Hagnyb0FZEl0cTwLrwGGiCjJKwLMYKXJXwxQfwun6v92ooWsg4sisQS+zqFg== 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 TY3PR01MB9889.jpnprd01.prod.outlook.com (2603:1096:400:22b::13) by TYCPR01MB8657.jpnprd01.prod.outlook.com (2603:1096:400:157::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.18; Sat, 9 Dec 2023 02:43:49 +0000 Received: from TY3PR01MB9889.jpnprd01.prod.outlook.com ([fe80::d43f:95b:64fc:ba0c]) by TY3PR01MB9889.jpnprd01.prod.outlook.com ([fe80::d43f:95b:64fc:ba0c%6]) with mapi id 15.20.7091.018; Sat, 9 Dec 2023 02:43:49 +0000 From: "Hayato Kuroda (Fujitsu)" To: 'Junwang Zhao' , Sutou Kouhei CC: Andrew Dunstan , Michael Paquier , Masahiko Sawada , "nathandbossart@gmail.com" , "pgsql-hackers@postgresql.org" Subject: RE: Make COPY format extendable: Extract COPY TO format implementations Thread-Topic: Make COPY format extendable: Extract COPY TO format implementations Thread-Index: AQHaJnwy3jCoKI0lhUqRDMfozgevjbCbA7sAgACLpoCAAAlxgIAAMnIAgAAOpwCAAATAAIAAb4+AgACwVoCAAIW5AIAAhnGAgAAvEQCAAHbNgIABkiTg Date: Sat, 9 Dec 2023 02:43:49 +0000 Message-ID: References: <20231206.151908.897707799247386849.kou@clear-code.com> <20231206.162834.1390394858102165899.kou@clear-code.com> <80949637-4e74-6c84-dc4d-908563dade29@dunslane.net> 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?NTBfQWN0aW9uSWQ9MTFhYjU1ODItZTg1Mi00NjEzLTgzMmYtYzkxZDU2NTNj?= =?utf-8?B?ZTZlO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZXREYXRlPTIwMjMtMTItMDlUMDI6Mzk6MTJaO01TSVBfTGFiZWxfYTcyOTVj?= =?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: TY3PR01MB9889:EE_|TYCPR01MB8657:EE_ x-ms-office365-filtering-correlation-id: c5c8a29b-4730-4e25-5a7f-08dbf860ac6a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: r98E9VByoXICSbVEH2hWLWNSykc3ve9JIXtLGL9KHBATjvgBH7Jl4LmeiYik9xnTjHnk49ARj8lhploQzUmYuW//4thVJMRzbgS2WivIiekAJ61ZZLWW8KThrLk4+oRebAw7DfNZp3bbUBv8+NiG0oM/vhoZOwmQm0RLuGiBYxPNX8IHA15+kdFRBYytGQqnxyFQkHCSeddwhNtR7t6IhXwiiR7FDLgU7sJC7MIKfCfBi5h161pJz+d8BuxF2OoLcLzqQoG/aU1fGASPtVh3vnWeY7YADXY2ELQWEEjr2geluVQsnbZdcbLAZqT4Z2F0oHxz56XaYtNZGgoxKXuY4me9hDyPnb9tQy3U/JZ4uNKTbfRBf78NBwzWrtVlsJkDweDmJ11GosFNMdHg62xsEKNfZkzAAPq+7RJN+PXuEJF7O3lKg0PzEhlKOxfYbROdU+2K+dLxz/qLdIOpRNGmk7wEML8tD6rcQ3zeUvxqO5KJc6T5QugSaorOKQRbgQ7/SgqlwdZD5qg2kBNPV2w6Qixafbz+xzNlZyRc88PSDm5zFTBOmPKZQbN4GmLolDxW6wpZx1GTUHfehq9SglRvM0CheU4P6+QsFRxy8Xmkjbb6BL7PCqxyIGqntf9tdWuhtpG5mNNmlnYPGhBCFaqu8w4Qi69xNFmGEnn22fAgigMXqbUhaAoU5AzjXvCwzp5a x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY3PR01MB9889.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(136003)(396003)(39860400002)(346002)(230273577357003)(230173577357003)(230922051799003)(64100799003)(186009)(1800799012)(1590799021)(451199024)(6506007)(71200400001)(478600001)(26005)(7696005)(9686003)(83380400001)(2906002)(8936002)(5660300002)(110136005)(41300700001)(54906003)(64756008)(66446008)(66476007)(66556008)(66946007)(76116006)(316002)(52536014)(4326008)(8676002)(38100700002)(122000001)(38070700009)(86362001)(82960400001)(85182001)(33656002)(1580799018)(55016003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UWcyaGkzOHB3ektWczZCN1NyeGdQRVVGdU9KcGtuTFN3QlgveElCU3dJRWo3?= =?utf-8?B?aFlBa3ozUTZ6dXdmWERpWUptTHdacHozVnlRODRCaWtOc3prTTA3TWpZV0Rn?= =?utf-8?B?T3hyQk9VMEJnM0E4ZnZYVUhMSjNDcHQ2alFjUDVNa3lna0lBeXZncElwcWlv?= =?utf-8?B?RGZzR0ZoU015cW0wcm4vK3VEK1hTWkREakw2TDNXdTZkbWg0VjhTS281WHJN?= =?utf-8?B?dDZJNjg1cEcwdkd1RFZmek05d3pCaU5WNnVGSkhVMkdwUGpacTZGYVRDdGtD?= =?utf-8?B?VWNmNVI3Z1BlVGd3VXBwRXpva01RNFlIUTRmVC91ZUl6OVNxV2xjLzdjMW5R?= =?utf-8?B?emxHZUMxN2JKVWRlSDVGN2F0SUs1eDY5Z2txR2dGa3BHeWFod3VEK25TUWR2?= =?utf-8?B?QXNvVjFKdU55Z2FQdkNVR25nbFc4cEJybTR2WjlBMTViMmlCdlE4UEc4RHho?= =?utf-8?B?czZ5QTZZRHNJK29DRXh2RW1mODRILzlsdUV0VXYyTXdSZnJlVWg3aFk3RUhB?= =?utf-8?B?S2ViZXg4bVlMU1dlTmhuNEwyR2RGMnVRRno5RVhJRnNSNVdxWnQzN0Z2b2pr?= =?utf-8?B?OE14cDhSMnNYckNObXptYXlnY1VCRHlMeVBnWm1yZXFPbHl4bXNLZHo0dUR6?= =?utf-8?B?UXlzdWJBRFVaaEkvZEFYRVNoSkRpQzhqZHk4R3liREQyMXExSHZKV1czbnoz?= =?utf-8?B?ck5ZYVRHYmlRRHdVYmNLdHdxQlRsLzM1aXBmOW94cERhWG9MaldjK0J1MWl2?= =?utf-8?B?UmZlaGs0ckpvS3lyeW1tWU12YVlaVU1uS21XUDdOZlNMQ2ZPeWtvSUlxeHNH?= =?utf-8?B?Uk1tZUw4blNmajVlMHBLcVUvckdnT1pSZ2FpaGZGck14UWVhTnQ3UTVuNUhH?= =?utf-8?B?eDl2TlIrSmtKaDhOdjk0MjVZMGw3VTUxV3RGQ05rVy9DWWwyMDljb0pUeG8x?= =?utf-8?B?NlN0TUF3ZnBwTzdOUDlHVi81b0NGVTBSeXV5TGFkVHkvMWlQTUFYeTBqNDR1?= =?utf-8?B?cGt3SFpOZk9WZlNaQ3NZYXcza2ZnbCt4MmdWZnhLQUNYeUVtSWVLUUVMenpH?= =?utf-8?B?c041WUl3Q2J2RnV0US9GZ3lmYWVEMVMrMWNpcGRpV3hvZmxaaHU4dTV1MHNN?= =?utf-8?B?aFQrTXM1SEVWSGdiQm82RVU3MVpGVjAyK1o1NnVycmJpQnZ3MmY5OVNqeTNB?= =?utf-8?B?Q3MzYmRqWWMyYVZOcm5vcGhXL1VtK054YWxOdnJoRnlvb2pNMVZhRExVZ1da?= =?utf-8?B?LzZ1cnJSdUFZY0pDTjRQQjNPNi93OW5UOFhjeWNJMTZ1SUhHQUx4Z09velow?= =?utf-8?B?ZHhXbEsvRVFCNitLNnlDU01BNWRhQ1krb251dkZBK0pYbW5QSFVkVEpMdFVE?= =?utf-8?B?RFhDZ2RRZlYrQ1E3TW5iMUZkclp0Mk9PVkpZV1B6V05sc0UwR2haUkNtRmNw?= =?utf-8?B?SThJTkpQcjE4QTUvUjVnaDFhNXNMY0VCbFpwc3ZYdkxFVVNsSVBBekc5Y0Q1?= =?utf-8?B?OWw3ZXFZMWlNcGNrUVc4ZDVOa3pFV0lTZjRRNDBjMVFMMWNGb0tteVZhZnlI?= =?utf-8?B?azFEMlYzU0JPWDRUaUVwR3Uxb3p5L1Y1M2pqWGJvZ1ZDdDFSbldxUTdGa0Mr?= =?utf-8?B?UjhIc2orN0ZTWDJ1SDl5NTR1cFU2M0NWVHlJamMrTWpZNmsxWnJnb3VNWWRW?= =?utf-8?B?SHZHbWpSOFFhV3g5c21KOS93bDkrRDNVaVVwZGpjVHdMblFEMXZWTFVKOEc1?= =?utf-8?B?Yzhwd0ZKdjhTdG1oeFB2SEJYeVNnakhIMnF1R0xTa2wweWMrNXBaWnBsYTdW?= =?utf-8?B?MzgxZzZrS2czWVpBOER4Wk94ekxsODVmRmtkRytJRzNuU3UwTXBXUlRLRkVt?= =?utf-8?B?aUMxZnlRckJLTi9ON3hXSkMyeWlwTDF3VkdsYWxXdkhXQTRLdHQxUGl1ckxy?= =?utf-8?B?c0sxWi83QXN4MFFIVE55TUxBcStPNUpYZ2xuYmpKTFB2MU1DeVN5Zy9raWdM?= =?utf-8?B?cWpLeGdVb2d2NSt1QlNubUJ3dXpFM1hiVEJQd0txL0tNOWlzcmJORDVDdTdF?= =?utf-8?B?WERBUFpRaloyYm9SQXNxT3dTQ0dzbkdidHJJSGJqdWZkazBTYTJXQmY3cnU2?= =?utf-8?Q?QWLOH5/lHtltGKSZZEJFGY2UI?= 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: cAxSwvoRqRPCHzvr68s+f3ZgOn4FYFP71zBMf00fG4E0P2v3TCOgv4k8spPZApdZmdGcQjuKggK28Px6RRynC0MBvYb+ruSgyNFwhtCz76N0b6cTANMikyhzagH2Gli2nU+CZuvBJTKYiacNIcJ49rzyfaGefWMW0gkOfpFOaImno6MXhjn/FeTrbh3NjgG7iGy1qjbmI2SjJ7CmYw8JJaQNLO2Ln3PZOVr0F3h54PbFzHH59O2TAwzEfeiWcQQKGC7/tNOvZz2GD3aTfueR6/m33wCTovP9DXWRaWwrIA3fwW6kNC2UTLlxQwwKtQUC1GCKlS0nQggek6wSiRI4mppgcAmLhGamTbKUb274l3QQdtX9vvvTTmQN1KS5ESOXEjya9wr/f1aJ71sZFV8JwzGJj3g7RSYBI21KQfceiifLzEBZEEeN5PLD2LMRlNSL6sG/MYvaEvxGrQIwd5ePMycjTT0E6J8C+VXX4mR/Cza7AGqVkUuDRd68uhJF807iQyirh4ETOJ4xweSFLRKkKPxx7zBAB9d/X5+DxOe4NX6nxTcyJjWufl4xDSz7WA1pYYgYz6ikXPvfn9/yC3KErqx48h4YQlyf1XBAWffrCaFdejeUD3QRRQBoUnP180Pk X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY3PR01MB9889.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5c8a29b-4730-4e25-5a7f-08dbf860ac6a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Dec 2023 02:43:49.6128 (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: ebGswxMlGFfCzVr8NhsQqjwunzLkvCroHcoRcD/zGxtoTi2O4HsX53RgOYFWkXQfiXOcHI92Tfv2qwhKSOcNensbONsB2tedcYetFAEN7HI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8657 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk RGVhciBKdW5hZ24sIFN1dG91LXNhbiwNCg0KQmFzaWNhbGx5IEkgYWdyZWUgeW91ciBwb2ludCAt IGltcHJvdmluZyBhIGV4dGVuZGliaWxpdHkgaXMgZ29vZC4NCihJIHJlbWVtYmVyIHRoYXQgdGhp cyB0aGVtZSB3YXMgdGFsa2VkIGF0IEphcGFuIFBvc3RncmVTUUwgY29uZmVyZW5jZSkNCkJlbG93 IGFyZSBteSBjb21tZW50cyBmb3IgeW91ciBwYXRjaC4NCg0KMDEuIEdlbmVyYWwNCg0KSnVzdCB0 byBjb25maXJtIC0gaXMgaXQgT0sgdG8gcGFydGlhbGx5IGltcGxlbWVudCBBUElzPyBFLmcuLCBv bmx5IENPUFkgVE8gaXMNCmF2YWlsYWJsZS4gQ3VycmVudGx5IGl0IHNlZW1zIG5vdCB0byBjb25z aWRlciBhIGNhc2Ugd2hpY2ggaXMgbm90IGltcGxlbWVudGVkLg0KDQowMi4gR2VuZXJhbA0KDQpJ dCBtaWdodCBiZSB0cml2aWFsLCBidXQgY291bGQgeW91IHBsZWFzZSBjbGFyaWZ5IGhvdyB1c2Vy cyBjYW4gZXh0ZW5kPyBJcyBpdCBPSw0KdG8gZG8gYmVsb3cgc3RlcHM/DQoNCjEuIENyZWF0ZSBh IGhhbmRsZXIgZnVuY3Rpb24sIHZpYSBDUkVBVEUgRlVOQ1RJT04sDQoyLiBSZWdpc3RlciBhIGhh bmRsZXIsIHZpYSBuZXcgU1FMIChDUkVBVEUgQ09QWSBIQU5ETEVSKSwNCjMuIFNwZWNpZnkgdGhl IGFkZGVkIGhhbmRsZXIgYXMgQ09QWSAuLi4gRk9STUFUIGNsYXVzZS4NCg0KMDMuIEdlbmVyYWwN Cg0KQ291bGQgeW91IHBsZWFzZSBhZGQgZG9jdW1lbnQtcmVsYXRlZCB0YXNrcyB0byB5b3VyIFRP RE8/IEkgaW1hZ2luZWQgbGlrZQ0KZmR3aGFuZGxlci5zZ21sLg0KDQowNC4gR2VuZXJhbCAtIGNv cHlyaWdodA0KDQpGb3IgbmV3bHkgYWRkZWQgZmlsZXMsIHRoZSBiZWxvdyBjb3B5cmlnaHQgc2Vl bXMgc3VmZmljaWVudC4gU2VlIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4NCg0KYGBgDQogKiBDb3B5 cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwDQpgYGAN Cg0KMDUuIHNyYy9pbmNsdWRlL2NhdGFsb2cvKiBmaWxlcw0KDQpJSVVDLCA4MDAwIG9yIGhpZ2hl ciBPSURzIHNob3VsZCBiZSB1c2VkIHdoaWxlIGRldmVsb3BpbmcgYSBwYXRjaC4gc3JjL2luY2x1 ZGUvY2F0YWxvZy91bnVzZWRfb2lkcw0Kd291bGQgc3VnZ2VzdCBhIGNhbmRpZGF0ZSB3aGljaCB5 b3UgY2FuIHVzZS4NCg0KMDYuIGNvcHkuYw0KDQpJIGZlbHQgdGhhdCB3ZSBjYW4gY3JlYXRlIGZp bGVzIHBlciBjb3B5aW5nIG1ldGhvZHMsIGxpa2UgY29weV97dGV4dHxjc3Z8YmluYXJ5fS5jLA0K bGlrZSBpbmRleGVzLg0KSG93IGRvIG90aGVyIHRoaW5rPw0KDQowNy4gZm10X3RvX25hbWUoKQ0K DQpJJ20gbm90IHN1cmUgdGhlIGZ1bmN0aW9uIGlzIHJlYWxseSBuZWVkZWQuIENhbiB3ZSBmb2xs b3cgbGlrZSBnZXRfZm9yZWlnbl9kYXRhX3dyYXBwZXJfb2lkKCkNCmFuZCByZW1vdmUgdGhlIGZ1 bmNpdG9uPw0KDQowOC4gR2V0Q29weVJvdXRpbmVCeU5hbWUoKQ0KDQpTaG91bGQgd2UgdXNlIHN5 c2NhY2hlIGZvciBzZWFyY2hpbmcgYSBjYXRhbG9nPw0KDQowOS4gQ29weVRvRm9ybWF0VGV4dFNl bmRFbmRPZlJvdygpLCBDb3B5VG9Gb3JtYXRCaW5hcnlTdGFydCgpDQoNCkNvbW1lbnRzIHN0aWxs IHJlZmVyIENvcHlIYW5kbGVyT3BzLCB3aGVyZWFzIGl0IHdhcyByZW5hbWVkLg0KDQoxMC4gY29w eS5oDQoNClBlciBmb3JlaWduLmggYW5kIGZkd2FwaS5oLCBzaG91bGQgd2UgYWRkIGEgbmV3IGhl YWRlciBmaWxlIGFuZCBtb3ZlIHNvbWUgQVBJcz8NCg0KMTEuIGNvcHkuaA0KDQpgYGANCi0vKiBU aGVzZSBhcmUgcHJpdmF0ZSBpbiBjb21tYW5kcy9jb3B5W2Zyb218dG9dLmMgKi8NCi10eXBlZGVm IHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YSAqQ29weUZyb21TdGF0ZTsNCi10eXBlZGVmIHN0cnVj dCBDb3B5VG9TdGF0ZURhdGEgKkNvcHlUb1N0YXRlOw0KYGBgDQoNCkFyZSBhYm92ZSBjaGFuZ2Vz IHJlYWxseSBuZWVkZWQ/DQoNCjEyLiBDb3B5Rm9ybWF0T3B0aW9ucw0KDQpDYW4gd2UgcmVtb3Zl IGBib29sIGJpbmFyeWAgaW4gZnV0dXJlPw0KDQoxMy4gZXh0ZXJuYWwgZnVuY3Rpb25zDQoNCmBg YA0KK2V4dGVybiB2b2lkIENvcHlUb0Zvcm1hdFRleHRTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUs IFR1cGxlRGVzYyB0dXBEZXNjKTsNCitleHRlcm4gdm9pZCBDb3B5VG9Gb3JtYXRUZXh0T25lUm93 KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOw0KK2V4dGVybiB2b2lk IENvcHlUb0Zvcm1hdFRleHRFbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsNCitleHRlcm4gdm9pZCBD b3B5RnJvbUZvcm1hdFRleHRTdGFydChDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1 cERlc2MpOw0KK2V4dGVybiBib29sIENvcHlGcm9tRm9ybWF0VGV4dE5leHQoQ29weUZyb21TdGF0 ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwNCisNCkRhdHVtICp2YWx1ZXMsIGJvb2wg Km51bGxzKTsNCitleHRlcm4gdm9pZCBDb3B5RnJvbUZvcm1hdFRleHRFcnJvckNhbGxiYWNrKENv cHlGcm9tU3RhdGUgY3N0YXRlKTsNCisNCitleHRlcm4gdm9pZCBDb3B5VG9Gb3JtYXRCaW5hcnlT dGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKTsNCitleHRlcm4gdm9p ZCBDb3B5VG9Gb3JtYXRCaW5hcnlPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCk7DQorZXh0ZXJuIHZvaWQgQ29weVRvRm9ybWF0QmluYXJ5RW5kKENvcHlUb1N0 YXRlIGNzdGF0ZSk7DQorZXh0ZXJuIHZvaWQgQ29weUZyb21Gb3JtYXRCaW5hcnlTdGFydChDb3B5 RnJvbVN0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOw0KK2V4dGVybiBib29sIENvcHlG cm9tRm9ybWF0QmluYXJ5TmV4dChDb3B5RnJvbVN0YXRlIGNzdGF0ZSwNCkV4cHJDb250ZXh0ICpl Y29udGV4dCwNCisNCiAgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMpOw0KK2V4dGVybiB2b2lk IENvcHlGcm9tRm9ybWF0QmluYXJ5RXJyb3JDYWxsYmFjayhDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7 DQpgYGANCg0KRllJIC0gSWYgeW91IGFkZCBmaWxlcyBmb3Ige3RleHR8Y3N2fGJpbmFyeX0sIHRo ZXNlIGRlY2xhcmF0aW9ucyBjYW4gYmUgcmVtb3ZlZC4NCg0KQmVzdCBSZWdhcmRzLA0KSGF5YXRv IEt1cm9kYQ0KRlVKSVRTVSBMSU1JVEVEDQoNCg==