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 1wgdmO-006J5b-2G for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 07:30:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgdmN-00FwrN-0o for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 07:30:11 +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.96) (envelope-from ) id 1wgdmM-00FwrF-30 for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 07:30:10 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wgdmK-000000020uL-3Wbo for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 07:30:10 +0000 Received: from coridan.postgresql.org ([2001:4800:3e1:1::213]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wgdmI-00BS4j-2y for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 07:30:06 +0000 Received: from localhost ([127.0.0.1] helo=coridan.postgresql.org) by coridan.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgdmI-00CBjz-0E for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 07:30:06 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: File locks for data directory lockfile in the context of Linux namespaces To: pgsql-hackers@lists.postgresql.org From: Ilmar Yunusov Cc: Dmitry Dolgov Date: Mon, 06 Jul 2026 07:30:04 +0000 User-Agent: pgcommitfest X-cfsender: tanswis42.gmail.com In-Reply-To: References: Message-ID: <178332300475.2568959.4097339122938147476.pgcf@coridan.postgresql.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk VGhlIGZvbGxvd2luZyByZXZpZXcgaGFzIGJlZW4gcG9zdGVkIHRocm91Z2ggdGhlIGNvbW1pdGZl c3QgYXBwbGljYXRpb246Cm1ha2UgaW5zdGFsbGNoZWNrLXdvcmxkOiAgbm90IHRlc3RlZApJbXBs ZW1lbnRzIGZlYXR1cmU6ICAgICAgIHRlc3RlZCwgcGFzc2VkClNwZWMgY29tcGxpYW50OiAgICAg ICAgICAgbm90IHRlc3RlZApEb2N1bWVudGF0aW9uOiAgICAgICAgICAgIG5vdCB0ZXN0ZWQKCkhp LA0KDQpJIGxvb2tlZCBhdCB2MiwgZm9jdXNpbmcgb24gYXBwbHkvYnVpbGQgc3RhdHVzIGFuZCB0 aGUgUElEIG5hbWVzcGFjZSBzY2VuYXJpbw0KZGVzY3JpYmVkIGluIHRoZSBjb3ZlciBsZXR0ZXIu DQoNCkkgdXNlZCB0aGUgdjIgcGF0Y2ggZnJvbSBEbWl0cnkncyAyMDI2LTAxLTE3IG1lc3NhZ2Us IG9uIG9yaWdpbi9tYXN0ZXIgYXQNCjRjYjJhOTg2M2Q4OWIzMjBmMzdlYjFiZDc2ODIyZjZmNjVl NTkzMTEuDQoNClRoZSBwYXRjaCBhcHBsaWVzIGNsZWFubHkgd2l0aCBnaXQgYW0sIGFuZCBnaXQg ZGlmZiAtLWNoZWNrIHJlcG9ydHMgbm8gaXNzdWVzLg0KDQpJIGJ1aWx0IGxvY2FsbHkgd2l0aDoN Cg0KLi9jb25maWd1cmUgLS1wcmVmaXg9IiRQV0QvcGctaW5zdGFsbCIgLS13aXRob3V0LXJlYWRs aW5lIC0td2l0aG91dC16bGliIC0td2l0aG91dC1pY3UNCm1ha2UgLXMgLWo4DQptYWtlIC1zIGlu c3RhbGwNCg0KVGhlIGJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIENvbmZpZ3VyZSBmb3Vu ZCBGX09GRF9TRVRMSyBvbiB0aGlzIG1hY09TDQpob3N0IHRvby4NCg0KSSBhbHNvIGJ1aWx0IGFu ZCB0ZXN0ZWQgb24gTGludXggd2l0aCB0aGUgc2FtZSBjb25maWd1cmUgb3B0aW9uczoNCg0KbWFr ZSAtcyAtajMNCm1ha2UgLXMgaW5zdGFsbA0KDQpUaGVyZSwgY29uZmlndXJlIGFsc28gZm91bmQg Rl9PRkRfU0VUTEssIGFuZDoNCg0KbWFrZSAtQyBzcmMvdGVzdC9yZWdyZXNzIGNoZWNrDQoNCnBh c3NlZDsgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgcGFzc2VkLg0KDQpGb3IgdGhlIG5hbWVzcGFjZSBi ZWhhdmlvciwgSSB1c2VkIHR3byBQb3N0Z3JlU1FMIGJ1aWxkcyBvbiB0aGUgc2FtZSBMaW51eCBo b3N0Og0KdW5wYXRjaGVkIG1hc3RlciBhbmQgdjIuIFRoZSB0ZXN0IHN0YXJ0cyB0aGUgZmlyc3Qg cG9zdG1hc3RlciBpbiBvbmUNCnBpZC9pcGMvbmV0IG5hbWVzcGFjZSwgdGhlbiB0cmllcyB0byBz dGFydCBhIHNlY29uZCBwb3N0bWFzdGVyIGluIGFub3RoZXINCnBpZC9pcGMvbmV0IG5hbWVzcGFj ZSBvbiB0aGUgc2FtZSBkYXRhIGRpcmVjdG9yeS4NCg0KT24gdW5wYXRjaGVkIG1hc3RlciwgYm90 aCBwb3N0bWFzdGVycyBzdGFydGVkLiBCb3RoIHNhdyB0aGVtc2VsdmVzIGFzIFBJRCAyIGluDQp0 aGVpciBvd24gUElEIG5hbWVzcGFjZSwgYW5kIHRoZSBzZWNvbmQgcG9zdG1hc3RlciByZXdyb3Rl IHBvc3RtYXN0ZXIucGlkLiBBZnRlcg0KdGhlIHNlY29uZCBzdGFydHVwLCB0aGUgbG9jayBmaWxl IGNvbnRhaW5lZCB0aGUgc2Vjb25kIHNvY2tldCBkaXJlY3Rvcnk6DQoNCjINCi4uLi9waWRucy1i YXNlL2RhdGENCjE3ODA2NjE5NTgNCjY1NDM3DQouLi4vcGlkbnMtYmFzZS9zb2NrMg0KDQpXaXRo IHYyLCB0aGUgZmlyc3QgcG9zdG1hc3RlciBzdGFydGVkLCBhbmQgdGhlIHNlY29uZCBzdGFydHVw IGZhaWxlZCB3aXRoOg0KDQpGQVRBTDogIGNhbm5vdCBsb2NrIHRoZSBsb2NrIGZpbGUgInBvc3Rt YXN0ZXIucGlkIg0KSElOVDogIEFub3RoZXIgc2VydmVyIGlzIHN0YXJ0aW5nLg0KDQpTbyB0aGUg cGF0Y2ggZml4ZXMgdGhlIGNvbmNyZXRlIExpbnV4IFBJRCBuYW1lc3BhY2UgZmFpbHVyZSBtb2Rl IEkgdGVzdGVkLg0KDQpPbmUgYmVoYXZpb3IgSSB3YW50ZWQgdG8gYXNrIGFib3V0OiB2MiBhbHNv IE9GRC1sb2NrcyBVbml4IHNvY2tldCBsb2NrIGZpbGVzLA0Kbm90IG9ubHkgdGhlIGRhdGEgZGly ZWN0b3J5IGxvY2tmaWxlLiBUaGF0IGZvbGxvd3MgZnJvbSBjYWxsaW5nDQpGbG9ja0RhdGFEaXJM b2NrRmlsZSgpIGZyb20gdGhlIGdlbmVyaWMgQ3JlYXRlTG9ja0ZpbGUoKSBwYXRoLCBhbmQgSSBh bHNvIHNhdw0KaXQgYXQgcnVudGltZS4gV2l0aCBvbmUgdjIgcG9zdG1hc3RlciB1c2luZyBhIFVu aXggc29ja2V0IGRpcmVjdG9yeSwgL3Byb2MvbG9ja3MNCnNob3dlZCBPRkQgd3JpdGUgbG9ja3Mg Zm9yIGJvdGggZmlsZXM6DQoNCi4uLi9kYXRhL3Bvc3RtYXN0ZXIucGlkDQouLi4vc29jay8ucy5Q R1NRTC42NTQzNi5sb2NrDQoNClRoZSBjb3JyZXNwb25kaW5nIHBvc3RtYXN0ZXIgZmRzIHdlcmU6 DQoNCi9wcm9jLzgzNTA1OC9mZC81IC0+IC4uLi9kYXRhL3Bvc3RtYXN0ZXIucGlkDQovcHJvYy84 MzUwNTgvZmQvOCAtPiAuLi4vc29jay8ucy5QR1NRTC42NTQzNi5sb2NrDQoNCkkgaGFkIGV4cGVj dGVkIHRoZSBuZXcgbG9jayB0byBhcHBseSBvbmx5IHRvIHBvc3RtYXN0ZXIucGlkLCBiZWNhdXNl IHRoZSBwYXRjaA0KdGl0bGUsIGNvbW1pdCBtZXNzYWdlLCBoZWxwZXIgbmFtZSwgYW5kIGNvbW1l bnRzIGFsbCBkZXNjcmliZSB0aGUgZGF0YSBkaXJlY3RvcnkNCmxvY2tmaWxlLiBUaGUgc29ja2V0 IGxvY2tmaWxlIGJlaGF2aW9yIHRoZXJlZm9yZSBsb29rZWQgbGlrZSBlaXRoZXIgYW4NCmludGVu dGlvbmFsIHNjb3BlIGV4cGFuc2lvbiB0aGF0IHNob3VsZCBiZSBuYW1lZCBhcyBzdWNoLCBvciBh biBhY2NpZGVudGFsIHNpZGUNCmVmZmVjdCBvZiB1c2luZyB0aGUgZ2VuZXJpYyBDcmVhdGVMb2Nr RmlsZSgpIHBhdGguDQoNCklzIGxvY2tpbmcgdGhlIHNvY2tldCBsb2NrIGZpbGUgaW50ZW50aW9u YWwgaGVyZT8gSWYgc28sIG1heWJlIHRoZSBoZWxwZXIgbmFtZSwNCmNvbW1lbnQsIGFuZCBmZCB0 cmFja2luZyBzaG91bGQgcmVmbGVjdCB0aGF0IGJyb2FkZXIgc2NvcGUuIElmIG5vdCwgcGVyaGFw cyB0aGUNCm5ldyBsb2NrIHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgZm9yIHRoZSBpc0RETG9jayBj YXNlOyBvdGhlcndpc2UgdjIgY2hhbmdlcw0Kc29ja2V0IGxvY2tmaWxlIHNlbWFudGljcyB0b28s IG5vdCBvbmx5IHBvc3RtYXN0ZXIucGlkLg0KDQpXaGlsZSByZWFkaW5nIHRoYXQgY29kZSwgSSBh bHNvIG5vdGljZWQgYSBzbWFsbCBlcnJvci1wYXRoIGlzc3VlOiBEYXRhRGlyTG9ja0ZEDQpzdGFy dHMgYXMgMCwgYnV0IGlmIGZjbnRsKEZfT0ZEX1NFVExLKSBmYWlscyB3aXRoIGEgbm9uLUVBR0FJ TiBlcnJvciB0aGUgY29kZQ0Kb25seSBlbWl0cyBhIHdhcm5pbmcgYW5kIGRvZXMgbm90IGFzc2ln biBhIGR1cGxpY2F0ZSBmZC4gVW5saW5rTG9ja0ZpbGVzKCkNCnRoZW4gY2xvc2VzIERhdGFEaXJM b2NrRkQgdW5jb25kaXRpb25hbGx5LiBJbml0aWFsaXppbmcgaXQgdG8gLTEsIGNsb3NpbmcgaXQN CmNvbmRpdGlvbmFsbHksIGFuZCBjaGVja2luZyBkdXAoZmQpIHdvdWxkIG1ha2UgdGhhdCBwYXRo IG1vcmUgZXhwbGljaXQuDQoNCkFzaWRlIGZyb20gdGhvc2UgcXVlc3Rpb25zLCB0aGlzIGxvb2tz IGxpa2UgYSB1c2VmdWwgYmVzdC1lZmZvcnQgaW1wcm92ZW1lbnQgdG8NCm1lLCBhbmQgdGhlIG5h bWVzcGFjZSBmYWlsdXJlIG1vZGUgYXBwZWFycyB0byBiZSBhZGRyZXNzZWQgYnkgdGhlIE9GRCBs b2NrIGluDQp0aGUgTGludXggdGVzdCBhYm92ZS4NCg0KSSBkaWQgbm90IHRlc3QgTkZTIGJlaGF2 aW9yLCBvbGRlciBzdGFibGUgYnJhbmNoZXMsIFdpbmRvd3MgYmVoYXZpb3IsIG9yDQppbnN0YWxs Y2hlY2std29ybGQuIFVucHJpdmlsZWdlZCBuYW1lc3BhY2UgY3JlYXRpb24gd2FzIG5vdCBwZXJt aXR0ZWQgb24gdGhlDQpMaW51eCBob3N0IEkgdXNlZCwgc28gdGhlIG5hbWVzcGFjZSByZXBybyB3 YXMgcnVuIHdpdGggc3Vkby4NCg0KUmVnYXJkcywNCklsbWFyIFl1bnVzb3YNCg0KIyMgdjMgZm9s bG93LXVwIGRyYWZ0DQoNClN1Z2dlc3RlZCBDb21taXRGZXN0IGZvcm06DQoNCi0gSW4gcmVzcG9u c2UgdG86IERtaXRyeSdzIDIwMjYtMDYtMjMgdjMgbWVzc2FnZQ0KLSBtYWtlIGluc3RhbGxjaGVj ay13b3JsZDogbm90IHRlc3RlZA0KLSBJbXBsZW1lbnRzIGZlYXR1cmU6IHRlc3RlZCwgcGFzc2Vk DQotIFNwZWMgY29tcGxpYW50OiBub3QgdGVzdGVkDQotIERvY3VtZW50YXRpb246IG5vdCB0ZXN0 ZWQNCi0gTmV3IHN0YXR1czogV2FpdGluZyBvbiBBdXRob3INCi0gQXR0YWNobWVudHM6IG5vbmUN Cg0KU3ViamVjdDoNCg0KUmU6IEZpbGUgbG9ja3MgZm9yIGRhdGEgZGlyZWN0b3J5IGxvY2tmaWxl IGluIHRoZSBjb250ZXh0IG9mIExpbnV4IG5hbWVzcGFjZXMNCg0KQm9keToNCg0KSGksDQoNCkkg bG9va2VkIGF0IHYzLCBmb2N1c2luZyBvbiB3aGV0aGVyIGl0IGFkZHJlc3NlcyB0aGUgdHdvIHBv aW50cyBmcm9tIG15DQpwcmV2aW91cyByZXZpZXcsIHRoZSBMaW51eCBydW50aW1lIGJlaGF2aW9y LCBhbmQgdGhlIGN1cnJlbnQgQ0ZCb3QgZmFpbHVyZXMuDQoNCkkgdXNlZCB0aGUgdjMgcGF0Y2gg ZnJvbSBEbWl0cnkncyAyMDI2LTA2LTIzIG1lc3NhZ2UsIG9uIG9yaWdpbi9tYXN0ZXIgYXQNCjlk MTE4OGYyOTg2NWU2NmM0MTk2NTc4NTAxZTc0ZThjODE1ZmJhOGQuDQoNClRoZSBwYXRjaCBhcHBs aWVzIGNsZWFubHkgd2l0aCBnaXQgYW0sIGFuZCBnaXQgZGlmZiAtLWNoZWNrIHJlcG9ydHMgbm8g aXNzdWVzLg0KDQpPbiBVYnVudHUgMjQuMDQuNCwgY29uZmlndXJlIGZvdW5kIEZfT0ZEX1NFVExL LCBhbmQgdGhpcyBwYXNzZWQ6DQoNCi4vY29uZmlndXJlIC0tcHJlZml4PS9ob21lL21hc3Rlci9w Z2NmLTYzMzUtdjMtMjAyNjA3MDYvcGctaW5zdGFsbCAtLXdpdGhvdXQtcmVhZGxpbmUgLS13aXRo b3V0LXpsaWIgLS13aXRob3V0LWljdQ0KbWFrZSAtcyAtajMNCm1ha2UgLXMgaW5zdGFsbA0KDQpt YWtlIC1DIHNyYy90ZXN0L3JlZ3Jlc3MgY2hlY2sNCg0KQWxsIDI0NSByZWdyZXNzaW9uIHRlc3Rz IHBhc3NlZC4NCg0KSSByZS1yYW4gdGhlIFBJRCBuYW1lc3BhY2UgcmVwcm9kdWNlciBmcm9tIHRo ZSBlYXJsaWVyIHJldmlldyBhZ2FpbnN0IHYzLiBUaGUNCmZpcnN0IHBvc3RtYXN0ZXIgc3RhcnRl ZCBpbiBvbmUgcGlkL2lwYy9uZXQgbmFtZXNwYWNlIG9uIHRoZSB0ZXN0IGRhdGENCmRpcmVjdG9y eS4gQSBzZWNvbmQgcG9zdG1hc3RlciBpbiBhbm90aGVyIHBpZC9pcGMvbmV0IG5hbWVzcGFjZSBv biB0aGUgc2FtZQ0KZGF0YSBkaXJlY3RvcnkgZmFpbGVkIHdpdGg6DQoNCkZBVEFMOiAgY2Fubm90 IGxvY2sgdGhlIGxvY2sgZmlsZSAicG9zdG1hc3Rlci5waWQiDQpISU5UOiAgQW5vdGhlciBzZXJ2 ZXIgaXMgc3RhcnRpbmcuDQoNClNvIHRoZSBjb25jcmV0ZSBMaW51eCBQSUQgbmFtZXNwYWNlIGZh aWx1cmUgbW9kZSBJIHRlc3RlZCBzdGlsbCBsb29rcyBhZGRyZXNzZWQNCmluIHYzLg0KDQpJIGFs c28gY2hlY2tlZCB0aGUgbG9ja2ZpbGUgc2NvcGUgYXQgcnVudGltZS4gV2l0aCBvbmUgdjMgcG9z dG1hc3RlciB1c2luZyBhDQpVbml4IHNvY2tldCBkaXJlY3RvcnksIC9wcm9jLzxwaWQ+L2ZkIHNo b3dlZCBmZHMgZm9yIGJvdGggZmlsZXM6DQoNCi4uLi9kYXRhL3Bvc3RtYXN0ZXIucGlkDQouLi4v c29jay8ucy5QR1NRTC42NTQ0Mi5sb2NrDQoNCi9wcm9jL2xvY2tzIGFsc28gc2hvd2VkIE9GRExD SyBBRFZJU09SWSBXUklURSBlbnRyaWVzIGZvciBib3RoIGZpbGUgaW5vZGVzLg0KVGhhdCBtYXRj aGVzIHRoZSB2MyBzY29wZSB3aGVyZSBzb2NrZXQgbG9ja2ZpbGVzIGFyZSBpbnRlbnRpb25hbGx5 IGxvY2tlZCB0b28uDQoNClRoZSBvdGhlciBxdWVzdGlvbiBmcm9tIG15IHByZXZpb3VzIHJldmll dyBhbHNvIGxvb2tzIGFkZHJlc3NlZDogdGhlIHNpbmdsZQ0Kc3RhdGljIERhdGFEaXJMb2NrRkQg aXNzdWUgaXMgcmVwbGFjZWQgYnkgcGVyLWxvY2tmaWxlIGZkIHRyYWNraW5nIGluIHRoZQ0KbG9j a19maWxlcyBsaXN0LCB3aXRoIGNvbmRpdGlvbmFsIGNsb3NlIGluIFVubGlua0xvY2tGaWxlcygp Lg0KDQpUaGVyZSBpcyBzdGlsbCBhIGJ1aWxkIGJsb2NrZXIsIG1hdGNoaW5nIHRoZSBjdXJyZW50 IENGQm90IGZhaWx1cmVzLiB2MyBhZGRzIGENCnR5cGVkZWYgbmFtZWQgTG9ja0ZpbGUgaW4gc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jLCBidXQgdGhhdCBuYW1lDQpjb25mbGljdHMg d2l0aCB0aGUgV2luZG93cyBMb2NrRmlsZSgpIGZ1bmN0aW9uLiBUaGUgQ29tcGlsZXJXYXJuaW5n cyBsb2cNCnJlcG9ydHMsIGZvciBleGFtcGxlOg0KDQptaXNjaW5pdC5jOjc5OjM6IGVycm9yOiAn TG9ja0ZpbGUnIHJlZGVjbGFyZWQgYXMgZGlmZmVyZW50IGtpbmQgb2Ygc3ltYm9sDQoNCmFuZCB0 aGUgV2luZG93cyBsb2dzIHNob3cgdGhlIHNhbWUgaXNzdWU6DQoNCm1pc2Npbml0LmMoNzkpOiBl cnJvciBDMjM2NTogJ0xvY2tGaWxlJzogcmVkZWZpbml0aW9uOyBwcmV2aW91cyBkZWZpbml0aW9u IHdhcyAnZnVuY3Rpb24nDQoNClRoZXJlIGlzIGFsc28gYSBtaXNzaW5nIHNlbWljb2xvbiBpbiB0 aGUgbm9uLUZfT0ZEX1NFVExLIGJyYW5jaDoNCg0KbWlzY2luaXQuYzoxMTY5OjE4OiBlcnJvcjog ZXhwZWN0ZWQgJzsnIGJlZm9yZSAnfScgdG9rZW4NCg0KQXMgYSBxdWljayBsb2NhbCBjb21waWxl IGNoZWNrLCBpbiB0aGUgdGVtcG9yYXJ5IHdvcmt0cmVlIG9ubHksIHJlbmFtaW5nIHRoZQ0KbmV3 IHR5cGVkZWYgdG8gTG9ja0ZpbGVEYXRhIGFuZCBhZGRpbmcgdGhlIG1pc3Npbmcgc2VtaWNvbG9u IG1hZGUgdGhlIG5vcm1hbA0KbWFjT1MgYnVpbGQgcGFzcy4gV2l0aCBIQVZFX0RFQ0xfRl9PRkRf U0VUTEsgdGVtcG9yYXJpbHkgZm9yY2VkIHRvIDAgaW4gdGhlDQpnZW5lcmF0ZWQgcGdfY29uZmln LmgsIHRoZSBhZmZlY3RlZCBtaXNjaW5pdC5vIHRhcmdldCBhbHNvIGNvbXBpbGVkIGFmdGVyIHRo b3NlDQp0d28gbWVjaGFuaWNhbCBjaGFuZ2VzLiBJIGRpZCBub3QgcnVuIGEgbG9jYWwgV2luZG93 cyBidWlsZC4NCg0KSSBkaWQgbm90IHJ1biBpbnN0YWxsY2hlY2std29ybGQsIGFuZCBkaWQgbm90 IHRlc3QgTkZTIGJlaGF2aW9yIG9yDQpzdGFibGUtYnJhbmNoIGJhY2twYXRjaCBhcHBsaWNhYmls aXR5Lg0KDQpSZWdhcmRzLA0KSWxtYXIgWXVudXNvdgoKVGhlIG5ldyBzdGF0dXMgb2YgdGhpcyBw YXRjaCBpczogV2FpdGluZyBvbiBBdXRob3IK