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.96) (envelope-from ) id 1wDjas-003I9L-2p for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 13:50:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDjas-00A2Za-0l for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 13:50:50 +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.96) (envelope-from ) id 1wDjXi-009ybo-0t for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 13:47:34 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wDjXf-00000001TrM-29bm for pgsql-hackers@postgresql.org; Fri, 17 Apr 2026 13:47:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=8G0mhWJRmD6Or/loAgaWNcAlmrjFmJOGkFUL7QbRiuc=; b=0m/UjdohJJk/U9ikg7++6oPXFE ZQsSM9wD5fOWlxJTaiQyiHqP80BEcfh6MZUHcR6EkoCM0k4cv7TEzUQWRTC4GQn0vdn4NCwjMLt5W vs0QnMu5UgPIYjpbRFrsihirDR1e3usXb0wc+4KRIYsCbFMnSgdwLks37XkGX5KkIETyi7mxMhSHF FNsqmcLgVvL6XK3qHOm8DYL8xX2SH1XMLDg4JHHJGLmfJwV6L9kS+KCt0gROt67TsAWMF+QfmpHqs T8qTd+YTg8r2Hy6ANvMzsfUz1839GHJ3KVlvZ9RID6SzPm70xvj4GrUUh7n3MenDDpHaLKClMMDBM m05uLltw==; Received: from [2409:11:4120:300:8c4d:46c6:742c:5625] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDjXW-0043ev-0b; Fri, 17 Apr 2026 13:47:24 +0000 Date: Fri, 17 Apr 2026 22:47:08 +0900 (JST) Message-Id: <20260417.224708.424973995260396036.ishii@postgresql.org> To: assam258@gmail.com Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Subject: Re: Row pattern recognition From: Tatsuo Ishii In-Reply-To: References: <20260417.171022.397021509290810631.ishii@postgresql.org> <20260417.191303.359804214243525887.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-8859-7 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:8c4d:46c6:742c:5625 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgSGVuc29uLA0KDQo+IEhpIFRhdHN1bywNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhlIGZlZWRi YWNrLg0KPiANCj4gTm90ZSB0aGF0IGFwcGx5aW5nIDAwMDEtMDAwNiBwcm9kdWNlZCBjb21waWxl ciB3YXJuaW5nLg0KPj4NCj4+IGV4ZWNFeHBySW50ZXJwLmM6IEluIGZ1bmN0aW9uIKFFeGVjRXZh bFJQUk5hdlNldKI6DQo+PiBleGVjRXhwckludGVycC5jOjYwMDU6MjM6IHdhcm5pbmc6IKF0YXJn ZXRfcG9zoiBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkDQo+PiBbLVdtYXliZS11bmluaXRpYWxp emVkXQ0KPj4gIDYwMDUgfCAgICAgICAgIHRhcmdldF9zbG90ID0gRXhlY1JQUk5hdkdldFNsb3Qo d2luc3RhdGUsIHRhcmdldF9wb3MpOw0KPj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg Xn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+PiBleGVjRXhwckludGVy cC5jOjU5NTk6MjU6IG5vdGU6IKF0YXJnZXRfcG9zoiB3YXMgZGVjbGFyZWQgaGVyZQ0KPj4gIDU5 NTkgfCAgICAgICAgIGludDY0ICAgICAgICAgICB0YXJnZXRfcG9zOw0KPj4gICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+DQo+Pg0KPiANCj4gYEV4ZWNSUFJOYXZHZXRT bG90KClgLCBhbG9uZyB3aXRoIHRoZSBlbmNsb3NpbmcgYEV4ZWNFdmFsUlBSTmF2U2V0KClgDQo+ IGFuZCBpdHMgYGludDY0IHRhcmdldF9wb3NgIGRlY2xhcmF0aW9uLCBpcyBpbnRyb2R1Y2VkIGJ5 IG5vY2Zib3QtMDAxNw0KPiAoSW1wbGVtZW50IDEtc2xvdCBQUkVWL05FWFQgbmF2aWdhdGlvbiBm b3IgUlBSKSwgbm90IGF0IHRoZSAwMDAxLTAwMDYNCj4gbGV2ZWwuICBDb3VsZCB5b3UgZG91Ymxl LWNoZWNrIHRoZSBhY3R1YWwgYXBwbGllZCByYW5nZSBvbiB5b3VyIHNpZGU/DQo+IFRoZSBmdW5j dGlvbiBzaW1wbHkgZG9lcyBub3QgZXhpc3QgYXQgMDAwMS0wMDA2Lg0KPiANCj4gU2luY2UgdGhl IGZ1bmN0aW9uIGlzIG5vdCBwcmVzZW50IGF0IDAwMDEtMDAwNiwgSSBzdXNwZWN0IHRoZQ0KPiBh cHBsaWVkIHBhdGNoIHNldCBvbiB5b3VyIHNpZGUgaXMgaW4gYSBkaWZmZXJlbnQgc3RhdGUgdGhh bg0KPiBleHBlY3RlZC4gIENvdWxkIHlvdSB2ZXJpZnkgdGhlIHJhbmdlIGFuZCBjb250ZW50cyBv ZiB0aGUgcGF0Y2hlcw0KPiBhY3R1YWxseSBhcHBsaWVkPw0KDQo+IEJ1dCByZWdyZXNzaW9uIHRl c3Qgd2FzIG9rLg0KPj4gSG93ZXZlciwgYWZ0ZXIgYXBwbHlpbmcgMDAwNywgcmVncmVzc2lvbiB0 ZXN0IGZhaWxlZC4NCj4+DQo+PiBub3Qgb2sgMTk2ICAgKyBycHJfaW50ZWdyYXRpb24gICAgICAg ICAgICAgICAgICAgICAgICAgICA1MTQgbXMNCj4+ICMgKHRlc3QgcHJvY2VzcyBleGl0ZWQgd2l0 aCBleGl0IGNvZGUgMikNCj4+DQo+IA0KPiBub2NmYm90LTAwMDYgd2FzIHdyaXR0ZW4gc3BlY2lm aWNhbGx5IHRvIHByZXZlbnQgdGhlIGNyYXNoZXMgdGhhdA0KPiAwMDA3J3MgdGVzdHMgZXhwb3Nl LCBzbyB3aXRoIDAwMDEtMDAwNyBhcHBsaWVkIGluIG9yZGVyIHRoZSBpc3N1ZQ0KPiBzaG91bGQg YWxyZWFkeSBiZSByZXNvbHZlZC4gIE9uIG15IGF1dGhvcml0YXRpdmUgYmFzZSAoY2Zib3QvNDQ2 MCkgYWxsDQo+IHJwcl9pbnRlZ3JhdGlvbiB0ZXN0cyBwYXNzIHRocm91Z2ggMDAwOC4gIEkgaGFk IGJlZW4gcm91dGluZWx5DQo+IGJ1aWxkaW5nIG9ubHkgb24gbWFjT1MgQVJNNjQgcmVjZW50bHks IHNvIEkganVzdCByZS12ZXJpZmllZCBvbg0KPiBSb2NreSA5IGFuZCBVYnVudHUgMjQgQU1ENjQg YXMgd2VsbDsgbm8gYnVpbGQgd2FybmluZyBhbmQgbm8NCj4gcnByX2ludGVncmF0aW9uIGZhaWx1 cmUgb24gZWl0aGVyLg0KDQpZb3UgYXJlIHJpZ2h0LiBJIGNoZWNrZWQgYW5kIGZvdW5kIHRoZSAw MDA2IHBhdGNoIEkgYXBwbGllZCB3YXMgd3JvbmcNCm9uZS4NCg0Kbm9jZmJvdC0wMDA2LUltcGxl bWVudC0xLXNsb3QtUFJFVi1ORVhULW5hdmlnYXRpb24tZm9yLVJQUi50eHQ6DQoNClRoaXMgc2hv dWxkIGhhdmUgYmVlbjoNCm5vY2Zib3QtMDAwNi1GaXgtREVGSU5FLWV4cHJlc3Npb24taGFuZGxp bmctUlBSLXdpbmRvdy1wbGFubmluZy50eHQNCg0KU29ycnkgZm9yIGNvbmZ1c2lvbi4NCg0KPiBG b3IgcmVmZXJlbmNlLCBoZXJlIGlzIG15IHdvcmtpbmcgdHJlZSBsYXlvdXQuICBUaXRsZXMgb25s eSBmb3IgbXkNCj4gcG9zdC1iYXNlIGNvbW1pdHMgKGhhc2hlcyBvbiBteSBzaWRlIHdvbid0IG1h dGNoIHlvdXJzKTsgYmFzZQ0KPiBoYXNoZXMgYXJlIHB1YmxpYyBhbmQgZGlyZWN0bHkgY29tcGFy YWJsZSBvbiB5b3VyIHNpZGU6DQo+IA0KPiAgIFtwb3N0LWJhc2UsIG5ld2VzdCBmaXJzdF0NCj4g ICAgMzEuIFJlbW92ZSB1bnVzZWQgaW5jbHVkZSBhbmQgZml4IGhlYWRlciBvcmRlcmluZyBpbiBS UFIgZmlsZXMNCj4gKG9yaWdpbi9SUFIpDQo+ICAgIDMwLiBBZGQgaW5saW5lIGNvbW1lbnRzIGZv ciBjb21wbGV4IFJQUiBhbGdvcml0aG1zIGFuZCBkZXNpZ24gbm90ZXMNCj4gICAgMjkuIEZpeCBu YXZfc2xvdCBwYXNzLWJ5LXJlZiBkYW5nbGluZyBwb2ludGVyIGluIFJQUiBuYXZpZ2F0aW9uDQo+ ICAgIDI4LiBGaXggUlBSIGRvY3VtZW50YXRpb246IHN5bm9wc2lzLCBncmFtbWFyLCBhbmQgdGVy bWlub2xvZ3kNCj4gICAgMjcuIEZpeCBjb21tZW50IHR5cG9zLCBncmFtbWFyLCBhbmQgaW5hY2N1 cmFjaWVzIGluIFJQUiBjb2RlDQo+ICAgIDI2LiBGaXggUlBSIGVycm9yIG1lc3NhZ2Ugc3R5bGU6 IGhpbnQgZm9ybWF0LCB0ZXJtaW5vbG9neSwgY2FwaXRhbGl6YXRpb24NCj4gICAgMjUuIEd1YXJk IGFnYWluc3QgaW50NjQgb3ZlcmZsb3cgaW4gUlBSIGJvdW5kZWQgZnJhbWUgZW5kIGNvbXB1dGF0 aW9uDQo+ICAgIDI0LiBJbXBsZW1lbnQgRklSU1QvTEFTVCBhbmQgY29tcG91bmQgbmF2aWdhdGlv biBmb3IgUlBSDQo+ICAgIDIzLiBBZGQgTmF2IE1hcmsgTG9va2JhY2sgdG8gRVhQTEFJTiBhbmQg Zml4IGNvbXB1dGVfbmF2X21heF9vZmZzZXQoKQ0KPiAgICAyMi4gQWRkIDItYXJnIFBSRVYvTkVY VCB0ZXN0IGZvciByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIHdpdGggaG9zdA0KPiB2YXJpYWJsZQ0K PiAgICAyMS4gRW5hYmxlIEpJVCBjb21waWxhdGlvbiBmb3IgUFJFVi9ORVhUIG5hdmlnYXRpb24g dGVzdHMgaW4gUlBSDQo+ICAgIDIwLiBVcGRhdGUgUlBSIGNvZGUgY29tbWVudHMgdG8gcmVmbGVj dCAxLXNsb3QgbmF2aWdhdGlvbiBtb2RlbA0KPiAgICAxOS4gQWRkIHR1cGxlc3RvcmUgdHJpbSBv cHRpbWl6YXRpb24gZm9yIFJQUiBQUkVWIG5hdmlnYXRpb24NCj4gICAgMTguIEFkZCBKSVQgY29t cGlsYXRpb24gc3VwcG9ydCBmb3IgUlBSIFBSRVYvTkVYVCBuYXZpZ2F0aW9uDQo+ICAgIDE3LiBJ bXBsZW1lbnQgMS1zbG90IFBSRVYvTkVYVCBuYXZpZ2F0aW9uIGZvciBSUFINCj4gICAgMTYuIE5v cm1hbGl6ZSBSUFIgZWxlbWVudCBmbGFnIG1hY3JvcyB0byByZXR1cm4gYm9vbA0KPiAgICAxNS4g TmFycm93IHZhcmlhYmxlIHNjb3BlIGluIEV4ZWNJbml0V2luZG93QWdnIERFRklORSBjbGF1c2Ug bG9vcA0KPiAgICAxNC4gQWRkIENIRUNLX0ZPUl9JTlRFUlJVUFRTIHRvIFJQUiBjb250ZXh0IGNs ZWFudXAgYW5kIGZpbmFsaXplIGxvb3BzDQo+ICAgIDEzLiBSZW1vdmUgdW51c2VkIGZvcmNlX2Nv bG5vIHBhcmFtZXRlciBmcm9tIFJQUiBkZXBhcnNlIGZ1bmN0aW9ucw0KPiAgICAxMi4gRml4IGV4 ZWNSUFIubyBvcmRlcmluZyBpbiBleGVjdXRvciBNYWtlZmlsZSB0byBtYXRjaCBtZXNvbi5idWls ZA0KPiAgICAxMS4gRml4IHF1b3RlX2lkZW50aWZpZXIoKSBmb3IgUlBSIHBhdHRlcm4gdmFyaWFi bGUgbmFtZSBkZXBhcnNlDQo+ICAgIDEwLiBSZW5hbWUgcnByX2V4cGxhaW4gdGVzdCB2aWV3cyBm cm9tIHNlcXVlbnRpYWwgbnVtYmVycyB0byBkZXNjcmlwdGl2ZQ0KPiBuYW1lcw0KPiAgICAgOS4g QWRkIGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uIGZvciBSUFINCj4gICAgIDguIFJlcGxh Y2UgcmVkdWNlZCBmcmFtZSBtYXAgd2l0aCBzaW5nbGUgbWF0Y2ggcmVzdWx0DQo+ICAgICA3LiBB ZGQgUlBSIHBsYW5uZXIgaW50ZWdyYXRpb24gdGVzdHMNCj4gICAgIDYuIEZpeCBERUZJTkUgZXhw cmVzc2lvbiBoYW5kbGluZyBpbiBSUFIgd2luZG93IHBsYW5uaW5nDQo+ICAgICA1LiBGaXggbWFy ayBoYW5kbGluZyBmb3IgbGFzdF92YWx1ZSgpIHVuZGVyIFJQUg0KPiAgICAgNC4gRml4IGluLXBs YWNlIG1vZGlmaWNhdGlvbiBvZiBkZWZpbmVDbGF1c2UgVGFyZ2V0RW50cnkgaW4gc2V0cmVmcy5j DQo+ICAgICAzLiBBZGQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBuZmFfdHJ5X2Fic29yYl9j b250ZXh0KCkgbG9vcA0KPiAgICAgMi4gQWRkIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gbmZh X2FkZF9zdGF0ZV91bmlxdWUoKSBmb3Igc3RhdGUNCj4gZXhwbG9zaW9uIHBhdHRlcm5zDQo+ICAg ICAxLiBSZW1vdmUgdW51c2VkIHJlZ2V4L3JlZ2V4LmggaW5jbHVkZSBmcm9tIG5vZGVXaW5kb3dB Z2cuYw0KPiANCj4gICBbYmFzZSwgcHVibGljIGhhc2hlc10NCj4gICA3MzJhY2Y5YjdjNiAoY2Zi b3QvY2YvNDQ2MCkgW0NGIDQ0NjBdIHY0NiAtIEltcGxlbWVudCByb3cgcGF0dGVybg0KPiByZWNv Z25pdGlvbiBmZWF0dXJlDQo+ICAgNmViODg0MWFmYWYgUm93IHBhdHRlcm4gcmVjb2duaXRpb24g cGF0Y2ggKHR5cGVkZWZzLmxpc3QpLg0KPiAgIDUyMTNkYmIzYzRmIFJvdyBwYXR0ZXJuIHJlY29n bml0aW9uIHBhdGNoICh0ZXN0czogZXhwZWN0ZWQpLg0KPiAgIGJkYzNhMTc5ODJiIFJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIHBhdGNoICh0ZXN0czogU1FMLCBkYXRhKS4NCj4gICA1OTZiY2M0MzRi NSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZG9jcykuDQo+ICAgZTAyODcyZmQ1OWMg Um93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2ggKGV4ZWN1dG9yIGFuZCBjb21tYW5kcykuDQo+ ICAgNzQyYzZlYjY3M2UgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2ggKHBsYW5uZXIpLg0K PiAgIDg1MTRjYTY0ZjJkIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChyZXdyaXRlciku DQo+ICAgZDI2NzQxZDRmMWQgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2ggKHBhcnNlL2Fu YWx5c2lzKS4NCj4gICBmODVkMmVlOGY0YSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCBm b3IgcmF3IHBhcnNlci4NCj4gICBlNDg0YjBlZWE2MSAob3JpZ2luL1JQUi1iYXNlLCBSUFItYmFz ZSkgRml4IHR3byBpc3N1ZXMgaW4gZmFzdC1wYXRoIEZLDQo+IGNoZWNrIGludHJvZHVjZWQgYnkg Y29tbWl0IDJkYTg2YzFlZjkNCj4gDQo+IENvdWxkIHlvdSBzZW5kIG1lIHRoZSBlcXVpdmFsZW50 IGBnaXQgbG9nYCBmb3IgeW91ciB3b3JraW5nIHRyZWUNCj4gY292ZXJpbmcgdGhlIGZ1bGwgdjQ2 IGFwcGxpY2F0aW9uIGFuZCB0aGUgY29tbWl0IGltbWVkaWF0ZWx5DQo+IHByZWNlZGluZyBpdD8N Cg0KSGVyZSBpdCBpczoNCg0KdC1pc2hpaSQgZ2l0IGxvZyAtLW9uZWxpbmUgLTEwfGNhdA0KNmRk MDc2NTQ2M2EgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2ggKHR5cGVkZWZzLmxpc3QpLg0K MDA5YjM4ZjRkMmIgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2ggKHRlc3RzOiBleHBlY3Rl ZCkuDQowNzg2NGU0MGUzNiBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodGVzdHM6IFNR TCwgZGF0YSkuDQo1NWI0Njc4NDllYiBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZG9j cykuDQoyOGExZmY3ZTc0NCBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZXhlY3V0b3Ig YW5kIGNvbW1hbmRzKS4NCjcyOGIxZmRmMTA2IFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNo IChwbGFubmVyKS4NCmMzODhlM2U3ZWIwIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChy ZXdyaXRlcikuDQoyMzI3MjVhM2U5NSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocGFy c2UvYW5hbHlzaXMpLg0KYzcxOTQwZjllMjEgUm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGF0Y2gg Zm9yIHJhdyBwYXJzZXIuDQozMjJiYWI3OTc0NCBNb3ZlIGRlY2xhcmF0aW9ucyByZWxhdGVkIHRv IGxvY2t0YWdzIGZyb20gbG9jay5oIHRvIG5ldyBsb2NrdGFnLmgNCg0KPiBJbiBwYXJ0aWN1bGFy LCBjb3VsZCB5b3UgYWxzbyBjaGVjayB3aGV0aGVyIHRoZQ0KPiByZWNlbnQgbWFzdGVyIGNvbW1p dCB0aXRsZWQgIkZpeCBpbnRlZ2VyIG92ZXJmbG93IGluDQo+IG5vZGVXaW5kb3dBZ2cuYyIgKGJh Y2twYXRjaGVkIHRvIDE0KSBpcyBpbmNsdWRlZCBpbiB5b3VyIGJhc2U/ICBJdA0KPiB0b3VjaGVz IHRoZSBzYW1lIFJPV1MvR1JPVVBTIGZyYW1lIGJvdW5kYXJ5IGNvZGUgcGF0aCB0aGF0IFJQUg0K PiBpbnRlcmFjdHMgd2l0aCwgc28gaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd2lsbCBoZWxwIG5h cnJvdyB0aGluZ3MNCj4gZG93bi4gIE9uY2UgSSBjYW4gbWF0Y2ggdGhlIHNhbWUgYmFzZSBsb2Nh bGx5LCBJIHdpbGwgcmVwcm9kdWNlIGFuZA0KPiBpbmNsdWRlIHRoZSBmaXggaW4gdGhlIG5leHQg cmV2aXNpb24uDQoNCk5vLCB0aGUgY29tbWl0IGlzIG5vdCBpbiBteSB3b3JraW5nIHRyZWUuDQoN ClNvIEkgZ3Vlc3MgSSBzaG91bGQgaGF2ZSByZWJhc2VkIHY0NiB0cmVlIHNvIHRoYXQgdGhlIGNv bW1pdCBpcyBpbiB0aGUNCndvcmsgdHJlZSBiZWZvcmUgYXBwbHlpbmcgeW91ciBwYXRjaGVzLiBB bSBJIGNvcnJlY3Q/DQoNCj4gQSBxdWljayBzdGF0dXMgdXBkYXRlOg0KPiANCj4gICAtIG5vY2Zi b3QtMDAwNjogc2VsZi1yZXZpZXcgY29tcGxldGUsIG5vdCB5ZXQgc2VudCAoY29tbWVudCB0d2Vh ayBwZXINCj4gcmV2aWV3KQ0KPiAgIC0gbm9jZmJvdC0wMDA3OiB1bmRlciBzZWxmLXJldmlldyAo Y29tbWVudCBkZXRhaWxzIHBlciByZXZpZXcpDQo+ICAgLSBub2NmYm90LTAwMDg6IGluIHByb2dy ZXNzDQo+IA0KPiBJIHdvdWxkIGxpa2UgdG8gcmVzb2x2ZSB0aGUgY3Jhc2ggZmlyc3QgYmVmb3Jl IHNlbmRpbmcgdGhlIG5leHQNCj4gcmV2aXNpb24sIHNvIHRoYXQgdGhlIGZ1bGwgc2V0IGdvZXMg b3V0IHRvZ2V0aGVyIG9uY2Ugb3VyIGJhc2VzIGFyZQ0KPiBhbGlnbmVkIGFuZCBBMyBwYXNzZXMg b24geW91ciBzaWRlLg0KDQpMZXQgbWUgY2hlY2sgdGhlIGNyYXNoIGZpcnN0LiBTaW5jZSBhcHBh cmVudGx5IHRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5DQpteSBtaXMgb3BlcmF0aW9uLg0KDQo+IE9u ZSBwcm9jZXNzIHF1ZXN0aW9uOiBzbyBmYXIgSSBoYXZlIGJlZW4gZm9sZGluZyByZXZpZXcgZmVl ZGJhY2sNCj4gaW50byB0aGUgcmVsZXZhbnQgZXhpc3RpbmcgcGF0Y2hlcyAoaS5lLiBhbWVuZGlu ZyBub2NmYm90LTAwMDggdG8NCj4gcmVmbGVjdCB5b3VyIGNvbW1lbnRzIG9uIGl0KS4NCg0KSSBw cmVmZXIgdGhpcyB3YXkuDQoNCj4gV291bGQgeW91IHByZWZlciB0aGF0IEkgaW5zdGVhZA0KPiBh cHBlbmQgdGhlIHJldmlldyBmaXhlcyBhcyBuZXcgcGF0Y2hlcyBhdCB0aGUgZW5kIG9mIHRoZSBz ZXJpZXMNCj4gKGUuZy4gbm9jZmJvdC0wMDMyLCAwMDMzLCAuLi4pLCBzbyB0aGUgaGlzdG9yeSBv ZiByZXZpZXdlZCBjaGFuZ2VzDQo+IHN0YXlzIHZpc2libGU/ICBIYXBweSB0byBmb2xsb3cgd2hp Y2hldmVyIHdvcmtmbG93IHlvdSBmaW5kIGVhc2llcg0KPiB0byByZXZpZXcuDQoNClJlZ2FyZHMs DQotLQ0KVGF0c3VvIElzaGlpDQpTUkEgT1NTIEsuSy4NCkVuZ2xpc2g6IGh0dHA6Ly93d3cuc3Jh b3NzLmNvLmpwL2luZGV4X2VuLw0KSmFwYW5lc2U6aHR0cDovL3d3dy5zcmFvc3MuY28uanANCg==