BPCAJCLTVK2GVWYURWJTPQ6XA34JUJZNZHG6ONX4ARM3QPJJ6UPQC
3FTEGCMRMELPIJRUKNKRTA5TDBXEOTOOVRUTZJ7DWD27ZTKKMV3QC
F2S6XETO6DQ4447O4WPAHISGTBRVWW2WZYJ633KKYWWYKW5GXBPQC
QL6K2ZM35B3NIXEMMCJWUSFXOBQHAGXRDMO7ID5DCKTJH4QJVY7QC
4H2XTVJ2BNXDNHQ3RQTMOG3I4NRGZT7JDLC2GRINS56TIYTYTO4QC
NS36CJCO6E2FS65JRHHMOK4GTL7CLNOOLQZZAAAIZI2CQYNPAYRQC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
GUL4M5FIE7JYXJHR7MCTQS3543HIQXGPLBWZKASBAWWEA4SZ75CAC
pub(crate) fn timestamp_validator(s: &str) -> Result<(), &'static str> {
if let Ok(t) = s.parse() {
if chrono::NaiveDateTime::from_timestamp_opt(t, 0).is_some() {
return Ok(());
}
pub(crate) fn parse_datetime_rfc2822(s: &str) -> Result<i64, &'static str> {
if let Ok(ts) = chrono::DateTime::parse_from_rfc2822(s) {
return Ok(ts.timestamp())