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 1vsznz-00DeEH-2e for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Feb 2026 08:54:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vszny-002r5h-1q for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Feb 2026 08:54:38 +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 1vszny-002r5Z-0f for pgsql-hackers@lists.postgresql.org; Thu, 19 Feb 2026 08:54:38 +0000 Received: from fhigh-b7-smtp.messagingengine.com ([202.12.124.158]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vsznu-0000000077S-3lV2 for pgsql-hackers@postgresql.org; Thu, 19 Feb 2026 08:54:37 +0000 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id 8C26B7A013C for ; Thu, 19 Feb 2026 03:54:32 -0500 (EST) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Thu, 19 Feb 2026 03:54:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1771491272; x=1771577672; bh=pdxV6FfiG+pqUYdfxIjym/iHHjDJdniJ XzLLC+pPr8A=; b=H5dPHqWWZnUvOkn2Zozc9xBGM43KUP/jwFB2VECeW0UOKBzt EzPY2ed//VYIFlI0hII83OiKDctzJ0KbAbk12E0QNemzwI5BCD81S6Pqt/heDehZ L2uPt63htVfNL9xuy7D2qVuyYJiKlmf40Q7LsKwZhEeRO1xOh91QZUUueO/BApxR /lKz5ydJ6XpTgoK5jojDaypvw2e+FUHfjHNH3oboOyZRChbzU7JtLmtik8XMF9IL spUPZDoaGjOIy1ER0kO9qVAtOm5N31Spe6lrrmLL9RdcHrPI7HFMG+BBHUE3L925 GPSYf/2x4UaRNJY32LRQR4IOAQYXFlX5U+4R4w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1771491272; x= 1771577672; bh=pdxV6FfiG+pqUYdfxIjym/iHHjDJdniJXzLLC+pPr8A=; b=a 8dqqM2gx733rt5DjzRhC6xR6ybq+Zy8Uq0LsO6/U4RvinkZkej5YLOJ7dnazQM3z RiFMO/qZJOHEUGwJZTkFbz7Awef5aS3VMuoiygSyTaIfRbm/dojh/g2oapVDxMPY GIrmzUZaIbz+aaUyi2I0/1qBXhN+bRBANeBJ64bFTf6pxVLqOzglqw6bskM4FzcQ svEPicNGrLUFMhx1qBImHltg6IijFRLfBDqX0A8TrzXBWbZNFDY9cu6Uki23Z1lR Oq2h+ErYYqyPlo2T+rTswxe78isBB/pN1YbHTyKG9VfYe0cqoy97InCMctLp9kYM 7K32dVA0Y4TPtp1S4U+WQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvvdehtdelucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertddvje enucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghishgv nhhtrhgruhhtrdhorhhgqeenucggtffrrghtthgvrhhnpefhheegfeeigfekudevfefggf egleefvdejkeefteevkefghfeivdeuvddvgfegtdenucffohhmrghinhepphhoshhtghhr vghsqhhlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepphgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgpdhnsggprhgtphhtthho pedupdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrh hssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 19 Feb 2026 03:54:31 -0500 (EST) Content-Type: multipart/mixed; boundary="------------RSW727IfqVM2P4DAt0zEhxT2" Message-ID: Date: Thu, 19 Feb 2026 09:54:30 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Peter Eisentraut Subject: Use standard C23 and C++ attributes if available To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------RSW727IfqVM2P4DAt0zEhxT2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is related to the C++ compatibility work in [0]. This patch proposes to use the standard C23 and C++ attributes [[nodiscard]], [[noreturn]], and [[maybe_unused]], if available. The immediate practical impact is that for pg_noreturn, we can drop the GCC-specific and MSVC-specific fallbacks, because the C11 and the C++ implementation will now cover all required cases. For the other two attributes, this makes them available in not-GCC-compatible compilers that support C23 as well as in C++. This set is theoretical at the moment, but it might become more practical if either MSVC gets some C23 support or we improve the support for C++ extensions with MSVC (see also [0]). [0]: https://www.postgresql.org/message-id/df78eaac-c2eb-4344-852e-0965c75c5ad6%40eisentraut.org --------------RSW727IfqVM2P4DAt0zEhxT2 Content-Type: text/plain; charset=UTF-8; name="0001-Use-standard-C23-and-C-attributes-if-available.patch" Content-Disposition: attachment; filename*0="0001-Use-standard-C23-and-C-attributes-if-available.patch" Content-Transfer-Encoding: base64 RnJvbSA2NjJlNzQwNjBhY2I3MTBlZGYyYjU2MDg0NTE5ZjFiOTUxODM1Y2FiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAxOSBGZWIgMjAyNiAwOTo0MjoxOSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIFVzZSBzdGFuZGFyZCBDMjMgYW5kIEMrKyBhdHRyaWJ1dGVzIGlmIGF2YWls YWJsZQoKVXNlIHRoZSBzdGFuZGFyZCBDMjMgYW5kIEMrKyBhdHRyaWJ1dGVzIFtbbm9kaXNj YXJkXV0sIFtbbm9yZXR1cm5dXSwKYW5kIFtbbWF5YmVfdW51c2VkXV0sIGlmIGF2YWlsYWJs ZS4KClRoaXMgbWFrZXMgcGdfbm9kaXNjYXJkIGFuZCBwZ19hdHRyaWJ1dGVfdW51c2VkKCkg YXZhaWxhYmxlIGluCm5vdC1HQ0MtY29tcGF0aWJsZSBjb21waWxlcnMgdGhhdCBzdXBwb3J0 IEMyMyBhcyB3ZWxsIGFzIGluCkMrKyAoYWx0aG91Z2ggdGhpcyBzZXQgaXMgdGhlb3JldGlj YWwgYXQgdGhpcyBwb2ludCkuCgpGb3IgcGdfbm9yZXR1cm4sIHdlIGNhbiBub3cgZHJvcCB0 aGUgR0NDLXNwZWNpZmljIGFuZCBNU1ZDLXNwZWNpZmljCmZhbGxiYWNrcywgYmVjYXVzZSB0 aGUgQzExIGFuZCB0aGUgQysrIGltcGxlbWVudGF0aW9uIHdpbGwgbm93IGNvdmVyCmFsbCBy ZXF1aXJlZCBjYXNlcy4KCk5vdGUsIGluIGEgZmV3IHBsYWNlcywgd2UgbmVlZCB0byBjaGFu Z2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBhdHRyaWJ1dGUKYmVjYXVzZSBpdCdzIG5vdCB2YWxp ZCBpbiB0aGF0IHBsYWNlIGluIEMyMy4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9weHI1YjN6N2pta3BlbnNzcmE1enJveGk3cXp6 cDZlc3d1Z2dva3c2NGF4bWRpeHBua0B6Ynd4dXE3Z2JiY3cKLS0tCiBzcmMvYmFja2VuZC91 dGlscy9tbWdyL3NsYWIuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2MuaCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL2xpYi9yYWRpeHRyZWUuaCAgICAgICAgICAgICAgfCAgMiArLQogc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyB8ICAyICstCiA0IGZpbGVz IGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9zbGFiLmMKaW5kZXggYmQwMGJhYjE4ZmUuLjM0YTk0MTBlNzZhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9tbWdyL3NsYWIuYwpAQCAtNjI4LDggKzYyOCw4IEBAIFNsYWJBbGxvY0Zyb21OZXdCbG9j ayhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSwgaW50IGZsYWdzKQogICoJCXRv IHNldHVwIHRoZSBzdGFjayBmcmFtZSBpbiBTbGFiQWxsb2MuICBGb3IgcGVyZm9ybWFuY2Ug cmVhc29ucywgd2UKICAqCQl3YW50IHRvIGF2b2lkIHRoYXQuCiAgKi8KLXBnX25vaW5saW5l CiBwZ19ub3JldHVybgorcGdfbm9pbmxpbmUKIHN0YXRpYyB2b2lkCiBTbGFiQWxsb2NJbnZh bGlkU2l6ZShNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIHsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCBhMjQ5Njc0ZjAy Ni4uOGM2MTgyYTJjOGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMv aW5jbHVkZS9jLmgKQEAgLTExMSw2ICsxMTEsOCBAQAogLyoKICAqIEF0dHJpYnV0ZSBtYWNy b3MKICAqCisgKiBDMjM6IGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2MvbGFuZ3Vh Z2UvYXR0cmlidXRlcy5odG1sCisgKiBDKys6IGh0dHBzOi8vZW4uY3BwcmVmZXJlbmNlLmNv bS93L2NwcC9sYW5ndWFnZS9hdHRyaWJ1dGVzLmh0bWwKICAqIEdDQzogaHR0cHM6Ly9nY2Mu Z251Lm9yZy9vbmxpbmVkb2NzL2djYy9GdW5jdGlvbi1BdHRyaWJ1dGVzLmh0bWwKICAqIEdD QzogaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9UeXBlLUF0dHJpYnV0ZXMu aHRtbAogICogQ2xhbmc6IGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9BdHRyaWJ1dGVS ZWZlcmVuY2UuaHRtbApAQCAtMTIwLDEzICsxMjIsMjAgQEAKICAqIEZvciBjb21waWxlcnMg d2hpY2ggZG9uJ3Qgc3VwcG9ydCBfX2hhc19hdHRyaWJ1dGUsIHdlIGp1c3QgZGVmaW5lCiAg KiBfX2hhc19hdHRyaWJ1dGUoeCkgdG8gMCBzbyB0aGF0IHdlIGNhbiBkZWZpbmUgbWFjcm9z IGZvciB2YXJpb3VzCiAgKiBfX2F0dHJpYnV0ZV9fcyBtb3JlIGVhc2lseSBiZWxvdy4KKyAq CisgKiBOb3RlIHRoYXQgX19oYXNfYXR0cmlidXRlIG9ubHkgdGVsbHMgYWJvdXQgR0NDLXN0 eWxlIGF0dHJpYnV0ZXMsIG5vdCBDMjMgb3IKKyAqIEMrKyBhdHRyaWJ1dGVzLgogICovCiAj aWZuZGVmIF9faGFzX2F0dHJpYnV0ZQogI2RlZmluZSBfX2hhc19hdHRyaWJ1dGUoYXR0cmli dXRlKSAwCiAjZW5kaWYKIAotLyogb25seSBHQ0Mgc3VwcG9ydHMgdGhlIHVudXNlZCBhdHRy aWJ1dGUgKi8KLSNpZmRlZiBfX0dOVUNfXworLyoKKyAqIHBnX2F0dHJpYnV0ZV91bnVzZWQo KSBzdXBwcmVzc2VzIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHVudXNlZCBlbnRpdGllcy4KKyAq LworI2lmIChkZWZpbmVkKF9fU1REQ19WRVJTSU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18g Pj0gMjAyMzExTCkgfHwgKGRlZmluZWQoX19jcGx1c3BsdXMpICYmIF9fY3BsdXNwbHVzID49 IDIwMTcwM0wpCisjZGVmaW5lIHBnX2F0dHJpYnV0ZV91bnVzZWQoKSBbW21heWJlX3VudXNl ZF1dCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQogI2RlZmluZSBwZ19hdHRyaWJ1dGVfdW51 c2VkKCkgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKICNlbHNlCiAjZGVmaW5lIHBnX2F0dHJp YnV0ZV91bnVzZWQoKQpAQCAtMTM0LDExICsxNDMsMTEgQEAKIAogLyoKICAqIHBnX25vZGlz Y2FyZCBtZWFucyB0aGUgY29tcGlsZXIgc2hvdWxkIHdhcm4gaWYgdGhlIHJlc3VsdCBvZiBh IGZ1bmN0aW9uCi0gKiBjYWxsIGlzIGlnbm9yZWQuICBUaGUgbmFtZSAibm9kaXNjYXJkIiBp cyBjaG9zZW4gaW4gYWxpZ25tZW50IHdpdGggdGhlIEMyMwotICogc3RhbmRhcmQgYXR0cmli dXRlIHdpdGggdGhlIHNhbWUgbmFtZS4gIEZvciBtYXhpbXVtIGZvcndhcmQgY29tcGF0aWJp bGl0eSwKLSAqIHBsYWNlIGl0IGJlZm9yZSB0aGUgZGVjbGFyYXRpb24uCisgKiBjYWxsIGlz IGlnbm9yZWQuCiAgKi8KLSNpZmRlZiBfX0dOVUNfXworI2lmIChkZWZpbmVkKF9fU1REQ19W RVJTSU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAyMzExTCkgfHwgKGRlZmluZWQo X19jcGx1c3BsdXMpICYmIF9fY3BsdXNwbHVzID49IDIwMTcwM0wpCisjZGVmaW5lIHBnX25v ZGlzY2FyZCBbW25vZGlzY2FyZF1dCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQogI2RlZmlu ZSBwZ19ub2Rpc2NhcmQgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkKICNl bHNlCiAjZGVmaW5lIHBnX25vZGlzY2FyZApAQCAtMTUwLDE4ICsxNTksMTUgQEAKICAqIHVz ZXMgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSBpbiBoZWFkZXJzLCB3aGljaCB3b3VsZCBn ZXQgY29uZnVzZWQgaWYKICAqICJub3JldHVybiIgaXMgZGVmaW5lZCB0byAiX05vcmV0dXJu IiwgYXMgaXMgZG9uZSBieSA8c3Rkbm9yZXR1cm4uaD4uCiAgKgotICogSW4gYSBkZWNsYXJh dGlvbiwgZnVuY3Rpb24gc3BlY2lmaWVycyBnbyBiZWZvcmUgdGhlIGZ1bmN0aW9uIG5hbWUu ICBUaGUKLSAqIGNvbW1vbiBzdHlsZSBpcyB0byBwdXQgdGhlbSBiZWZvcmUgdGhlIHJldHVy biB0eXBlLiAgKFRoZSBNU1ZDIGZhbGxiYWNrIGhhcwotICogdGhlIHNhbWUgcmVxdWlyZW1l bnQuICBUaGUgR0NDIGZhbGxiYWNrIGlzIG1vcmUgZmxleGlibGUuKQorICogQzIzIGF0dHJp YnV0ZXMgbXVzdCBiZSBwbGFjZWQgYXQgdGhlIHN0YXJ0IG9mIGEgZGVjbGFyYXRpb24gb3Ig c3RhdGVtZW50LgorICogQzExIGZ1bmN0aW9uIHNwZWNpZmllcnMgZ28gYmVmb3JlIHRoZSBm dW5jdGlvbiBuYW1lIGluIGEgZGVjbGFyYXRpb24sIGJ1dAorICogaXQgaXMgY29tbW9uIHN0 eWxlIChhbmQgcmVxdWlyZWQgZm9yIEMyMyBjb21wYXRpYmlsaXR5KSB0byBwdXQgdGhlbSBi ZWZvcmUKKyAqIHRoZSByZXR1cm4gdHlwZS4KICAqLwotI2lmIChkZWZpbmVkKF9fU1REQ19W RVJTSU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTCkgJiYgIWRlZmluZWQo X19jcGx1c3BsdXMpCi0jZGVmaW5lIHBnX25vcmV0dXJuIF9Ob3JldHVybgotI2VsaWYgZGVm aW5lZChfX0dOVUNfXykKLSNkZWZpbmUgcGdfbm9yZXR1cm4gX19hdHRyaWJ1dGVfXygobm9y ZXR1cm4pKQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgcGdfbm9yZXR1cm4g X19kZWNsc3BlYyhub3JldHVybikKKyNpZiAoZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAm JiBfX1NURENfVkVSU0lPTl9fID49IDIwMjMxMUwpIHx8IGRlZmluZWQoX19jcGx1c3BsdXMp CisjZGVmaW5lIHBnX25vcmV0dXJuIFtbbm9yZXR1cm5dXQogI2Vsc2UKLSNkZWZpbmUgcGdf bm9yZXR1cm4KKyNkZWZpbmUgcGdfbm9yZXR1cm4gX05vcmV0dXJuCiAjZW5kaWYKIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9yYWRpeHRyZWUuaCBiL3NyYy9pbmNsdWRl L2xpYi9yYWRpeHRyZWUuaAppbmRleCBiMjIzY2UxMGEyZC4uMTc5Zjc4MTM3ZmEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYi9yYWRpeHRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9s aWIvcmFkaXh0cmVlLmgKQEAgLTI3NzcsOCArMjc3Nyw4IEBAIFJUX1NUQVRTKFJUX1JBRElY X1RSRUUgKiB0cmVlKQogLyoKICAqIFByaW50IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24g YWJvdXQgdGhlIGdpdmVuIG5vZGUuCiAgKi8KLXN0YXRpYyB2b2lkCiBwZ19hdHRyaWJ1dGVf dW51c2VkKCkKK3N0YXRpYyB2b2lkCiBSVF9EVU1QX05PREUoUlRfTk9ERSAqIG5vZGUpCiB7 CiAjaWZkZWYgUlRfU0hNRU0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2Vy X3NwaS93b3JrZXJfc3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2Vy X3NwaS5jCmluZGV4IGQxZTRhMmJkOTUyLi5mOWJiMTZhMDE3ZSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCkBAIC00NCw3ICs0NCw3IEBAIFBHX01P RFVMRV9NQUdJQzsKIAogUEdfRlVOQ1RJT05fSU5GT19WMSh3b3JrZXJfc3BpX2xhdW5jaCk7 CiAKLVBHRExMRVhQT1JUIHBnX25vcmV0dXJuIHZvaWQgd29ya2VyX3NwaV9tYWluKERhdHVt IG1haW5fYXJnKTsKK3BnX25vcmV0dXJuIFBHRExMRVhQT1JUIHZvaWQgd29ya2VyX3NwaV9t YWluKERhdHVtIG1haW5fYXJnKTsKIAogLyogR1VDIHZhcmlhYmxlcyAqLwogc3RhdGljIGlu dAl3b3JrZXJfc3BpX25hcHRpbWUgPSAxMDsKLS0gCjIuNTMuMAoK --------------RSW727IfqVM2P4DAt0zEhxT2--