Announcing DateTime::Lite v0.1.0, a lightweight, drop-in replacement for DateTime
[email protected] (Jacques Deguest) Sat, 11 Apr 2026 10:21:14 +0900
| Newsgroups | perl.datetime |
|---|---|
| Organization | DEGUEST Pte. Ltd. |
| Message-ID | <[email protected]> |
--------------duOsLiqdhNMNmoh6KiCz8wq4 Content-Type: multipart/mixed; boundary="------------efzHTU6DrySEmeGRxEW7yUIn"; protected-headers="v1" From: Jacques Deguest <[email protected]> To: [email protected] Message-ID: <[email protected]> Subject: Announcing DateTime::Lite v0.1.0, a lightweight, drop-in replacement for DateTime --------------efzHTU6DrySEmeGRxEW7yUIn Content-Type: multipart/mixed; boundary="------------2AT04XAQ3vwK8LS6y9h9EaZw" --------------2AT04XAQ3vwK8LS6y9h9EaZw Content-Type: multipart/alternative; boundary="------------PvORbfP1eqs1NJ32avaFdN58" --------------PvORbfP1eqs1NJ32avaFdN58 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGVsbG8gYWxsLA0KDQpJIHdhbnRlZCB0byBzaGFyZSB3aXRoIHRoaXMgbGlzdCB0aGUgcmVs ZWFzZSBvZiBEYXRlVGltZTo6TGl0ZSB2MC4xLjAgb24gDQpDUEFOOiBodHRwczovL21ldGFj cGFuLm9yZy9wb2QvRGF0ZVRpbWU6OkxpdGUNCg0KRmlyc3QgYW5kIGZvcmVtb3N0OiBEYXRl VGltZSBpcyBhIHJlbWFya2FibGUgcGllY2Ugb2Ygd29yaywgYW5kIA0KRGF0ZVRpbWU6Okxp dGUgd291bGQgbm90IGV4aXN0IHdpdGhvdXQgaXQuIEl0IGlzIGRlcml2ZWQgZGlyZWN0bHkg ZnJvbSANCkRhdGVUaW1lJ3MgY29kZWJhc2UsIGl0cyBBUEkgaXMgaW50ZW50aW9uYWxseSBj b21wYXRpYmxlLCBhbmQgdGhlIGRlYnQgDQp0byBEYXZlIFJvbHNreSBhbmQgdGhlIG1hbnkg Y29udHJpYnV0b3JzIHRvIERhdGVUaW1lIGFuZCANCkRhdGVUaW1lOjpUaW1lWm9uZSBpcyBl eHBsaWNpdGx5IGFja25vd2xlZGdlZCBpbiB0aGUgZGlzdHJpYnV0aW9uLg0KDQpUaGUgbW90 aXZhdGlvbiB3YXMgcHJhY3RpY2FsOiBpbiBzaG9ydC1saXZlZCBwcm9jZXNzZXMgKHNjcmlw dHMsIENHSSANCmhhbmRsZXJzLCBtaWNyb3NlcnZpY2VzKSwgRGF0ZVRpbWUncyBkZXBlbmRl bmN5IGZvb3RwcmludCBhbmQgc3RhcnR1cCANCmNvc3QgYXJlIGEgcmVhbCBjb25zaWRlcmF0 aW9uLiBEYXRlVGltZTo6TGl0ZSBhdHRlbXB0cyB0byBhZGRyZXNzIHRob3NlIA0KY2FzZXMg d2l0aG91dCBzYWNyaWZpY2luZyBjb3JyZWN0bmVzcyBvciBjb21wYXRpYmlsaXR5Lg0KDQpU aGUgbWFpbiBkaWZmZXJlbmNlczoNCg0KLSA2NyBtb2R1bGVzIGxvYWRlZCB2cyAxMzcgZm9y IERhdGVUaW1lIChtZWFzdXJlZCBvbiBhYXJjaDY0LCBQZXJsIDUuMzYuMSkNCi0gTG93ZXIg bWVtb3J5IGZvb3RwcmludCBpbiBzaG9ydC1saXZlZCBwcm9jZXNzZXM6IGVhY2ggDQpEYXRl VGltZTo6VGltZVpvbmUgem9uZSBvYmplY3QsIG9uY2UgY29uc3RydWN0ZWQsIHN0YXlzIGlu IG1lbW9yeSBmb3IgDQp0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MgdmlhIENsYXNzOjpT aW5nbGV0b24gKGEgZGVwZW5kZW5jeSBvZiANCkRhdGVUaW1lOjpUaW1lWm9uZSksIGFuZCBp dHMgLnBtIGZpbGUgcmVtYWlucyBpbiAlSU5DLiANCkRhdGVUaW1lOjpMaXRlOjpUaW1lWm9u ZSBrZWVwcyBhbGwgZGF0YSBvbiBkaXNrIGFuZCBvbmx5IGxvYWRzIHdoYXQgaXMgDQpuZWVk ZWQgcGVyIHF1ZXJ5LCB1bmxlc3MgZW5hYmxlX21lbV9jYWNoZSBpcyBhY3RpdmUuDQotIFJT UyBhZnRlciAndXNlIE1vZHVsZSc6IH4yNyBNQiAoRGF0ZVRpbWU6OkxpdGUpIHZzIH4yNiBN QiAoRGF0ZVRpbWUpLCANCmNvbXBhcmFibGUgYXQgc3RhcnR1cCwgYnV0IERhdGVUaW1lOjpM aXRlIGluY2x1ZGVzIERCRDo6U1FMaXRlICh+MTQgTUIgDQpvZiBjb21waWxlZCBuYXRpdmUg Y29kZSkuIFRoZSBUaW1lWm9uZSBjbGFzcyBhbG9uZSBpcyBsaWdodGVyOiB+MTQgTUIgDQoo RGF0ZVRpbWU6OkxpdGUpIHZzIH4xNyBNQiAoRGF0ZVRpbWUpDQotIH4zMiBtcyBjb2xkIHJl cXVpcmUgdnMgfjQ4IG1zDQotIERhdGVUaW1lOjpMaXRlOjpUaW1lWm9uZSBidW5kbGVzIGFs bCBJQU5BIHpvbmUgZGF0YSBpbiBhIHNpbmdsZSANCnByZS1idWlsdCBTUUxpdGUgZGF0YWJh c2UsIHBhcnNlZCBkaXJlY3RseSBmcm9tIFRaaWYgYmluYXJpZXMgKFJGQyA5NjM2LCANCnZl cnNpb25zIDEtNCksIHdpdGggdGhlIFBPU0lYIGZvb3RlciBUWiBzdHJpbmcgc3RvcmVkIGFu ZCBldmFsdWF0ZWQgYXQgDQpydW50aW1lIGZvciBjb3JyZWN0IGZ1dHVyZS1kYXRlIGNhbGN1 bGF0aW9ucw0KLSBBbnkgdmFsaWQgVW5pY29kZSBDTERSIC8gQkNQIDQ3IGxvY2FsZSB0YWcg d29ya3Mgb3V0IG9mIHRoZSBib3ggKGZvciANCmV4YW1wbGU6IGhlLUlMLXUtY2EtaGVicmV3 LXR6LWplcnVzbG0pLCByZXNvbHZlZCBkeW5hbWljYWxseSB2aWEgDQpEYXRlVGltZTo6TG9j YWxlOjpGcm9tQ0xEUiBhbmQgTG9jYWxlOjpVbmljb2RlOjpEYXRhDQotIEVycm9ycyByZXR1 cm4gdW5kZWYgKG9yIGFuIGVtcHR5IGxpc3QgaW4gbGlzdCBjb250ZXh0KSByYXRoZXIgdGhh biANCmR5aW5nIChmYXRhbCBtb2RlIGF2YWlsYWJsZSB2aWEgZmF0YWwgPT4gMSBvciANCiRE YXRlVGltZTo6TGl0ZTo6RkFUQUxfRVhDRVBUSU9OUyA9IDEpDQotIFhTLWFjY2VsZXJhdGVk IGNhbGVuZGFyIGFyaXRobWV0aWMsIGFuZCBjb21wdXRhdGlvbiBvZiBmdXR1cmUtZGF0ZSAN CmNhbGN1bGF0aW9uIHJldXNpbmcgQyBjb2RlIGZyb20gSUFOQSdzIG9wZW4tc291cmNlIHR6 Y29kZS4NCi0gRlJFRVpFL1RIQVcgKFNlcmVhbC9DQk9SKSBhbmQgVE9fSlNPTiBzZXJpYWxp c2F0aW9uIGluIGFkZGl0aW9uIHRvIA0KU3RvcmFibGUNCg0KVGhlIGZ1bGwgcHVibGljIEFQ SSBvZiBEYXRlVGltZSBpcyBpbXBsZW1lbnRlZC4gQSBiZW5jaG1hcmsgc2NyaXB0IGlzIA0K aW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbi4NCg0KSSBhbSBwb3N0aW5nIGhlcmUgb3V0 IG9mIHJlc3BlY3QgZm9yIHRoaXMgbGlzdCBhbmQgaXRzIG1lbWJlcnMsIGFuZCBpbiANCnRo ZSBzcGlyaXQgb2YgdHJhbnNwYXJlbmN5LiBJZiBhbnlvbmUgaGFzIGZlZWRiYWNrLCBjb25j ZXJucywgb3Igc3BvdHMgDQphbnl0aGluZyBJIGhhdmUgbWlzc2VkLCBJIHdvdWxkIHZlcnkg bXVjaCB3ZWxjb21lIGl0Lg0KDQpSZXBvc2l0b3J5OiBodHRwczovL2dpdGxhYi5jb20vamFj a2RlZ3Vlc3QvRGF0ZVRpbWUtTGl0ZQ0KDQpUaGFuayB5b3UgYWdhaW4gdG8gZXZlcnlvbmUg d2hvIGhhcyBjb250cmlidXRlZCB0byBEYXRlVGltZSBvdmVyIHRoZSB5ZWFycy4NCg0KS2lu ZCByZWdhcmRzLA0KSmFjcXVlcyBEZWd1ZXN0IChKREVHVUVTVCkNCg0K --------------PvORbfP1eqs1NJ32avaFdN58 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE html> <html> <head> <meta http-equiv=3D"content-type" content=3D"text/html; charset=3DUTF= -8"> </head> <body> <font face=3D"Avenir">Hello all,<br> <br> I wanted to share with this list the release of DateTime::Lite v0.1.0 on CPAN: <a class=3D"moz-txt-link-freetext" href=3D"https://= metacpan.org/pod/DateTime::Lite">https://metacpan.org/pod/DateTime::Lite<= /a><br> <br> First and foremost: DateTime is a remarkable piece of work, and DateTime::Lite would not exist without it. It is derived directly from DateTime's codebase, its API is intentionally compatible, and the debt to Dave Rolsky and the many contributors to DateTime and DateTime::TimeZone is explicitly acknowledged in the distribution.<= br> <br> The motivation was practical: in short-lived processes (scripts, CGI handlers, microservices), DateTime's dependency footprint and startup cost are a real consideration. DateTime::Lite attempts to address those cases without sacrificing correctness or compatibility.<br> <br> The main differences:<br> <br> - 67 modules loaded vs 137 for DateTime (measured on aarch64, Perl 5.36.1)<br> - Lower memory footprint in short-lived processes: each DateTime::TimeZone zone object, once constructed, stays in memory for the lifetime of the process via Class::Singleton (a dependency of DateTime::TimeZone), and its .pm file remains in %INC. DateTime::Lite::TimeZone keeps all data on disk and only loads what is needed per query, unless enable_mem_cache is active.<br> - RSS after 'use Module': ~27 MB (DateTime::Lite) vs ~26 MB (DateTime), comparable at startup, but DateTime::Lite includes DBD::SQLite (~14 MB of compiled native code). The TimeZone class alone is lighter: ~14 MB (DateTime::Lite) vs ~17 MB (DateTime)<br> - ~32 ms cold require vs ~48 ms<br> - DateTime::Lite::TimeZone bundles all IANA zone data in a single pre-built SQLite database, parsed directly from TZif binaries (RFC 9636, versions 1-4), with the POSIX footer TZ string stored and evaluated at runtime for correct future-date calculations<br> - Any valid Unicode CLDR / BCP 47 locale tag works out of the box (for example: he-IL-u-ca-hebrew-tz-jeruslm), resolved dynamically via DateTime::Locale::FromCLDR and Locale::Unicode::Data<br> - Errors return undef (or an empty list in list context) rather than dying (fatal mode available via fatal =3D> 1 or $DateTime::Lite::FATAL_EXCEPTIONS =3D 1)<br> - XS-accelerated calendar arithmetic, and computation of future-date calculation reusing C code from IANA's open-source tzcode.<br> - FREEZE/THAW (Sereal/CBOR) and TO_JSON serialisation in addition to Storable<br> <br> The full public API of DateTime is implemented. A benchmark script is included in the distribution.<br> <br> I am posting here out of respect for this list and its members, and in the spirit of transparency. If anyone has feedback, concerns, or spots anything I have missed, I would very much welcome it.<br> <br> Repository: <a class=3D"moz-txt-link-freetext" href=3D"https://gitl= ab.com/jackdeguest/DateTime-Lite">https://gitlab.com/jackdeguest/DateTime= -Lite</a><br> <br> Thank you again to everyone who has contributed to DateTime over the years.<br> <br> Kind regards,<br> Jacques Deguest (JDEGUEST)<br> <br> </font> </body> </html> --------------PvORbfP1eqs1NJ32avaFdN58-- --------------2AT04XAQ3vwK8LS6y9h9EaZw Content-Type: application/pgp-keys; name="OpenPGP_0x5F3C0261CDB2E752.asc" Content-Disposition: attachment; filename="OpenPGP_0x5F3C0261CDB2E752.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- 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 NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADz UQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAAD kFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA AAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDov L3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBj b2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZh dWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAA AGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2 MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24g aW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAA AAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf 521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JU IGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8A VABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYA ywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB WQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwC FAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUD AAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBME IAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF dwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUH BwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I 0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK 3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0N Jg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YP sw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQS hBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgV mxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY +hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHsc oxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwg mCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk 2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgp aymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYu TC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0Yz fzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5 BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+ 4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F EkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NL mkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFS fFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZ uFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxh T2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxp Q2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpx lXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6 RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSD V4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOM yo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSW n5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg 2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKr davprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2 ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB 48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXN tc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ 8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnz p/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///8AA EQgAswChAwESAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkK C//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNC scEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpj ZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMB AQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwAB AgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJico KSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj 5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwQDAwMEBQQEBAQFBwUFBQUF BwgHBwcHBwcICAgICAgICAoKCgoKCgsLCwsLDQ0NDQ0NDQ0NDf/bAEMBAgICAwMD BgMDBg0JBwkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N DQ0NDQ0NDQ0NDf/dAAQAFf/aAAwDAQACEQMRAD8A/KMHn2poOa9hIBxyVIHegZxU OJSbMiYYNSXYw4HbrXg4qnyy0OuErogiAc+W3KvlT9G4NMVtjA+lcZat1P6HP2Vd afxB+zt4A1GVi0p0KzikJ7vEgQ/qK8W/4J/eJ01b4GR6HJMHl0PU7+y2cZSLzTNC uB0/cyIR7Yr8wzdLD5pWoS0Unzx9Jb29Ho7bH3OXzdXBwqdV7r9V/mj6m1lfL1Cc epB/MU7xAw+3ucj7q1+R5/TUcfPl6n22XTbw8bnI6lzEOcc1j6rqkTZhh+c9OPWu PD0pb2OirURBbuWY8dDXLXOoXdurJwSe/c16Cw8pbHM6qPRI7+zt12yyohzjHevl Dxh8VINMFxp+myLc6lGNoAbKxk/3iPT/APXXqYThbFYlpxi7Pr0OOvnFGj8TL+tf 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3D=3D =3DdpH6 -----END PGP PUBLIC KEY BLOCK----- --------------2AT04XAQ3vwK8LS6y9h9EaZw-- --------------efzHTU6DrySEmeGRxEW7yUIn-- --------------duOsLiqdhNMNmoh6KiCz8wq4 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEENa28Ovg1XoRROdiWXzwCYc2y51IFAmnZogsFAwAAAAAACgkQXzwCYc2y51J0 AQ/+NYqDaFDodErt1DU7eCRVEOzF8YhWDQjbNTARKL+sGeT4WVNQxE9VVm4fYS/ih5F0Qu7Bgjrk tiGBGLKsM6j57YUN6cMdl9CyHcYxVSuN4ISNMBoOb170zmi2TfAaGacq+vvmjdx9z0qmK7k2vOhq Y9lqGv9Zq43B4C1x3PFxot7cSqiHiRw2fIngmZ206mtQFdXqFMAau8XTy2xHj8HXXTBQCIvFzSQu hEfZBodWjIMtO8FeGdox/jqgWvCFa7NnH4ypLz1W6UdoeF9n2v5fxwTiHR3DEoLdENZ3kkibg4Y+ k3WFIqnI/IkrOojt6t8E9u55PCzlNoDUQGDcTZJJwCWzvU48g/qlziQVWfQozmxhPZerj7z7Dnzf FnqOMJ5HTYtSdzvfz5r6TBgt7+6r0QNs2JpJItrqGSdYm8HvWHCk06pR+7LIBKgK304jPUtcx0bf iSFH85xONDJ3DMOSCXi9niopvNxMfD2/38bVHmFEfTpdbIrGjRfHVAPTfOAC+KhZZUkUVUSnywD6 Yx8GNtE30oFNf53F95exo/3sdeH9JhRHXDadjeIasR9gfvwUTsxv8cBg1Rtr42HrXCG94qvB1Slz mwQ1HcywK1PHKoeK+p2Hi9JB0uXwNx/gsHKRsP/A/q6VV9GDlY7b/ruXsq56ZnEJcnJP4+qda7GU zGo= =rMrT -----END PGP SIGNATURE----- --------------duOsLiqdhNMNmoh6KiCz8wq4--