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 1vXy4f-00AWxP-0g for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 08:48:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vXy4e-000nP6-0L for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 08:48:56 +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 1vXy2S-000mQ2-17 for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 08:46:41 +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.96) (envelope-from ) id 1vXy2R-0029es-0k for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 08:46:40 +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=rsr20Nmu+SwT+poSOnTTfc3/UWzS+Iv93D5+P7Is8Dw=; b=2T22alZPvmOYhKQ8X+MZenl4wh SLAjlKzl+1Yi/1eqQ4X7QJG7ihir60l18lgFAWegk85mXGTgY194znZzVQXqbkEA4jPFqtx7YAH5+ btgm2uE41GcwWyShNP4X5ll7yyMKuBHyswXma6YyPqZhrRdckUPfEl1aXZnwK+QRESwbWFzqN2w0x 1V55aA4M0weQOVKh0DUIv8KPPcf/4HdSzsEJxf03twVxz8cxvJ3wRGKrG1SHnGl4iekCium/NZsjk H3PBRyL/JGNxQQouxjpJVDAg6cTrK3/h12ag7c5aLeWFk0hA/+Ky5+TuuHUNpeRZaUffGGuFAbwGo /LG0nBMQ==; Received: from [2409:11:4120:300:d881:826a:ffa7:8a92] (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 1vXy2N-004q0d-0c; Tue, 23 Dec 2025 08:46:37 +0000 Date: Tue, 23 Dec 2025 17:46:25 +0900 (JST) Message-Id: <20251223.174625.653233061559427537.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: recent access based routing for primary-replica setups From: Tatsuo Ishii In-Reply-To: References: <20251223.091342.1595559830808064194.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:d881:826a:ffa7:8a92 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk PiBIaSBUYXRzdW8sDQo+IA0KPiBJJ2ttIHJ1bm5pbmcgaW50byBpc3N1ZXMgdGVzdGluZyB0aGlz IGFuZCBoYXZlIGNyZWF0ZWQgYSBmdWxsIGRvY2tlcg0KPiBjb21wb3NlIHNldHVwIC0gY2FuIHlv dSBwbGVhc2UgcG9pbnQgbWUgdG8gdXAgdG8gZGF0ZSBndWlkZXMgb24gdGhlIGJlc3QNCj4gd2F5 IHRvIHJ1biB0aGUgdGVzdHMgc28gaSBrbm93IHdlJ3JlIGRvaW5nIGl0IHRoZSBzYW1lIHdheT8N Cj4gDQo+IFRoYW5rIHlvdSBmb3IgYWxsIHlvdXIgaGVscCENCg0KSSBoYXZlIHJ1biB0aGUgcmVn cmVzc2lvbiB0ZXN0IG9uIHRoZSBQZ3Bvb2wtSUkgbWFzdGVyIGJyYW5jaCBvbiBteQ0KVWJ1bnR1 IDI0IGJveC4NCg0KY2QgcGdwb29sMi9zcmMvdGVzdC9yZWdyZXNzaW9uDQouL3JlZ3Jlc3Muc2gg MDQxDQoNClRoaXMgdGltZSBJIG5vdGljZWQ6DQoNCi0gVGhlIHBhdGNoIGRvZXMgbm90IG5hbWVk IHdpdGggdmVyc2lvbiBudW1iZXINCi0gVGhlIHBhdGNoIGNyZWF0ZXMgLmRvY2tlcmlnbm9yZSBh bmQgZG9ja2VyLyBkaXJlY3RvcnkuDQoNCkFyZSB0aGV5IGludGVuZGVkPyBJIGFtIGFza2luZyBi ZWNhdXNlIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQ0KcHJldmlvdXMgdmVyc2lvbi4NCg0K PiBPbiBUdWUsIERlYyAyMywgMjAyNSBhdCAyOjEz4oCvQU0gVGF0c3VvIElzaGlpIDxpc2hpaUBw b3N0Z3Jlc3FsLm9yZz4gd3JvdGU6DQo+IA0KPj4gPiBJIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgcGFz c2luZyBub3cuIG5ldyB2ZXJzaW9uIGF0dGFjaGVkLg0KPj4NCj4+IFVuZm9ydHVuYXRlbHkgVGVz dDEgZGlkIG5vdCBwYXNzLg0KPj4NCj4+ID09PSBUZXN0MTogQmFzaWMgZXh0ZXJuYWwgY29tbWFu ZCB3aXRoIGludGVnZXIgbWlsbGlzZWNvbmQgdmFsdWVzID09PQ0KPj4gd2FpdGluZyBmb3Igc2Vy dmVyIHRvIHN0YXJ0Li4uLjE0Mzg2MDAgMjAyNS0xMi0yMyAwOTowOTo0OC4zMzcgSlNUIExPRzoN Cj4+IHJlZGlyZWN0aW5nIGxvZyBvdXRwdXQgdG8gbG9nZ2luZyBjb2xsZWN0b3IgcHJvY2Vzcw0K Pj4gMTQzODYwMCAyMDI1LTEyLTIzIDA5OjA5OjQ4LjMzNyBKU1QgSElOVDogIEZ1dHVyZSBsb2cg b3V0cHV0IHdpbGwgYXBwZWFyDQo+PiBpbiBkaXJlY3RvcnkgImxvZyIuDQo+PiAgZG9uZQ0KPj4g c2VydmVyIHN0YXJ0ZWQNCj4+IHdhaXRpbmcgZm9yIHNlcnZlciB0byBzdGFydC4uLi4xNDM4NjE3 IDIwMjUtMTItMjMgMDk6MDk6NDguNDQzIEpTVCBMT0c6DQo+PiByZWRpcmVjdGluZyBsb2cgb3V0 cHV0IHRvIGxvZ2dpbmcgY29sbGVjdG9yIHByb2Nlc3MNCj4+IDE0Mzg2MTcgMjAyNS0xMi0yMyAw OTowOTo0OC40NDMgSlNUIEhJTlQ6ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxsIGFwcGVhcg0KPj4g aW4gZGlyZWN0b3J5ICJsb2ciLg0KPj4gIGRvbmUNCj4+IHNlcnZlciBzdGFydGVkDQo+PiB3YWl0 aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQuLi4uMTQzODYzNCAyMDI1LTEyLTIzIDA5OjA5OjQ4LjU2 MSBKU1QgTE9HOg0KPj4gcmVkaXJlY3RpbmcgbG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3Rv ciBwcm9jZXNzDQo+PiAxNDM4NjM0IDIwMjUtMTItMjMgMDk6MDk6NDguNTYxIEpTVCBISU5UOiAg RnV0dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXINCj4+IGluIGRpcmVjdG9yeSAibG9nIi4NCj4+ ICBkb25lDQo+PiBzZXJ2ZXIgc3RhcnRlZA0KPj4gQ1JFQVRFIFRBQkxFDQo+PiBXYWl0aW5nIGZv ciBzcl9jaGVjayB0byBydW4uLi4NCj4+IENvbW1hbmQgZXhlY3V0ZWQgYWZ0ZXIgMSBzZWNvbmRz DQo+PiAgbm9kZV9pZCB8IGhvc3RuYW1lICB8IHBvcnQgIHwgc3RhdHVzIHwgcGdfc3RhdHVzIHwg bGJfd2VpZ2h0IHwgIHJvbGUgICB8DQo+PiBwZ19yb2xlIHwgc2VsZWN0X2NudCB8IGxvYWRfYmFs YW5jZV9ub2RlIHwgcmVwbGljYXRpb25fZGVsYXkgfA0KPj4gcmVwbGljYXRpb25fc3RhdGUgfCBy ZXBsaWNhdGlvbl9zeW5jX3N0YXRlIHwgbGFzdF9zdGF0dXNfY2hhbmdlDQo+Pg0KPj4gLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gIDAgICAgICAgfCBsb2NhbGhvc3QgfCAxMTAw MiB8IHVwICAgICB8IHVwICAgICAgICB8IDAuMzMzMzMzICB8IHByaW1hcnkgfA0KPj4gcHJpbWFy eSB8IDAgICAgICAgICAgfCB0cnVlICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgIHwN Cj4+ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAyNS0xMi0yMyAwOTowOTo0OQ0K Pj4gIDEgICAgICAgfCBsb2NhbGhvc3QgfCAxMTAwMyB8IHVwICAgICB8IHVwICAgICAgICB8IDAu MzMzMzMzICB8IHN0YW5kYnkgfA0KPj4gc3RhbmRieSB8IDAgICAgICAgICAgfCBmYWxzZSAgICAg ICAgICAgICB8IDAgICAgICAgICAgICAgICAgIHwNCj4+ICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHwgMjAyNS0xMi0yMyAwOTowOTo0OQ0KPj4gIDIgICAgICAgfCBsb2NhbGhvc3QgfCAx MTAwNCB8IHVwICAgICB8IHVwICAgICAgICB8IDAuMzMzMzMzICB8IHN0YW5kYnkgfA0KPj4gc3Rh bmRieSB8IDAgICAgICAgICAgfCBmYWxzZSAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAg IHwNCj4+ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAyNS0xMi0yMyAwOTowOTo0 OQ0KPj4gKDMgcm93cykNCj4+DQo+PiBmYWlsOiBleHRlcm5hbCBjb21tYW5kIGRlbGF5IGxvZ2dp bmcgbm90IGZvdW5kDQo+Pg0KPj4gPiBPbiBNb24sIE5vdiAyNCwgMjAyNSBhdCA5OjQx4oCvQU0g VGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4NCj4+IHdyb3RlOg0KPj4gPg0KPj4g Pj4gVGhhbmsgeW91IGZvciB1cGRhdGluZyB0aGUgcGF0Y2ghIFRoaXMgdGltZSB0aGUgcGF0Y2gg YXBwbGllcyB3aXRob3V0DQo+PiA+PiBhbnkgaXNzdWUgYW5kIGNvbXBpbGVzIGZpbmUuIFVuZm9y dHVuYXRlbHkgcmVncmVzc2lvbiB0ZXN0IGZhaWxlZC4NCj4+ID4+DQo+PiA+PiB0ZXN0aW5nIDA0 MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS4uLmZhaWxlZC4NCj4+ID4+DQo+PiA+PiBGcm9t IHRoZSByZWdyZXNzaW9uIGxvZywgaXQgc2VlbXMgVGVzdDcgZmFpbGVkLg0KPj4gPj4NCj4+ID4+ DQo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ID4+ID09PSBUZXN0NzogQ29tbWFuZCB0aW1l b3V0IGhhbmRsaW5nID09PQ0KPj4gPj4gd2FpdGluZyBmb3Igc2VydmVyIHRvIHN0YXJ0Li4uLjQx MTE4MSAyMDI1LTExLTI0IDE2OjMxOjA1LjI0NCBKU1QgTE9HOg0KPj4gPj4gcmVkaXJlY3Rpbmcg bG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQo+PiA+PiA0MTExODEgMjAy NS0xMS0yNCAxNjozMTowNS4yNDQgSlNUIEhJTlQ6ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxsIGFw cGVhcg0KPj4gaW4NCj4+ID4+IGRpcmVjdG9yeSAibG9nIi4NCj4+ID4+ICBkb25lDQo+PiA+PiBz ZXJ2ZXIgc3RhcnRlZA0KPj4gPj4gd2FpdGluZyBmb3Igc2VydmVyIHRvIHN0YXJ0Li4uLjQxMTE5 NiAyMDI1LTExLTI0IDE2OjMxOjA1LjM1MiBKU1QgTE9HOg0KPj4gPj4gcmVkaXJlY3RpbmcgbG9n IG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQo+PiA+PiA0MTExOTYgMjAyNS0x MS0yNCAxNjozMTowNS4zNTIgSlNUIEhJTlQ6ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxsIGFwcGVh cg0KPj4gaW4NCj4+ID4+IGRpcmVjdG9yeSAibG9nIi4NCj4+ID4+ICBkb25lDQo+PiA+PiBzZXJ2 ZXIgc3RhcnRlZA0KPj4gPj4gd2FpdGluZyBmb3Igc2VydmVyIHRvIHN0YXJ0Li4uLjQxMTIxMyAy MDI1LTExLTI0IDE2OjMxOjA1LjQ2MSBKU1QgTE9HOg0KPj4gPj4gcmVkaXJlY3RpbmcgbG9nIG91 dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQo+PiA+PiA0MTEyMTMgMjAyNS0xMS0y NCAxNjozMTowNS40NjEgSlNUIEhJTlQ6ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxsIGFwcGVhcg0K Pj4gaW4NCj4+ID4+IGRpcmVjdG9yeSAibG9nIi4NCj4+ID4+ICBkb25lDQo+PiA+PiBzZXJ2ZXIg c3RhcnRlZA0KPj4gPj4gV2FpdGluZyBmb3IgY29tbWFuZCB0aW1lb3V0Li4uDQo+PiA+PiBmYWls OiBjb21tYW5kIHRpbWVvdXQgbm90IGRldGVjdGVkDQo+PiA+Pg0KPj4gPj4NCj4+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPj4gPj4NCj4+ID4+IEF0dGFjaGVkIGlzIHRoZSBwZ3Bvb2wubG9nLiBJ ZiB5b3UgbmVlZCBtb3JlIGluZm8sIHBsZWFzZSBsZXQgbWUga25vdy4NCj4+ID4+DQo+PiA+PiBC ZXN0IHJlZ2FyZHMsDQo+PiA+PiAtLQ0KPj4gPj4gVGF0c3VvIElzaGlpDQo+PiA+PiBTUkEgT1NT IEsuSy4NCj4+ID4+IEVuZ2xpc2g6IGh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwL2luZGV4X2VuLw0K Pj4gPj4gSmFwYW5lc2U6aHR0cDovL3d3dy5zcmFvc3MuY28uanANCj4+ID4+DQo+PiA+Pg0KPj4g Pj4gPiBIaSBUYXRzdW8sDQo+PiA+PiA+DQo+PiA+PiA+IFNvcnJ5IGFnYWluLCB0aGlzIHdhcyBk dWUgdG8gdGhlIHNlcGFyYXRpb24gb2YgMiBwYXRjaGVzIGFuZCBpIG9ubHkNCj4+IHNlbnQNCj4+ ID4+ID4gdGhlIG9uZS4NCj4+ID4+ID4NCj4+ID4+ID4gSSd2ZSBtZXJnZWQgaXQgaW50byAxIGNv bW1pdCBhbmQgMSBwYXRjaCBhbmQgcmViYXNlZCBvdmVyIG1hc3RlciB0bw0KPj4gYXZvaWQNCj4+ ID4+ID4gdGhlc2UgaXNzdWVzIG1vdmluZyBmb3J3YXJkLg0KPj4gPj4gPg0KPj4gPj4gPiBQRkEg bGF0ZXN0IHZlcnNpb24NCj4+ID4+ID4NCj4+ID4+ID4gT24gVGh1LCBOb3YgMjAsIDIwMjUgYXQg MTowOeKAr0FNIFRhdHN1byBJc2hpaSA8aXNoaWlAcG9zdGdyZXNxbC5vcmc+DQo+PiA+PiB3cm90 ZToNCj4+ID4+ID4NCj4+ID4+ID4+IEhpIE5hZGF2LA0KPj4gPj4gPj4NCj4+ID4+ID4+IFRoYW5r IHlvdSBmb3IgbmV3IHBhdGNoLg0KPj4gPj4gPj4gVW5mb3J0dW5hdGVseSB0aGUgcGF0Y2ggZGlk IG5vdCBhcHBseSB0byBjdXJyZW50IG1hc3Rlci4NCj4+ID4+ID4+DQo+PiA+PiA+PiAkIGdpdCBh cHBseQ0KPj4gPj4gPj4gfi8wMDAxLUZpeC1tdWx0aXBsZS1pc3N1ZXMtaW4tZXh0ZXJuYWwtcmVw bGljYXRpb24tZGVsYXktZmUucGF0Y2gNCj4+ID4+ID4+IGVycm9yOiBwYXRjaCBmYWlsZWQ6DQo+ PiBzcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmM6Njk0DQo+PiA+ PiA+PiBlcnJvcjogc3JjL3N0cmVhbWluZ19yZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5j OiBwYXRjaCBkb2VzIG5vdA0KPj4gPj4gYXBwbHkNCj4+ID4+ID4+DQo+PiA+PiA+PiBNYXliZSB0 aGUgcGF0Y2ggaXMgb24gdG9wIG9mIHlvdXIgcHJldmlvdXMgcGF0Y2g/DQo+PiA+PiA+Pg0KPj4g Pj4gPj4gQWxzbyBJIHN1Z2dlc3QgdG8gdXNlICItdiIgb3B0aW9uIG9mICJnaXQgZm9ybWF0LXBh dGNoIiB0byBhZGQgdGhlDQo+PiA+PiA+PiBwYXRjaCB2ZXJzaW9uIG51bWJlciBzbyB0aGF0IHdl IGNhbiBlYXNpbHkga25vdyB3aGljaCBwYXRjaCBpcyB0aGUNCj4+ID4+ID4+IGxhdGVzdC4NCj4+ ID4+ID4+DQo+PiA+PiA+PiBCZXN0IHJlZ2FyZHMsDQo+PiA+PiA+PiAtLQ0KPj4gPj4gPj4gVGF0 c3VvIElzaGlpDQo+PiA+PiA+PiBTUkEgT1NTIEsuSy4NCj4+ID4+ID4+IEVuZ2xpc2g6IGh0dHA6 Ly93d3cuc3Jhb3NzLmNvLmpwL2luZGV4X2VuLw0KPj4gPj4gPj4gSmFwYW5lc2U6aHR0cDovL3d3 dy5zcmFvc3MuY28uanANCj4+ID4+ID4+DQo+PiA+PiA+PiA+IEhpIFRhdHN1bywNCj4+ID4+ID4+ ID4NCj4+ID4+ID4+ID4gUGxlYXNlIHNlZSBhdHRhY2hlZCBhbiB1cGRhdGVkIHZlcnNpb24uDQo+ PiA+PiA+PiA+DQo+PiA+PiA+PiA+IHRoYW5rIHlvdQ0KPj4gPj4gPj4gPg0KPj4gPj4gPj4gPiBP biBGcmksIE5vdiA3LCAyMDI1IGF0IDI6MDfigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3Rn cmVzcWwub3JnPg0KPj4gPj4gPj4gd3JvdGU6DQo+PiA+PiA+PiA+DQo+PiA+PiA+PiA+PiA+IFNv cnJ5IGZvciB0aGF0IC0gdGhhbmtzIGZvciB0aGUgcGF0Y2guDQo+PiA+PiA+PiA+PiA+DQo+PiA+ PiA+PiA+PiA+IFBsZWFzZSBmaW5kIGF0dGFjaGVkIGEgbmV3IHZlcnNpb24NCj4+ID4+ID4+ID4+ DQo+PiA+PiA+PiA+PiBUaGFua3MgZm9yIHRoZSBuZXcgdmVyc2lvbi4gVW5mb3J0dW5hdGVseSB0 aGlzIHRpbWUgcmVncmVzc2lvbg0KPj4gdGVzdA0KPj4gPj4gPj4gPj4gZmFpbHMgYXQ6DQo+PiA+ PiA+PiA+Pg0KPj4gPj4gPj4gPj4gPiBXYWl0aW5nIGZvciBjb21tYW5kIHRpbWVvdXQuLi4NCj4+ ID4+ID4+ID4+ID4gZmFpbDogY29tbWFuZCB0aW1lb3V0IG5vdCBkZXRlY3RlZA0KPj4gPj4gPj4g Pj4NCj4+ID4+ID4+ID4+IEF0dGFjaGVkIGlzIHRoZSBwZ3Bvb2wubG9nLg0KPj4gPj4gPj4gPj4N Cj4+ID4+ID4+ID4+IEJlc3QgcmVnYXJkcywNCj4+ID4+ID4+ID4+IC0tDQo+PiA+PiA+PiA+PiBU YXRzdW8gSXNoaWkNCj4+ID4+ID4+ID4+IFNSQSBPU1MgSy5LLg0KPj4gPj4gPj4gPj4gRW5nbGlz aDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4vDQo+PiA+PiA+PiA+PiBKYXBhbmVz ZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4gT24g TW9uLCBOb3YgMywgMjAyNSBhdCA5OjA14oCvQU0gVGF0c3VvIElzaGlpIDwNCj4+IGlzaGlpQHBv c3RncmVzcWwub3JnPg0KPj4gPj4gPj4gPj4gd3JvdGU6DQo+PiA+PiA+PiA+PiA+DQo+PiA+PiA+ PiA+PiA+PiA+IHRoYW5rcyBhbmQgc29ycnkgZm9yIHRoZSBpc3N1ZXMsIHBsZWFzZSBmaW5kIGF0 dGFjaGVkIHVwZGF0ZWQNCj4+ID4+ID4+IHZlcnNpb24uDQo+PiA+PiA+PiA+PiA+Pg0KPj4gPj4g Pj4gPj4gPj4gTm8gcHJvYmxlbS4NCj4+ID4+ID4+ID4+ID4+DQo+PiA+PiA+PiA+PiA+PiBUaGlz IHRpbWUgdGhlIHBhdGNoIGFwcGxpZXMgZmluZSwgbm8gY29tcGlsZXIgd2FybmluZ3MuDQo+PiBI b3dldmVyLA0KPj4gPj4gPj4gPj4gPj4gcmVncmVzc2lvbiB0ZXN0IGRpZCBub3QgcGFzc2VkIGhl cmUgKG9uIFVidW50dSAyNCBMVFMgaWYgdGhpcw0KPj4gPj4gPj4gPj4gPj4gbWF0dGVycykuICBT byBJIGxvb2tlZCBpbnRvDQo+PiA+PiA+PiA+PiA+Pg0KPj4gc3JjL3Rlc3QvcmVncmVzc2lvbi90 ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdC5zaCBhDQo+PiA+PiA+PiA+ PiA+PiBsaXR0bGUgYml0IGFuZCBhcHBseSBhdHRhY2hlZCBwYXRjaCAodGVzdC5zaC5wYXRjaCku IEl0IG1vdmVkDQo+PiA+PiBmb3J3YXJkDQo+PiA+PiA+PiA+PiA+PiBwYXJ0aWFsbHkgYnV0IGZh aWxlZCBhdDoNCj4+ID4+ID4+ID4+ID4+DQo+PiA+PiA+PiA+PiA+PiBmYWlsOiBjb21tYW5kIGV4 ZWN1dGlvbiBmYWlsdXJlIG5vdCBkZXRlY3RlZA0KPj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ ID4+IFBsZWFzZSBmaW5kIGF0dGFjaGVkDQo+PiA+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4NCj4+ ID4+ID4+DQo+PiA+Pg0KPj4gc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxf cmVwbGljYXRpb25fZGVsYXkvdGVzdGRpci9wZ3Bvb2wubG9nDQo+PiA+PiA+PiA+PiA+PiBhbmQg c3JjL3Rlc3QvcmVncmVzc2lvbi9sb2cvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5Lg0K Pj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4+IEJlc3QgcmVnYXJkcywNCj4+ID4+ID4+ID4+ ID4+IC0tDQo+PiA+PiA+PiA+PiA+PiBUYXRzdW8gSXNoaWkNCj4+ID4+ID4+ID4+ID4+IFNSQSBP U1MgSy5LLg0KPj4gPj4gPj4gPj4gPj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAv aW5kZXhfZW4vDQo+PiA+PiA+PiA+PiA+PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5q cA0KPj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ ID4+ID4gLS0NCj4+ID4+ID4+ID4+ID4gTmFkYXYgU2hhdHoNCj4+ID4+ID4+ID4+ID4gVGFpbG9y IEJyYW5kcyB8IENUTw0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4NCj4+ID4+ID4+ID4NCj4+ID4+ ID4+ID4gLS0NCj4+ID4+ID4+ID4gTmFkYXYgU2hhdHoNCj4+ID4+ID4+ID4gVGFpbG9yIEJyYW5k cyB8IENUTw0KPj4gPj4gPj4NCj4+ID4+ID4NCj4+ID4+ID4NCj4+ID4+ID4gLS0NCj4+ID4+ID4g TmFkYXYgU2hhdHoNCj4+ID4+ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0KPj4gPj4NCj4+ID4NCj4+ ID4NCj4+ID4gLS0NCj4+ID4gTmFkYXYgU2hhdHoNCj4+ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0K Pj4NCj4gDQo+IA0KPiAtLSANCj4gTmFkYXYgU2hhdHoNCj4gVGFpbG9yIEJyYW5kcyB8IENUTw0K