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 1rAnUj-008F2Y-6t for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Dec 2023 08:43: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 1rAnTj-008Ipc-5Y for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Dec 2023 08:41: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 1rAnTi-008IpU-Hv for pgsql-hackers@lists.postgresql.org; Wed, 06 Dec 2023 08:41:58 +0000 Received: from mx04.melco.co.jp ([192.218.140.144]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rAnTe-00AMGV-Hb for pgsql-hackers@postgresql.org; Wed, 06 Dec 2023 08:41:57 +0000 Received: from mr06.melco.co.jp (mr06 [133.141.98.164]) by mx04.melco.co.jp (Postfix) with ESMTP id 4SlW9B1fSDzMqhYy; Wed, 6 Dec 2023 17:41:50 +0900 (JST) Received: from mr06.melco.co.jp (unknown [127.0.0.1]) by mr06.imss (Postfix) with ESMTP id 4SlW9B1CHCzMt5kW; Wed, 6 Dec 2023 17:41:50 +0900 (JST) Received: from mf03_second.melco.co.jp (unknown [192.168.20.183]) by mr06.melco.co.jp (Postfix) with ESMTP id 4SlW9B0tcgzMt5k6; Wed, 6 Dec 2023 17:41:50 +0900 (JST) Received: from mf03.melco.co.jp (unknown [133.141.98.183]) by mf03_second.melco.co.jp (Postfix) with ESMTP id 4SlW9B0qxZz7BQS; Wed, 6 Dec 2023 17:41:50 +0900 (JST) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (unknown [104.47.23.105]) by mf03.melco.co.jp (Postfix) with ESMTP id 4SlW9B0YBkzMt2LB; Wed, 6 Dec 2023 17:41:50 +0900 (JST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bko7aNC3fuQGlxXIAg+98y9XMyDhQLXgzZ6YyKFJ6ezw2DzoV+Vab4qy4N03dPPlRa4zZ8LTYfw+eMJLcO3v90pnNO0oyDSLZrC+vQTONI2ql0GbQie8/5+Fgq89YVQLymtkolpGTLkNnpnvCS1OEDffCXNEshs7dsBRxOXM/M5ZsNaRx9KnlPETmEYlhCQ4uDBdh/Mq2B+PGozA+zs9h6nMezqqV4A6Oi6QUE3xkcZw+M8D2sgJjim5uLJ22dJe7XFjWQ4d70FWQaUCgcMckn+wuFBLRJyh4ScYA5dfUB9F/yuhBXQn65AyZDKcFE+VAc9LfWh0VqEWiuQXWPj18g== 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=DjIDpstCXvfeMdaJ+2D2eWCnDs/awBaXda95lw+ncd0=; b=RekZJlHvoqQ7uoM4B2DKowlqHBXvPPEToEn4l+tS38Lh2MMl3w8x2fvUnxm4uZzuIGOATaIXgCrRcwu1q9W+1DNwOPYbFnY7yZN9NAG2YSAiRK2uAZKnZUvhGsMP50VdXx/FJhioW7eEzB7dSuhIbEsHmhnL2kajhRt3pJHdbCC4OMxwd/AxGoEtxibbaayaPkue3iPKdfNN80vYNYKgLtvsx+PYnaej2GLlhDMyNGKEXnAnn1WfKO2IHpsuJAaTcfcDHN7pUOfZ7MlFwD06aPmO6O+4h0pWAxTmboLPo02NszitCGzXPtfoHZ2YoIM3t0w8v/CoMxXoFNYMOGtnqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=df.mitsubishielectric.co.jp; dmarc=pass action=none header.from=df.mitsubishielectric.co.jp; dkim=pass header.d=df.mitsubishielectric.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mitsubishielectricgroup.onmicrosoft.com; s=selector2-mitsubishielectricgroup-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DjIDpstCXvfeMdaJ+2D2eWCnDs/awBaXda95lw+ncd0=; b=iTDZvq3KasOsN2m3ytGtd1cNWpARGH9vcJY38r5znBk0E+nBLzbpq/YouCppMn/bzlRbb6TT12PCTQ81FlqC79qCpfggT7OHGfSuy3v0OO8DOUmBmsh962EekyfMbQwWJbdSnP5uuHg7dT/tz8OQeup+7LCZ5aG11XHlOOVuOcg= Received: from TYAPR01MB5514.jpnprd01.prod.outlook.com (2603:1096:404:8035::12) by TY1PR01MB10643.jpnprd01.prod.outlook.com (2603:1096:400:326::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Wed, 6 Dec 2023 08:41:47 +0000 Received: from TYAPR01MB5514.jpnprd01.prod.outlook.com ([fe80::67c6:9434:deb:8653]) by TYAPR01MB5514.jpnprd01.prod.outlook.com ([fe80::67c6:9434:deb:8653%4]) with mapi id 15.20.7046.034; Wed, 6 Dec 2023 08:41:47 +0000 From: "Fujii.Yuki@df.MitsubishiElectric.co.jp" To: Robert Haas , PostgreSQL-development CC: Tom Lane , Alexander Pyhalov , Bruce Momjian , Stephen Frost , "Finnerty, Jim" , Andres Freund , Tomas Vondra , Julien Rouhaud , Daniel Gustafsson , "Fujii.Yuki@df.MitsubishiElectric.co.jp" Subject: RE: Partial aggregates pushdown Thread-Topic: Partial aggregates pushdown Thread-Index: AQHaIgaib6bK/6EtQkuqaCsS192TFbCb+xbw Date: Wed, 6 Dec 2023 08:41:21 +0000 Deferred-Delivery: Wed, 6 Dec 2023 08:41:20 +0000 Message-ID: References: <8175ddeb6d417d8a1f91e667fef77abf@postgrespro.ru> <4012625.1701120204@sss.pgh.pa.us> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-melpop: 1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=df.MitsubishiElectric.co.jp; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYAPR01MB5514:EE_|TY1PR01MB10643:EE_ x-ms-office365-filtering-correlation-id: 487fae9c-e205-451e-c003-08dbf6372f1f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oYYSRxKujCom7/8kCRJid8BF752rCDr3uS6QMLproHEYHpbQcJTzdcWUo0wB/PU8nFaqE/6op2upIoI7aLi7F/GxG5/bHhGyVScTbjycAhDSK0l11q5yvWG2vRyD9QGwUhhmSWPOvpSY34JGsUvjKJt4KdPOn/bhPsc55PSkgwPvg6h5hCp7TnhVIoP2G5RslYH/AzE2kRp3YT6C9K4ZXkPgXTHL1MCEv/0Z1g7A4hqqDN49uVFJ7Zq1yRbdXZSGzIKTSe2gd6aTOmJ+kdzW9nhcs5t4V3nMwN6ldO5WfeLy80eMoiTTZWZIxgsylvC6EyT0rhjlloQkJmxqljA5qjnBU6g6VNmwCPPXmLvpnb4ZKbyAfuzs4XuEk5A6aBRUxSqtdJtVghLFfrda7XBtnmCHWzzd/vmX49cl14syDXr908qpHcbHQ/g2ZgCTcR8VNU2Y3o/h+qRzpNwlrmQQmFLWvPnQj8T0ZjHzz1+1XO4ZuapyvEjDQwd0JG9pz7VOSRak2+yGyEqKdDcBEcaA3zrdwTUNrLpw1KuQjd445yPnmAwCTcnN4N/pbbtW58AKXDSnY4rKBCaBd5gGPs4igrkC02ChvWmex7x3Cvcn4z7wtgn4ac1rTtevPQ1mQTOv x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB5514.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(39860400002)(376002)(136003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(107886003)(9686003)(53546011)(6506007)(83380400001)(26005)(52536014)(8936002)(41300700001)(7116003)(66556008)(86362001)(4326008)(2906002)(8676002)(33656002)(7416002)(5660300002)(54906003)(110136005)(64756008)(38070700009)(76116006)(316002)(66946007)(66476007)(66446008)(71200400001)(7696005)(6666004)(478600001)(3480700007)(55016003)(122000001)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cnJHRktwSU42ZDNHNHRoaFpkak93aERKNjhHNUZKZnRibmFveVQ3cFdsclgw?= =?utf-8?B?YXlxaklLS1BibC8zeEdzUXJvTTJvN2hTdXVFTXRvbXVMM3Zrb0M4MkNSSWU4?= =?utf-8?B?N0JzNEZFS2hQR1lBd1ZLVW9LRnZ0R3pMdTZHS3hyeXluM0U1M0NxckdFY2ZJ?= =?utf-8?B?N2FXdU9qOWxmNVUxeHZUK0JMQ0VTa1I5WFJYWENWWExOeFJwMTBVSTluWjFV?= =?utf-8?B?ZE5wYTZwdDBjMjRzdk9CbWllT1hTRHd3dFhiZDB2ZWRqcXZ1aEczWk9jaVBN?= =?utf-8?B?YnNWNUR2RUlJNjlad1pwWHpDVDBMTTE3ZXQ3MFQ2RFZJeU5OQUI1MlhPNDJn?= =?utf-8?B?cUMxaEJJNk8rZTRwazIrbHFDTFk3SEo4YTR4U0p2Z3NRYmVhRG5Na1E1UnM2?= =?utf-8?B?TXhXMll1MFhLeWNmQzlYZHdxMXpGM1U4RWlhZ3prUkVWRkZBZmxDRm9UeTEv?= =?utf-8?B?NHZUMXl2dlJpVCtEZ1ozUURpNUMyclI0MThmeElnTnN2RGZPTXNxbndGWVZ0?= =?utf-8?B?YkdxSU1UV0ZoVWhCU2JXTmcxb0lib0lETDNPYWJ0MEdiUURSQndSc2NQdFNp?= =?utf-8?B?VDU3N1duUEdYajVmQ1ZJZnRBZFJzOXhtSkxRL3Y5L3ZXa2tSZzE1ZnBxWktz?= =?utf-8?B?elB1RUVrNGM5cjBNRlYyRmxFeVcvczVsMWdQMjdRdDlzWndIZTBQUVZaTEo2?= =?utf-8?B?cHRURWxVQkl4VkhTS2UrQjF0dFJjTHhYQUJTdGxLRHlPT1BzT0NKRU1WeFpw?= =?utf-8?B?eWZjUzlnenRNazlqMEhKY3pZQ3hkeVp5ZUNYanNUYXRma1JuVDZBRVZnKzhX?= =?utf-8?B?UlpYYi9DSnJLSXo4NVZjK3B6T2VWWGlwOUZpWlBLMmFJVlFuckFHNW1CM29H?= =?utf-8?B?cHhYVm1vNW9keXZtcjVIeklmaDl4dzQ3aWRyMlp5SDZVWnpySnpTSWZPL3Jm?= =?utf-8?B?cXhzNStQVTdxeGFKTjlMY1dwMmxVWk1hRnJZaGdxRU1IRmFsUzYyQTlKTGg4?= =?utf-8?B?QUZ3ZW93OVNmeGZHYTFmMTI1WmoxbW1kSzVDTThkOXBTR3RBU0VBcUhJM0xY?= =?utf-8?B?ZVh3WWlGa0ZkMWptSEdha1N5RXlYTXd5NnpkeHNid1VEY0dGZUpIeW5zWWJs?= =?utf-8?B?Vmx5cHczQzR5R1dxYVd4OWdqbTRab203MXpGM3NSWkI5U01zc0JHek11d1hQ?= =?utf-8?B?NkgrVkFsdmpBWDBQbndRMXlOamNxeEpxeldla3JuVGhkaTJhKytXRkhCK1A2?= =?utf-8?B?bFNBL2lXeVBzWXVDMWIrMEJueXhlZm5CS052YnFQcTdOV3g1UGl5Vk41aGRO?= =?utf-8?B?WmFETXR4RWJxSzVPRVNZc05tS2x5R285MzZQSER5ZjlndmVYSXlRWG11NmhT?= =?utf-8?B?cDY4emRWbm0wcHNrMGlWbWdiQmZJeDQ3VlpDUXFtRGE0Z0hzUUNsSnhpS2Vm?= =?utf-8?B?dHhVcUlobzhZZ2lkMjFYME5Ya1llTEtCNGExbXFOOWx4cko4RjBWTXdKQ2lQ?= =?utf-8?B?TDdhZ1VmdkxCaEJvM2JRK0VBem1pRkgrVUp4c2xQRlhqS3E1MlNQNC9WMzBY?= =?utf-8?B?R1U5NHBQd1lNM3d1Tm5ucVV2Kzk2V21NMnBjUDZCYll6YzA1TnlyN2F5ajVR?= =?utf-8?B?djcydkVkL2dJZGF0SS9KSCtBWE1DWGtwOWVuaUcyaWhMbTFsU0gzTjJra0NC?= =?utf-8?B?V0hwOWFYbzdBQm1HWUQwK0Izd3BaRU1VbDlINDM3bTk5R3Jra09rUWpkVGg1?= =?utf-8?B?Q3pQL2JlaWVVUnd6dTdkeUdBWW41bWx0WGRsakpFcCs4ZUR0OWVZY0hkc25Z?= =?utf-8?B?QUtIY3FsSUZoZFNPaHJyK1lnekhHMEdpL2FpaTBYOHgwd0dmREJYOUMvM0Zy?= =?utf-8?B?K0xZQ2YveWt4R1ovNW1Lc3RpRjFjMnBXc3hPK3Zaa3pvd0Q5Z3VyRk1pSTZk?= =?utf-8?B?RHkzdHVXL2RiRGtZaFY2NzcrRlRna1pjY3BxbUl2RDBoYS8zSGlKWTR3MXhC?= =?utf-8?B?RGhaNXVFeXNad1VIeC9WT1A4bkc5bmsvbE5GaGJOTVJkU0dlczV6ZTJReGt3?= =?utf-8?B?bmRVY3JjY3h2S1NaenVzUEY4cTdnck0wNUtTU01LWGxDVnlBN3BZWUhWUEpv?= =?utf-8?Q?2xVmu+55CvAwR+dY++XfhP94/?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: df.MitsubishiElectric.co.jp X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5514.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 487fae9c-e205-451e-c003-08dbf6372f1f X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2023 08:41:47.6676 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c5a75b62-4bff-4c96-a720-6621ce9978e5 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KoC1qG2f90ZXWaHI7+hpJ9wZy2b8HQji4URla/CEuN12dSW4hStjJJNjhjDTFi/SxfFhRJKn5UhO2EvxWiLnGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PR01MB10643 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgTXIuSGFhcywgaGFja2Vycy4NCg0KPiBGcm9tOiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNA Z21haWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAyOCwgMjAyMyA1OjAzIEFNDQo+ IEFsc28sIEkgd2FudCB0byBtYWtlIG9uZSBvdGhlciBwb2ludCBoZXJlIGFib3V0IHNlY3VyaXR5 IGFuZCByZWxpYWJpbGl0eS4gUmlnaHQgbm93LCB0aGVyZSBpcyBubyB3YXkgZm9yIGEgdXNlciB0 byBmZWVkDQo+IGFyYml0cmFyeSBkYXRhIHRvIGEgZGVzZXJpYWxpemF0aW9uIGZ1bmN0aW9uLiBT aW5jZSBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBvbmx5 IHVzZWQgaW4gdGhlIGNvbnRleHQgb2YNCj4gcGFyYWxsZWwgcXVlcnksIHdlIGFsd2F5cyBrbm93 IHRoYXQgdGhlIGRhdGEgZmVkIHRvIHRoZSBkZXNlcmlhbGl6YXRpb24gZnVuY3Rpb24gbXVzdCBo YXZlIGNvbWUgZnJvbSB0aGUgc2VyaWFsaXphdGlvbg0KPiBmdW5jdGlvbiBvbiB0aGUgc2FtZSBt YWNoaW5lLiBOb3IgY2FuIHVzZXJzIGNhbGwgdGhlIGRlc2VyaWFsaXphdGlvbiBmdW5jdGlvbiBk aXJlY3RseSB3aXRoIGFyYml0cmFyeSBkYXRhIG9mIHRoZWlyIG93bg0KPiBjaG9vc2luZywgYmVj YXVzZSB1c2VycyBjYW5ub3QgY2FsbCBmdW5jdGlvbnMgdGhhdCB0YWtlIG9yIHJldHVybiBpbnRl cm5hbC4gQnV0IHdpdGggdGhpcyBzeXN0ZW0sIGl0IGJlY29tZXMgcG9zc2libGUgdG8NCj4gZmVl ZCBhcmJpdHJhcnkgZGF0YSB0byBhIGRlc2VyaWFsaXphdGlvbiBmdW5jdGlvbi4NCj4gVGhlIHVz ZXIgY291bGQgcmVkZWZpbmUgdGhlIGZ1bmN0aW9uIG9uIHRoZSByZW1vdGUgc2lkZSBzbyB0aGF0 IGl0IHByb2R1Y2VzIGFyYml0cmFyeSBkYXRhIG9mIHRoZWlyIGNob29zaW5nLCBhbmQgdGhlIGxv Y2FsDQo+IGRlc2VyaWFsaXphdGlvbiBmdW5jdGlvbiB3aWxsIGluZ2VzdCBpdC4NCj4gDQo+IFRo YXQncyBwb3RlbnRpYWxseSBxdWl0ZSBhIHNpZ25pZmljYW50IHByb2JsZW0uIENvbnNpZGVyIGZv ciBleGFtcGxlIHRoYXQgbnVtZXJpY3Zhcl9kZXNlcmlhbGl6ZSgpIGRvZXMgbm8gdmFsaWRpdHkN Cj4gY2hlY2tpbmcgb24gYW55IG9mIHRoZSB3ZWlnaHQsIHNpZ24sIG9yIGRzY2FsZSwgYnV0IG5v dCBhbGwgdmFsdWVzIGZvciB0aG9zZSBmaWVsZHMgYXJlIGxlZ2FsLiBSaWdodCBub3cgdGhhdCBk b2Vzbid0IG1hdHRlciwNCj4gYnV0IGlmIHlvdSBjYW4gZmVlZCBhcmJpdHJhcnkgZGF0YSB0byB0 aGF0IGZ1bmN0aW9uLCB0aGVuIGl0IGlzLiBJIGRvbid0IGtub3cgZXhhY3RseSB3aGF0IHRoZSBj b25zZXF1ZW5jZXMgYXJlIGlmIHlvdSBjYW4gZ2V0DQo+IHRoYXQgZnVuY3Rpb24gdG8gc3BpdCBv dXQgYSBOdW1lcmljVmFyIHdpdGggdmFsdWVzIG91dHNpZGUgdGhlIG5vcm1hbCBsZWdhbCByYW5n ZS4gV2hhdCBjYW4geW91IGRvIHRoZW4/DQo+IFN0b3JlIGEgYm9ndXMgbnVtZXJpYyBvbiBkaXNr PyBDcmFzaCB0aGUgc2VydmVyPyBXb3JzdCBjYXNlLCBzb21lIHByb2JsZW0gbGlrZSB0aGlzIGNv dWxkIGJlIGEgc2VjdXJpdHkgaXNzdWUgYWxsb3dpbmcgZm9yDQo+IGVzY2FsYXRpb24gdG8gc3Vw ZXJ1c2VyOyBtb3JlIGxpa2VseSwgaXQgd291bGQgYmUgYSBjcmFzaCBidWcsIGNvcnJ1cHQgeW91 ciBkYXRhYmFzZSwgb3IgbGVhZCB0byB1bmV4cGVjdGVkIGFuZCBzdHJhbmdlDQo+IGVycm9yIG1l c3NhZ2VzLg0KPiANCj4gVW5mb3J0dW5hdGVseSwgSSBoYXZlIHRoZSB1bnBsZWFzYW50IHN1c3Bp Y2lvbiB0aGF0IG1vc3QgaW50ZXJuYWwtdHlwZSBhZ2dyZWdhdGVzIHdpbGwgYmUgYWZmZWN0ZWQg YnkgdGhpcyBwcm9ibGVtLg0KPiBDb25zaWRlciwgZm9yIGV4YW1wbGUsIHN0cmluZ19hZ2dfZGVz ZXJpYWxpemUoKS4gR2VuZXJhbGx5LCBzdHJpbmdzIGFyZSBvbmUgb2YgdGhlIGxlYXN0LWNvbnN0 cmFpbmVkIGRhdGEgdHlwZXMsIHNvIHlvdQ0KPiBtaWdodCBob3BlIHRoYXQgdGhpcyBmdW5jdGlv biB3b3VsZCBiZSBPSy4gQnV0IGl0IGRvZXNuJ3QgbG9vayB2ZXJ5IHByb21pc2luZy4gVGhlIGZp cnN0IGludDQgaW4gdGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24NCj4gaXMgdGhlIGN1cnNv ciwgd2hpY2ggd291bGQgaGF2ZSB0byBiZSBib3VuZHMtY2hlY2tlZCwgbGVzdCBzb21lb25lIHBy b3ZpZGUgYSBjdXJzb3IgdGhhdCBmYWxscyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlDQo+IFN0 cmluZ0luZm8gYW5kLCBtYXliZSwgY2F1c2UgYSByZWZlcmVuY2UgdG8gYW4gYXJiaXRyYXJ5IG1l bW9yeSBsb2NhdGlvbi4gVGhlbiB0aGUgcmVzdCBvZiB0aGUgcmVwcmVzZW50YXRpb24gaXMgdGhl IGFjdHVhbA0KPiBkYXRhLCB3aGljaCBjb3VsZCBiZSBhbnl0aGluZy4gVGhpcyBmdW5jdGlvbiBp cyB1c2VkIGZvciBib3RoIGJ5dGVhIGFuZCBmb3IgdGV4dCwgYW5kIGZvciBieXRlYSwgbGV0dGlu ZyB0aGUgcGF5bG9hZCBiZQ0KPiBhbnl0aGluZyBpcyBPSy4NCj4gQnV0IGZvciB0ZXh0LCB0aGUg c3VwcGxpZWQgZGF0YSBzaG91bGRuJ3QgY29udGFpbiBhbiBlbWJlZGRlZCB6ZXJvIGJ5dGUsIG9y IG90aGVyd2lzZSBiZSBpbnZhbGlkIGluIHRoZSBzZXJ2ZXIgZW5jb2RpbmcuIElmDQo+IGl0IHdl cmUsIHRoYXQgd291bGQgcHJvdmlkZSBhIHZlY3RvciB0byBpbmplY3QgaW52YWxpZGx5IGVuY29k ZWQgZGF0YSBpbnRvIHRoZSBkYXRhYmFzZS4gVGhpcyBmZWF0dXJlIGNhbid0IGJlIGFsbG93ZWQg dG8gZG8NCj4gdGhhdC4NCkkgY29tcGxldGVseSBvdmVybG9va2VkIHRoaXMgaXNzdWUuIEkgc2hv dWxkIGhhdmUgY29uc2lkZXJlZCB0aGUgcmlza3Mgb2Ygc2VuZGluZyByYXcgc3RhdGUgdmFsdWVz IG9yIHNlcmlhbGl6ZWQgc3RhdGUNCmRhdGEgZGlyZWN0bHkgZnJvbSByZW1vdGUgdG8gbG9jYWwu IEkgYXBvbG9naXplLg0KDQo+IFdoYXQgY291bGQgYmUgYSBzb2x1dGlvbiB0byB0aGlzIGNsYXNz IG9mIHByb2JsZW1zPyBPbmUgb3B0aW9uIGlzIHRvIGp1c3QgZ2l2ZSB1cCBvbiBzdXBwb3J0aW5n IHRoaXMgZmVhdHVyZSBmb3IgaW50ZXJuYWwtdHlwZQ0KPiBhZ2dyZWdhdGVzIGZvciBub3cuIFRo YXQncyBlYXN5IGVub3VnaCB0byBkbywgYW5kIGp1c3QgbWVhbnMgd2UgaGF2ZSBsZXNzIGZ1bmN0 aW9uYWxpdHksIGJ1dCBpdCdzIHNhZCBiZWNhdXNlIHRoYXQncw0KPiBmdW5jdGlvbmFsaXR5IHdl J2QgbGlrZSB0byBoYXZlLiBBbm90aGVyIGFwcHJvYWNoIGlzIHRvIGFkZCBuZWNlc3Nhcnkgc2Fu aXR5IGNoZWNrcyB0byB0aGUgcmVsZXZhbnQgZGVzZXJpYWxpemF0aW9uDQo+IGZ1bmN0aW9ucywg YnV0IHRoYXQgc2VlbXMgYSBsaXR0bGUgaGFyZCB0byBnZXQgcmlnaHQsIGFuZCBpdCB3b3VsZCBz bG93IGRvd24gcGFyYWxsZWwgcXVlcnkgY2FzZXMgd2hpY2ggYXJlIHByb2JhYmx5IGdvaW5nIHRv DQo+IGJlIG1vcmUgY29tbW9uIHRoYW4gdGhlIHVzZSBvZiB0aGlzIGZlYXR1cmUuIEkgdGhpbmsg dGhlIHNsb3dkb3duIG1pZ2h0IGJlIHNpZ25pZmljYW50LCB0b28uIEEgdGhpcmQgb3B0aW9uIGlz IHRvIGNoYW5nZQ0KPiB0aG9zZSBhZ2dyZWdhdGVzIGluIHNvbWUgd2F5LCBsaWtlIGdpdmluZyB0 aGVtIGEgdHJhbnNpdGlvbiBmdW5jdGlvbiB0aGF0IG9wZXJhdGVzIG9uIHNvbWUgZGF0YSB0eXBl IG90aGVyIHRoYW4gaW50ZXJuYWwsDQo+IGJ1dCB0aGVyZSBhZ2FpbiB3ZSBoYXZlIHRvIGJlIGNh cmVmdWwgb2Ygc2xvd2Rvd25zLiBBIGZpbmFsIG9wdGlvbiBpcyB0byByZXRoaW5rIHRoZSBpbmZy YXN0cnVjdHVyZSBpbiBzb21lIHdheSwgbGlrZSBoYXZpbmcNCj4gYSB3YXkgdG8gc2VyaWFsaXpl IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIGJ5dGVhLCBmb3Igd2hpY2ggd2UgYWxyZWFkeSBoYXZl IGlucHV0IGZ1bmN0aW9ucyB3aXRoIGFkZXF1YXRlIGNoZWNrcy4gRm9yDQo+IGluc3RhbmNlLCBp ZiBzdHJpbmdfYWdnX3NlcmlhbGl6ZSgpIHByb2R1Y2VkIGEgcmVjb3JkIGNvbnRhaW5pbmcgYW4g aW50ZWdlciBjb2x1bW4gYW5kIGEgdGV4dCBvciBieXRlYSBjb2x1bW4sIHdlIGNvdWxkDQo+IGF0 dGVtcHQgdG8gaW5nZXN0IHRoYXQgcmVjb3JkIG9uIHRoZSBvdGhlciBzaWRlIGFuZCBwcmVzdW1h Ymx5IHRoZSByaWdodCB0aGluZ3Mgd291bGQgaGFwcGVuIGluIHRoZSBjYXNlIG9mIGFueSBpbnZh bGlkDQo+IGRhdGEuIEJ1dCBJJ20gbm90IHF1aXRlIHN1cmUgd2hhdCBpbmZyYXN0cnVjdHVyZSB3 b3VsZCBiZSByZXF1aXJlZCB0byBtYWtlIHRoaXMga2luZCBvZiBpZGVhIHdvcmsuDQpUaGFuayB5 b3UgdmVyeSBtdWNoIGZvciBwcm92aWRpbmcgYSBkaXJlY3Rpb24gdG93YXJkcyByZXNvbHZpbmcg dGhpcyBpc3N1ZS4NCkFzIHlvdSBoYXZlIHN1Z2dlc3RlZCBhcyB0aGUgbGFzdCBvcHRpb24sIGl0 IHNlZW1zIHRoYXQgZXhwYW5kaW5nIHRoZSBjdXJyZW50IG1lY2hhbmlzbSBvZiB0aGUgYWdncmVn YXRpb24NCmZ1bmN0aW9uIGlzIHRoZSBvbmx5IGNob2ljZS4gSXQgbWF5IHRha2Ugc29tZSB0aW1l LCBidXQgSSB3aWxsIGNvbnNpZGVyIHNwZWNpZmljIHNvbHV0aW9ucy4NCg0KPiBGcm9tOiBSb2Jl cnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJl ciAyOCwgMjAyMyA0OjA4IEFNDQo+IE9uIFdlZCwgTm92IDIyLCAyMDIzIGF0IDE6MzLigK9BTSBB bGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVzcHJvLnJ1PiB3cm90ZToNCj4gPiBI aS4gSEFWSU5HIGlzIGFsc28gYSBwcm9ibGVtLiBDb25zaWRlciB0aGUgZm9sbG93aW5nIHF1ZXJ5 DQo+ID4NCj4gPiBTRUxFQ1QgY291bnQoYSkgRlJPTSB0IEhBVklORyBjb3VudChhKSA+IDEwIC0g d2UgY2FuJ3QgcHVzaCBpdCBkb3duIHRvDQo+ID4gZm9yZWlnbiBzZXJ2ZXIgYXMgSEFWSU5HIG5l ZWRzIGZ1bGwgYWdncmVnYXRlIHJlc3VsdCwgYnV0IGZvcmVpZ24NCj4gPiBzZXJ2ZXIgZG9uJ3Qg a25vdyBpdC4NCj4gDQo+IEkgZG9uJ3Qgc2VlIGl0IHRoYXQgd2F5LiBXaGF0IHdlIHdvdWxkIHB1 c2ggdG8gdGhlIGZvcmVpZ24gc2VydmVyIHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlIFNFTEVDVCBj b3VudChhKSBGUk9NIHQuIFRoZW4sDQo+IGFmdGVyIHdlIGdldCB0aGUgcmVzdWx0cyBiYWNrIGFu ZCBjb21iaW5lIHRoZSB2YXJpb3VzIHBhcnRpYWwgY291bnRzIGxvY2FsbHksIHdlIHdvdWxkIGxv Y2FsbHkgZXZhbHVhdGUgdGhlIEhBVklORyBjbGF1c2UNCj4gYWZ0ZXJ3YXJkLiBUaGF0IGlzLCBw YXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGEgYmFycmllciB0byBwdXNoaW5nIGRvd24gSEFWSU5HIGNs YXVzZSBpdHNlbGYsIGJ1dCBpdCBkb2Vzbid0IHByZWNsdWRlIHB1c2hpbmcNCj4gZG93biB0aGUg YWdncmVnYXRpb24uDQpJIHVuZGVyc3RhbmQgd2hhdCB0aGUgcHJvYmxlbSBpcy4gSSB3aWxsIHRy eSB0byBmaXggaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KPiBGcm9tOiBSb2JlcnQgSGFhcyA8 cm9iZXJ0bWhhYXNAZ21haWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAyOCwgMjAy MyA1OjAzIEFNDQo+IE9uIFdlZCwgTm92IDIyLCAyMDIzIGF0IDU6MTbigK9BTSBGdWppaS5ZdWtp QGRmLk1pdHN1YmlzaGlFbGVjdHJpYy5jby5qcA0KPiA8RnVqaWkuWXVraUBkZi5taXRzdWJpc2hp ZWxlY3RyaWMuY28uanA+IHdyb3RlOg0KPiA+IEkgZGlkIG5vdCBjaG9vc2UgQXBwcm9hY2gyIGJl Y2F1c2UgSSB3YXMgbm90IGNvbmZpZGVudCB0aGF0IHRoZQ0KPiA+IGRpc2FkdmFudGFnZSBtZW50 aW9uZWQgaW4gMi4oMikoYSkgd291bGQgYmUgYWNjZXB0ZWQgYnkgdGhlIFBvc3RncmVTUUwgZGV2 ZWxvcG1lbnQgY29tbXVuaXR5Lg0KPiA+IElmIGl0IGlzIGFjY2VwdGVkLCBJIHRoaW5rIEFwcHJv YWNoIDIgaXMgc21hcnRlci4NCj4gPiBDb3VsZCB5b3UgcGxlYXNlIHByb3ZpZGUgeW91ciBvcGlu aW9uIG9uIHdoaWNoIGFwcHJvYWNoIGlzIHByZWZlcmFibGUNCj4gPiBhZnRlciBjb21wYXJpbmcg dGhlc2UgdHdvIGFwcHJvYWNoZXM/DQo+ID4gSWYgd2UgY2Fubm90IHNheSBhbnl0aGluZyB3aXRo b3V0IGNvbXBhcmluZyB0aGUgYW1vdW50IG9mIHNvdXJjZSBjb2RlLA0KPiA+IGFzIE1yLk1vbWpp YW4gbWVudGlvbmVkLCB3ZSBuZWVkIHRvIGVzdGltYXRlIHRoZSBhbW91bnQgb2Ygc291cmNlIGNv ZGUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IEFwcHJvYWNoMi4NCj4gDQo+IEkndmUgaGFkIHRoZSBz YW1lIGNvbmNlcm4sIHRoYXQgYXBwcm9hY2ggIzIgd291bGQgZHJhdyBvYmplY3Rpb25zLCBzbyBJ IHRoaW5rIHlvdSB3ZXJlIHJpZ2h0IHRvIGJlIGNhdXRpb3VzIGFib3V0IGl0LiBJDQo+IGRvbid0 IHRoaW5rIGl0IGlzIGEgd29uZGVyZnVsIGFwcHJvYWNoIGluIGFsbCB3YXlzLCBidXQgSSBkbyB0 aGluayB0aGF0IGl0IGlzIHN1cGVyaW9yIHRvIGFwcHJvYWNoICMxLiBJZiB3ZSBhZGQgZGVkaWNh dGVkDQo+IHN1cHBvcnQgdG8gdGhlIGdyYW1tYXIsIGl0IGlzIG1vc3RseSBhIG9uZS10aW1lIGVm Zm9ydCwgYW5kIGFmdGVyIHRoYXQsIHRoZXJlIHNob3VsZCBub3QgYmUgbXVjaCBuZWVkIGZvciBh bnlvbmUgdG8gYmUNCj4gY29uY2VybmVkIGFib3V0IGl0LiBJZiB3ZSBpbnN0ZWFkIGFkZCBleHRy YSBhZ2dyZWdhdGVzLCB0aGVuIHRoYXQgZ2VuZXJhdGVzIGV4dHJhIHdvcmsgZXZlcnkgdGltZSBz b21lb25lIHdyaXRlcyBhIHBhdGNoDQo+IHRoYXQgYWRkcyBhIG5ldyBhZ2dyZWdhdGUgdG8gY29y ZS4gSSBoYXZlIGEgZGlmZmljdWx0IHRpbWUgYmVsaWV2aW5nIHRoYXQgYW55b25lIHdpbGwgcHJl ZmVyIGFuIGFwcHJvYWNoIHRoYXQgaW52b2x2ZXMgYW4NCj4gb25nb2luZyBtYWludGVuYW5jZSBl ZmZvcnQgb2YgdGhhdCB0eXBlIG92ZXIgb25lIHRoYXQgZG9lc24ndC4NCj4gDQo+IE9uZSBwb2lu dCB0aGF0IHNlZW1zIHRvIG1lIHRvIGJlIG9mIHBhcnRpY3VsYXIgaW1wb3J0YW5jZSBpcyB0aGF0 IGlmIHdlIGFkZCBuZXcgYWdncmVnYXRlcywgdGhlcmUgaXMgYSByaXNrIHRoYXQgc29tZQ0KPiBm dXR1cmUgYWdncmVnYXRlIG1pZ2h0IGRvIHRoYXQgaW5jb3JyZWN0bHksIHNvIHRoYXQgdGhlIG1h aW4gYWdncmVnYXRlIHdvcmtzLCBidXQgdGhlIHNlY29uZGFyeSBhZ2dyZWdhdGUgY3JlYXRlZCBm b3IgdGhpcw0KPiBmZWF0dXJlIGRvZXMgbm90IHdvcmsuIFRoYXQgc2VlbXMgbGlrZSBpdCB3b3Vs ZCBiZSB2ZXJ5IGZydXN0cmF0aW5nIGZvciBmdXR1cmUgY29kZSBhdXRob3JzIHNvIEknZCBsaWtl IHRvIGF2b2lkIHRoZSByaXNrIGFzDQo+IG11Y2ggYXMgd2UgY2FuLg0KQXJlIHlvdSBjb25jZXJu ZWQgYWJvdXQgdGhlIGhhc3NsZSBhbmQgcG90ZW50aWFsIGh1bWFuIGVycm9ycyBvZiBtYW51YWxs eSBhZGRpbmcgbmV3IHBhcnRpYWwNCmFnZ3JlZ2F0aW9uIGZ1bmN0aW9ucywgcmF0aGVyIHRoYW4g dGhlIGNhdGFsb2cgYmVjb21pbmcgYmxvYXRlZD8NClRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIHBh cnRpYWwgYWdncmVnYXRpb24gZnVuY3Rpb25zIGZyb20gYWdncmVnYXRpb24gZnVuY3Rpb25zIGNh biBiZSBhdXRvbWF0ZWQsDQpzbyBJIGJlbGlldmUgdGhpcyBpc3N1ZSBjYW4gYmUgcmVzb2x2ZWQu IEhvd2V2ZXIsIGF1dG9tYXRpbmcgaXQgbWF5IGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBwYXRj aA0KZXZlbiBtb3JlLCBzbyBvdmVyYWxsLCBhcHByb2FjaCMyIG1pZ2h0IGJlIGJldHRlci4NClRv IGltcGxlbWVudCBhcHByb2FjaCAjMiwgaXQgd291bGQgYmUgbmVjZXNzYXJ5IHRvIGludmVzdGln YXRlIGhvdyBtdWNoIGFkZGl0aW9uYWwgY29kZSBpcyByZXF1aXJlZC4NCg0KU2luY2VyZWx5IHlv dXJzLA0KWXV1a2kgRnVqaWkNCg0KLS0NCll1dWtpIEZ1amlpDQpJbmZvcm1hdGlvbiBUZWNobm9s b2d5IFImRCBDZW50ZXIgTWl0c3ViaXNoaSBFbGVjdHJpYyBDb3Jwb3JhdGlvbg0K