Add offsite restic backups, move to backup module

This commit is contained in:
Sandro - 2023-05-17 00:57:08 +02:00
parent e482cac4d5
commit dd489fe8cd
Signed by: sandro
GPG Key ID: 3AF5A43A3EECC2E5
6 changed files with 337 additions and 25 deletions

View File

@ -69,6 +69,16 @@ keys:
- &prometheus age13xhxqulvswuckmpkmy2fgeqd5jx0ar8e2hst33leljt69r6hsvnsrdw63k
creation_rules:
- path_regex: modules/backup\.yaml$
key_groups:
- pgp: *admins
age:
- *gitea
- *hydra
- *mastodon
- *matemat
- *mediawiki
- *polygon-snowflake
- path_regex: config/[^/]+\.yaml$
key_groups:
- pgp: *admins

View File

@ -132,16 +132,19 @@
upgrade.stopServices = [ "gitea" ];
};
restic.backups."remote-server8" = {
paths = [ "/var/lib/gitea/" ];
extraBackupArgs = [
"--exclude-file=${pkgs.writeText "restic-exclude-file" ''
/var/lib/gitea/data/indexers/
/var/lib/gitea/data/repo-archive
/var/lib/gitea/data/queues
/var/lib/gitea/data/tmp/
''}"
];
restic.backups = rec {
server8 = {
paths = [ "/var/lib/gitea/" ];
extraBackupArgs = [
"--exclude-file=${pkgs.writeText "restic-exclude-file" ''
/var/lib/gitea/data/indexers/
/var/lib/gitea/data/repo-archive
/var/lib/gitea/data/queues
/var/lib/gitea/data/tmp/
''}"
];
};
offsite = server8;
};
};
@ -149,8 +152,8 @@
defaultSopsFile = ./secrets.yaml;
secrets = {
"gitea/ldapSearchUserPassword" = libS.sops.permissionForUser "gitea";
"restic/gitea/password".owner = "root";
"restic/gitea/repository".owner = "root";
"restic/password".owner = "root";
"restic/repository/server8".owner = "root";
};
};

View File

@ -1,9 +1,9 @@
gitea:
ldapSearchUserPassword: ENC[AES256_GCM,data:c19HAzk0/KYCP9liYTIO8ZgG6T1GYFoQoq/X0oJJbOs=,iv:R1bbx6q+6R0bMP14FjRAug3zfw3+hzJKY9v3CWsNQnc=,tag:O16XCUzWV33ukDUIY9vxow==,type:str]
restic:
gitea:
password: ENC[AES256_GCM,data:KA+m1s914wwhI0RkP2Zt9ECPk8/2fTmmFW6k9CBblTk=,iv:uqUFLF4yG4R/b84DdocNA9F5yvZ2PwSlTVozEeJmqhM=,tag:LjmglZpPeGItnh3YbXvGqQ==,type:str]
repository: ENC[AES256_GCM,data:OsDn4BJWqM0cs4WJtjpfXWLjHWuJmd8zSCNzvnUalyFCfDkvgmaA1AlL6XOtDjphEopoEgZvGA2ps1p7a4Mp2n1dhPDSv8o9apRsjgIhXi6nBzonVaIEGVeABc8HYl2e,iv:PJ4WmJ/B0uJic5VgDua09w5vAYaxekHHZbPhygFx3dQ=,tag:0aLLx9nV7OhCNwBOmW6N1Q==,type:str]
password: ENC[AES256_GCM,data:cAiFmuJ7ziJxBhlsmV4hiSz8rhR2V/Oc7w5kwRKFb6s=,iv:H7+x7Xgt1/KLT+ahyl1KbXsIftWYaCa8x4AyRkVrI/U=,tag:UPtgF9EuE2Q4VrDV2HRp4w==,type:str]
repository:
server8: ENC[AES256_GCM,data:s36qZ+KOUiKUVZmykFAxAx8Ij86dQU2cQOAWi8L9q0r5jnUs3eMBW9q1wAmFqiEFy1VJsPgkUNL8GjnVkQ86TIhnvLQ8S2JP3cGNHTleb3TCl9OlAHVE9tzKNNbVooWM,iv:bJYqAZosvVeRPrYbeu38c8CCxyqgXhePx21VUJAUOHU=,tag:FEgR4eCMThfs43tcZMnqZw==,type:str]
sops:
kms: []
gcp_kms: []
@ -28,8 +28,8 @@ sops:
RWhQMzRGZlRtelNyNUEvNUkvL25CcWcKAcvpGL8WLnSsWJa0pItFmboMs+StqFEN
2AIAZuwEA5PHzWxD24/4zS5Hd3GSYMbQ1OHk4M4ua6iJhQ8sUxeccQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-05-16T21:51:47Z"
mac: ENC[AES256_GCM,data:jIp61lpScD+a6w4DXuKru5KLNdZDj5kcX9Z1jbwvHCGqmRvxTeaIGh9Ca1j6MkSqWmUouQ0ZzM+NTVILwnRzB4l4/9X9BAD1mDmStxVmba1rGtr9mV9eqxM9kT92+mjmHY7N5fogGJjY3IenMelMciUcXRv9m/IdZ4UiDYZP0pU=,iv:oNhlL9ey7hT3gewSjnN86iGgXeDGSjkzCToEQHvy+W4=,tag:Sr0kDWC/F63esk47NvVFqQ==,type:str]
lastmodified: "2023-05-16T22:53:27Z"
mac: ENC[AES256_GCM,data:EV9AZgBEBArocGRqhwBFbiM0n0bUd3PanHVCzrppmUELgwUVmtpAZzKvyChVi5ESt5cIlhXVN6xbb5bfymg2mmjnSLFHun3xLf6HRYknbFEDFwVSPwUEnLGRLy7G0gUaXrdIpkVt1jsuy1rQVWDcN4ec0TNT93VcCVXnR1zG0bg=,iv:pvqIvaDkLfgf36NmQty1zDkxOAnbJ7PeS47Vu3PZfs8=,tag:8Eum9tS7/FJmqi08bp55cw==,type:str]
pgp:
- created_at: "2023-03-17T00:18:41Z"
enc: |

View File

@ -148,6 +148,8 @@
package = pkgs.postgresql_15;
upgrade.stopServices = [ "mastodon-sidekiq" "mastodon-streaming" "mastodon-web" ];
};
restic.backups."remote-server8".paths = [ "/var/lib/mastodon/" ];
};
sops = {

View File

@ -1,12 +1,67 @@
{ config, ... }:
{ config, lib, ... }:
{
config.services.postgresqlBackup = {
inherit (config.services.postgresql) enable;
backupAll = true;
compression = "zstd";
compressionLevel = 9;
pgdumpOptions = "--create --clean";
startAt = "*-*-* 06:00:00";
config = {
services = {
postgresqlBackup = {
inherit (config.services.postgresql) enable;
backupAll = true;
compression = "zstd";
compressionLevel = 9;
pgdumpOptions = "--create --clean";
startAt = "*-*-* 06:00:00";
};
restic.backups =
let
commonOpts = {
initialize = true;
passwordFile = config.sops.secrets."restic/password".path;
paths = [ "/var/backup/postgresql/" ];
pruneOpts = [
"--group-by host"
"--keep-daily 7"
"--keep-weekly 4"
"--keep-monthly 12"
];
};
in
{
server8 = lib.mkIf config.services.postgresql.enable (commonOpts // {
repositoryFile = config.sops.secrets."restic/repository/server8".path;
});
offsite = lib.mkIf config.services.postgresql.enable (commonOpts // {
repository = "sftp://offsite/${config.networking.hostName}";
});
};
};
sops.secrets = {
"restic/offsite/private" = {
mode = "400";
owner = "root";
path = "/root/.ssh/id_offsite-backup";
sopsFile = ./backup.yaml;
};
"restic/offsite/public" = {
mode = "400";
owner = "root";
path = "/root/.ssh/id_offsite-backup.pub";
sopsFile = ./backup.yaml;
};
"restic/offsite/ssh-config" = {
mode = "400";
owner = "root";
path = "/root/.ssh/config";
sopsFile = ./backup.yaml;
};
};
system.activationScripts.linkResticSSHConfigIntoVirtioFS = ''
echo "Linking restic ssh config..."
mkdir -m700 -p /home/root/.ssh/
ln -fs {,/home}/root/.ssh/id_offsite-backup
ln -fs {,/home}/root/.ssh/id_offsite-backup.pub
ln -fs {,/home}/root/.ssh/config
'';
};
}

242
modules/backup.yaml Normal file
View File

@ -0,0 +1,242 @@
restic:
offsite:
private: ENC[AES256_GCM,data:1Kd6RE666nI0Po9JW0aftRZMidAmoXQRASJ800X5qOXUY7NoicMvrv3oCn6SlMyShwyXRYA7rQQ+HcSffSkHLx3JvrVCs0Ujxo6omHZw1GcN4OICzVNQIt8kXCLXMAXKffsbSu5wJaGW3ecwvGHGi/XrIY0+LE+ddkAmSCf9NnwV6ConLdu34pBX2U7Dn/OsR29o5/3uzk1Zu00zJxd+3B+yDgSSgUNtPDUNmzi4nR91jszNayjicRm8/GUr3uNrOHqH1ppEHeLYJFG2PfIWNWE2BmNj15dF1ipx24PbmFrbw7i5HUyYuvirvVHXkRN8RA0i7xzHwlzv35d+4inrZqSb6xA+3cSHCynHdAct92bL/za3dmbbB72CeDkdXCTuF7xpNQ9Wkb+naiaLl31S5jvVbHOvOLrySBMM3Sam5drs/wXWZuTI7ftpPLzkjzt51nuz/FUOT4xCWZ7MFi28ctmguaJaiOu/dbH1nm+qQrbtAf4VcRUqsflzpBLbU7VL7OFNsAFRT1fXtpQI3IGdhEZNIf7AMjK5/6u35pZmK8M4LUI=,iv:h8Cb7dQmsS+e9BqH07gxpBXqOWzhj/2/gWEAbAbmmZs=,tag:ymiqZmc8E0XJ6pSnI7WfJw==,type:str]
public: ENC[AES256_GCM,data:h8NI00sNJ6ZpUAm2e9jr6sZ79YEniTIcPxVWFb6VkQg9wlSmeQyYXWcEWQfCqYd8Lgff7BaKk5ZZZmToSqq6cPGaT7iRAMUFSxWYZDCTBFrxHfb3VfQHHEtO7Su/zalQW/JZJ2gOZ5LhLXk=,iv:F4UITmiFi3x8bbiYIjUeo4bGMwSQUi5dEKPMYv0wP/4=,tag:O7i9nZoaNjfq4MfPWHP61g==,type:str]
ssh-config: ENC[AES256_GCM,data:DNiK4dPlzuXbalvFzo4G0rVDjIckElMHCjtC+KgqDqGZo9fjC8Y6CmbxRo7MmvZJL8OmNJFucolQmjR+Bh5Q5pJFAow+jHjG7GvO5NB2BrWFsvc2FFj9R5hRDOsIaSbQIWwmvvYbR0VE2ITMQveOisoDOd63GtWDiQ==,iv:9bj/dHGf+eHissPaqmYDis50C0kHQpsP0cHObI1TnU0=,tag:vvfRirrWoFcxIz1PEkoBww==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age12n5k6c4rxp4mjnexw9uw83yp34sallt44kldupfmxr2xkppj8a8sdsmv8h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxS3JPUEhLaFc1WWVucTVk
TzVJNjlRTTJQUkU4SUpXQ1ZpSmI5ckd6VWk4ClZXMDVpYU5mRkZTakNodEh1YXU5
c2FDei91Q1hBWFh0YnJ5T2xHY2JVSW8KLS0tIFlORXRJMDJHRy9VY3g4S2w0cG05
bklsUitiV21PcWVBT2E2eXBmTkNMNXcK1KPPer4nqXslnusmGAXbFTqC/f7kyOXJ
b0hTd5P6c7ZBnKfxSgpEYtZCmPGB2MiBtGI0YdBPXw8FLm3lwgJcFg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1px8sjpcmnz27ayczzu883n0p5ad34vnzj6rl9y2eyye546v0m3dqfqx459
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkcVhScy9zMlZTdnJ6Sitt
QnZQd1BIZXF4WE9GZjlPQ05NWHlDalowU3lrClNISUQzTVdKcmhZelpmRldQU2Vr
akNuY1kvdVhrTTZtbFVyRHk5SmFJV2cKLS0tIDVWc0NCbm4vSW8xQjJIWGFVQlA1
RlZ1bFR4RENLSWVLZVlIT1NrZDJlTG8KOcOavOJLR3PsnAmFyn6DvwJQD9N5E+As
y3wUAdieH+mcEom90+Pa/bjkf/LQDlQjB3ucz9cJDO4z6k/qXgFZGA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1dcpd6u4psq3hehjyjrt3s7kzmnvxd20vsc8urjcdv6anr5v7ky2sq9rhtt
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0OHBUdXo5eUJCblNiY1B3
ei9sa0hzK3NpWU1YVzZqd0h1MWgva3NRQVE4CmpWTmt3cVEybzBPdFJNaFpGOGU4
OVhncnVqVWNkTENmVWZ3NTJTdmpjRzAKLS0tIDVvT1lZL21XeHBLZ0NhV2twVTZH
K1orZmdvQW5DY3pRbW1Gd2d1b2FBVXMKdWJ/LCBVfUKjPzIHwJJVLhGPAt4+T3dL
Ulfy6izcTFz6jtpth+dIgWgPm9NOPSnqRG+e7FRI946bRjrxIO0D2A==
-----END AGE ENCRYPTED FILE-----
- recipient: age15vmz2evhnkn26fyt4vqvgztfrsr2s8qavd2m6zfjmkh84q2g75csnc5kr6
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxSDJjdHYrbmJybTR6bVFj
eHZFMGpKSlMvR2NXMWZjdjJQWC9wL2tQT1hzCmVXcm5seEx0VlRha1BQVFJIOENt
QVIzYmp4d1NUVEFDMVowNldwMmVNM3MKLS0tIFJUMzZCREVTWTBvT2FFcU1zaU1n
Yis1VHRRMjdtWmpGa0VqQkNJVUVSR2sKv7QG4+YoWNwDEPBMk+rAAcuZLmPKM3li
v7m6fX9qQyfw/SL1L4Ww37W7GU7JyBJh+KkYnPkx3bpNTSqLzYmjSA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xjvep7hsnfefgxvuwall8nq0486qu8yknhzwhf0cskw5xlpm8qws9txc56
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKbUQ3UTg0YXNXdnVkT2Zs
emFMVytQUlFVZnpxTHV1d090M1pGZkNlL20wCjVpeUdzM0xwTnA2TnNKOXhocEgv
RFNVcFQzZlRMY01ycUpUUnpOWmZIQjAKLS0tIEloYnU2aGVlOThMemVjK1M3Q2tk
N1Y5bkVLT2lWZm9vV3h3cHFkNHNIK0kKRZ3t08WykzsbJVAAqYvI5tR5wkvIdpgU
nWrKjXiQ/AFFBL53pTZihcE9XG5QzkDkbAmWOODVQVwwtli9znBAkA==
-----END AGE ENCRYPTED FILE-----
- recipient: age12aukzah0pt2rck52hwn08kezyxueqz2f49ld7hpyuzmu847vavdqkunn5c
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVM0lhTEdkVHZUUFhyekp6
QmlGR2RUdHUzZmhNakliYTFjQ0VXeEJ0ZFJvCkRXRW1XTWtZeDVrMTNqM0xCZXp5
Q25na1M5ZG51cENUeC9LOU5uZE5KYzAKLS0tIHlmOE9pRDh3dXkxTmV6YW8xUHJs
dmRZMFNudDBsL1k2clM0Umhvb2hSc2cKUYRF6X/Zq1nKQ0cmq6qq7WYCW5pFpNwC
EeVoccQvPFMj0OSxl2+Ef3DTI+TiX24v0qbL0KRw4B4rru8Hqa3+hA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-05-16T23:43:55Z"
mac: ENC[AES256_GCM,data:OAFdTBgFBtobgRR8WTQR+hfByJBeTM1t4gBxjBmcm9rClz2XgDuFQ/rDYRYEoAEKXoztCZhRqa82DSFsEZkaseaMOX6NeGlcsnXGKHzAmjRJrtEdYawpbH6i0o4r9kTBeMbjzCkP6NhxfjY6kvwMAgmUjzj7sQiSUgOLpeZt9tw=,iv:NTQuU4lN2LvvPKT/IpUQlycTaQayqgHEqFHUCWw4dME=,tag:VFfeht6E9xTL1+s7pt+hAQ==,type:str]
pgp:
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMA6j84+xkv3y7AQ//cHU4+/zuY2DNCTU0a1MZ0gW1vTe/Jc8S1iWe7dVelU7B
sBukY1DEb0IJklZY/aYNmzhzlxukNoKL4JiH9Dh4H7fmpyJW3q3K8hXPf53xZRyb
GHXRIEY9sr/R2rjiZuXw3WlG8b+2elKfo87qp4quEGtdDkiy+yulCfFD+TTNLLtP
G8aIE5TriqqO25qs1yL8ZTRJr9WQMHq4UyA2krwi5fcsjQQygsWVbBoZEUShoKYt
TAViJRVZ/EX0PcvfsBiZcdWI19Zpg/krUx6W/GQBKs1WliQ8LSmsU7P/q4AN2bPM
+GmvjN1MpGD5HLqMqPc7Zik9T6Q+FE7iKtUyjnYNSjSdcj+ZThKiCkCR+jNlMUzO
MRZiMgQaBiewK7ukW20qQo3ZPr+lD3pHA4o27J6EE/hAKlEku99O0tL1h757CatJ
p7UmPYa8oFeyo9RwdKOx+wF6r2YIx+p0IDL5tJIRwEE4hnsRngbh8+i7f96SFzER
Q+tfaEnaXbN0+zlI2DGy/1chHEMUOTKNSf1AORcKax3l5VtXexFwsKnxqsxBFipm
zVfXtUNvTjJ9SBmsL/PcbJgnejOKGA84hLujWbVK+Ri8O0WsdPLqudsRBZ8Ihq8j
+5cOqxpVo6tmLW9nwCvkIJEDhq1URiWwi/3Jf0qB91oQhsfyKkHa0q6r/008v/nS
XgH3NpkUKhPWuRqo64+s5+D+s+3fdPEPW58DMZVDKaHP4y4/p+KJriVVea0upIF6
VjDUmLpcL+FoE+zSaxJBIm0dXf38W8IpfFgUK9Oa64Ox8whcICupAXpMVztB0jQ=
=KRPT
-----END PGP MESSAGE-----
fp: A5EE826D645DBE35F9B0993358512AE87A69900F
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMA8zMZ+ak7y/zAQ//RiIBOP80a442mbbchdDm9fIyrzeCKCWdu6cs55obIBVK
tqYtP65IFO4GiTG71E3iFf+nsOJuNFJiUg4Bayx7tFz14NnIpbgB5zlkSp2yqBqN
SafitbdGhUStzNnA0hNTBwp04BLASD/1GxJXnJDSbhb7Icj6FA7y8mWfUAOtoRek
2XcMYU9OqTW4aLW7+lQNtxXi8OXZN1Nlnv2dkCNfFbH1c36E6V16jtrc4xrBlIyW
CawuFwAlsRbckKLsj+o1BR2DPAoOJIcLHTmdDP7Mj3nuHbQL3UZQ96tOczDAqVj2
fjvd1b36hEGpXBj5kMnME1Av9KNIhrCpgsdsb+lROArncoByewOBNeqHZBiVqs5f
iuQTmNn60HpzMEitkRgP6uWkeAToj1JvNHsMCyvs8ADaIzZHjPafF6KeQNJuTbEP
vB92sb2/XdcWyygvjNXU3EEWCInS8C6pcTVB5J6FF1zPNEDOM9ozVmj8ZQZ5J/zQ
8qEX8wRX5/6GjS9hrdNEXBT1185oUrWypiUH+c+Z29/HadqF/7D3BZL4j4OSMZ2e
TzX8Mpqknj6aEn39SclLXgwQBwu7pDCUKO4Ump6TzpVCR8XW2/EAfKJ0sq8lxhpp
TEw3/8CloQIskP5VKkUwDqGQ3Sw7RXgpk772SlhRRNPH/fYzFVlqwAtJ1DjQedPS
XgHhycX+Tb2crqIczDucG3uW2iF1J/1qyhcJBiBV+l2LK/8TP+yWxTkdooMkFqiC
KHXdKsnYJCkjeVYwOWIQJLYdkS2d6whYoV5NUeQ+KVPvsE9DU2BUJveGhRGhSIA=
=6B5D
-----END PGP MESSAGE-----
fp: D4E89C6A0A58EE803EF708EFA9B23715F7AA3F1A
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQEMA45bZkLXmBFpAQgAngktLlG9dP/QVhQvooZWPiDo3guO+qB94tEIKpy7KeBK
bgqqtxDSD6B6vWPKRMG42RP++QbkO9hNrbJ4MKqYCDN4MkWWaK+rb28ICPpMtIWT
OprRZ2EaNkS37gKGDKxyFBgA+mF6POC7vxxnI/FpZasx9fmJu8OaB8bg4WluFpvp
nTWN+v7lEHD+GF1osl0t4Ir74y3wSKG1HCrbun4sBjTL//YQKzfdeweIDsHYFy41
M3e6W+qYqXcalmW2oScw7tQUlibgdq023frhIebJrkUBo1eut+gWU1JxtU9ZcIN+
k3bGVi7JwpWWLo7wCPio44FUFVr4pTcU3NuCgTpNP9JeAYbrkejAvIQO7fd9+Ici
ArobsiKym/pSfXONNKSH88usTboAzpdvejvVMz1NvsMV43gZ4+IBs8nOb5kI1AHA
wzAi6+niAP6qZc9esC4crTtyz6YX7UN7VWLIu+gScg==
=9AJP
-----END PGP MESSAGE-----
fp: A4B0F5A80C2E2448A97BEC25BB829C4DECA6CCB9
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAwMCBBrc/JA6AQ//apcTXy1SoBkt4HAQNsNyDm6ourWpmb8/ooZt5APiJ68X
VDCbS9vhPTz7o4tYXiplhRC1g3Hn2Cz4BfGrUpI1QqCoufUqK38iMzw7f2+1/2mU
CCvm/kLyf/ycvTzlcM+m6no9hgoXgJM1sAkMMwQcloeOvmxrBHwfpgTBi9J351tx
Pr7XhwdWyPw6pPcLLfvyBIOX+JDfKriRWujtf+gKLH4YGEtXNnkaDhAGXx2DUTDk
X3I2kLag4KrRf4ZyKYuC+xGXGn9SG2PlMmSm5KQ5DD+TJFSLQUbYb7nWQ1e07HCu
bWzJCdx5XXxxXcK2iuFrdiexnFCNDpp6+eULRlCqg6Gl9+nuRDBS/X3QSQiWcJX7
AxuZfgrj717lKubA52d3UmGWXoV2eD43OyL1H/Zo/JiTyrtM4Bl+7HymHYC/XMTB
Qy/Y3JPzK4D6JWGmSqUiKC/xIri/FmvgO0MTHPzgIMB5CyohbRWogwCiltomV48b
LPICrhuw2zfe3+xEYBAGwM/kOHpeWZ4OL8FcY8NjUsSXU449bUHnIafjUDxkSeyx
hgrCuJCgKHMHpz8b00jNdnGn4EDaJkD/QrpmwACIHObHhuVA62A6gPnvyp0p900n
zQnQgjMEjWQJ9ItxEGxuX8W8el4WvR+IGJWlXXmoN6Y/h+24sOe8zIZzTrpagnbS
lwEUY3ziFkgOL2YoF+fFmPM00MEnspMYGvCIrfBYUsC3EhHkS8pUhiE0T+NlhvTP
Fph7us0Eyv9D744eLjSJmikyhbG1nnpPOHFcV+5NfeuH3W2+y1uZjF1PtZ1hGF5B
fsro1PVTMRXFPJe2HTGT/xxJl7Z2wQm64Oml5Ss7tcNsMQuObVJWYTij5oPIDhrS
ZVWUz65Y//U=
=drbA
-----END PGP MESSAGE-----
fp: 4F9F44A64CC2E438979329E1F122F05437696FCE
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMA9XEenRNYVGHAQ//UBUSekpguXHwUV4fF9olmpo6s0KX3v1pVm4ENMprE5OM
F31vYSCteEIneCd0yaj9zalz5CKQURfbp3W0stLQhmU5sa3e5xHulX11Ew9QGfdJ
Xzgu9AlttnOiivM4aJZ25ibQi8Q1nLOuFtkjqB/TgtLoJg4r9hD8DzDMAUrbBpWb
gAJCGJhxhs6EbukHfl+78E+NCEaqIQLp3/IRcg3LS7kCB71n0qI9zycQjgVQB9Ze
8IxFKhxSMjLFI8v7K5djdiV542wwETVcCgy4r6uQNqV2KGgOZrwBWknXAI9XxiRm
q6jrS8BMRfs8lXevpzMKCRiwVjbtROIVfhodOs7FQMpVDpj45EpS8LGx8HX+nIo0
FOwdXdpYA/fCVw295LFl+uTFVfGgyGWEwNtRETzfjMDxaRTOPa2zLjEk7TaEAgvh
9kAgKrQRewbh/95Op6P+pAulxioKQHGu+XLaA8R8LW11U5NqXiCeOkxWa5Xgw/gY
wnsjk8a8WcRHLLGX+g1eVvfjJetm/OFKM2efjnkm4dkyOk5+o55Gvrl+rp1aDn0J
xB9J0ZbrE0uqrPavmPbQ7bi8xU6l+zXS8oktRQoOPCFbzJtyCcWFsf9PxYBtDL3O
DuV/sz/Fb6wwF+QlJii9kPAjpwTCEdLKJL7Hm8VrlcCcF8VVCBX2Ci3Q43U1uebS
XgH34NTCVGJnd68Bfb9qMzBLWsXBJE2juwPkX+0fzLvOoREIjUsmgnE7BSJpLR4h
sfo1ci1dbXnM2BnEMrAXY6l02Zyl2C4qvfOTYmuqWIJ7dEo7nKIQdIMWB/E8cr8=
=izM2
-----END PGP MESSAGE-----
fp: 4B12EFA69166CA8C23FC47E49CD3A46248B660CA
- created_at: "2023-05-16T22:33:50Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcBMA/Z87ylQaotQAQf/TDXWUcp0OzNzcdnLMjkcFJ2XAzxeau++OOAWLXilVy9M
B61kOwL09sEI4A5woaBUH3tpnp2oPtHWLoP2bQFDXCysanxgAWLYQ+WH1Ia20lZ9
4WqQzzDVKXF7SqJG07rPFY6prfmO09PI8yoSnFJrpkuyYKQPYYp5AVLQWbu5PHOg
AMQszorQbgjY+sUFdhyZSGqRuO6danKcpRCnVH7nuTcAxssa2XjRlxfe4eSMpMSc
PI90C/lJKXISEpuwtMnjEDACQGsERo5I9d7Bx9AwujbfX3M+/JLzK+1knSqfRvI/
s55s9LdE17i8rs+BcwdUfKSdROntITYh+8ZKs7DHoNJRAbS8gc8YKRpRffVCVExq
ny7NHMk/gMHKfZRmA5m00E1Mbdp5hiIL7h3/igV+0upPKl5+eYhhHxSTHIJ0JW7y
HKEhWUz0MyLPNA05lahvUi0k
=ezj/
-----END PGP MESSAGE-----
fp: 9EA68B7F21204979645182E4287B083353C3241C
- created_at: "2023-05-16T22:33:50Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA9qJIVK2WMV7AQ//UyukKcv81E5L9UUrSCGGiZv4kGOWAgWvbAEGwgQ4tGFg
J0RDFhj5EQAehNDakN19upTMXZM8YTl9b+0su1tOBx4eRZJ2vmH0NVZ26VdIcdG6
hSxx1C185ZYgrBRANDotJYEO0IgMRMUEPKzmk721EgSStiq9JM4FuizhoOE9GHaM
vetJpsNTNdbKNuVUKBByHbV0hSLSdZKTDiqrwX+bDsRGTa4GrAoQ/5O/ijIlQzcS
lG8x1IhbMwdgWXjawb+TD2QVPonKp4qBK9lAuiZG7b9Vls/eyUuHIOTmobi3fH5l
BEqnVawr/Vt7IfoiHQjEiKvNs0FZGmyVrtTC7KEVhCOzSWAY4I86/Ewx5la0p4Rw
oQSU4ygyaTImQiUkWAf7UX0tVknFgADvwqOZ8rNYhzD3cbl3avqN800YBHZOBPhq
ptdKBzJ2B2RZ45n8lNBmUMFgZaK3E4atPpLaYQDLoEGqkqJLlD4Y1flLdhn7ez/5
lop1d3gZ6KuMX4kDdaw9/0dmgs5UoR7dEZ2AUipobaYXp5mzZhA2uO0oIbsDVmaO
sPCWNYC8gD4D5wXtIzRgtpnToGIvSLoyNyVFcYZSERvSz7ctjM2mNC5YGWvFjGq3
wlfc4KaJzdQO+nOjJSoyA50QrzFfgOpPj5JbU2LABxNg6fLGfIEaCy6o2tSRytXS
UQF/KM6naplLRF1rGk79c6bHe2TJKxiEZp3muXEb2dsQliKFyvM/hTRlkTl19btS
665wTa9VLWxbTzxXjVIYfI2ayTdEGlRRvo94Hpy27u2CkA==
=7aDn
-----END PGP MESSAGE-----
fp: 53B26AEDC08246715E15504B236B6291555E8401
- created_at: "2023-05-16T22:33:50Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMA/YLzOYaRIJJARAAvbSFiqGaLSAeWycMlbPWCBA9cpi9wCy9MU4lnncThsMA
RukN44HtkO99wBilfS0ptQVYXe+2B7S4KxPKGj0DKhmV/Qvx+2/2Bfw0oxnYAOte
yDAlwnT7vTUa8qilDvUh9zfdf9hS5mohKJy+SeNbEXr7eJPCMFROrFJUQnVKIfou
hPsQMYCjuuxZCVY920l/7RW0dy9d47Ez1T1f/35CVpxcGKR02HNeP5rBx/rLdV0K
3+gVB1f278oiJ8JC3/NpaPTSbrUZGTGnz021UJmbp0jxZzp0PesrSq2GhHH3A/hG
jrNhzrlRgIEVtrHuSX9V/kVacTGITWqw5VAUlS4XskxtYSBbMVx+RIxJFUkWI4t3
JDFb6Ngq4tyB0kizxeQJf9yEINTDuHWh1yq36KZjgEJg3JMSWSUUfeoXbHGyyu3l
Xoq4pblDH7QVx2WGdHfbNzznp5mwZnJTIj1hGHMdeDVOa69lHwu5lREwK0UUHJRQ
HPheuEwun9FkEtCawh/CqpvT+6qG35arJx8LxHlnCNwbCYoVvsKEVmQODg785PKx
UFx+KCd1OFk72qlxGZs5iVqFNdnkq9Z911vzlQ55R4QSbmZXE1c4uMOxlmoDw2wQ
X4cmp2WPC2zx5A4xxxI2t8wkN4XTbH2njU1PeHWYB7mOj9TjKUl8u55Uk0mMFTPS
XgGwu/fNn7oTy+GdBxoxFdtgxlKPTAVPx6SyHwEdVGtZQZZ8JdASLdVESV8YXfr0
PIibchLD18PABoK2I0WPA918TxraXqfnGrbs6/MXADlkyG3hzU/btf8fQfom4yc=
=31lf
-----END PGP MESSAGE-----
fp: 91EBE87016391323642A6803B966009D57E69CC6
- created_at: "2023-05-16T22:33:50Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA7zUOKwzpAE7AQ//T05JZWXkqx1MfFvVWaef4an+35+GIrvcFhag17MXwCbE
p62FNyXo0J03isMj2Sy94T9fD/aBoYUwe/VEvm3fD7POiKaXQAbROUDmmRZ2MnmI
NO/0E7GOyNN4QltyebcvRno6/rorfTP3/st7jACXqiy/cWPgwQqeS0r91gwNkT5p
uuLFytmqphW5fSpsNzjLyvTswuRr2Hn/64lQp9771yFFzZFOLtpE50THpEJ3hBzW
gw2W6OQHSx1lkwaolGmyhXD2RLVxyUZt7j3z9JUM1R5b3HV+S3nCz7brZkF5+ns2
mQHXUU/mMFlvmfyvoC9ChaqMszAYpdOR7nKFMmSr1IDGlLxHOMwjLk5/EwQPJtJX
+7RnpejrEnoNRJO2V9hm/BG8iXcmFwzogaE8H7CISzpXQvoY/RPmE997quhwGtoJ
h0Xx3IkMy2/D/u5sOuemJ2trV0oJfnapijBLqtN3wY7mFJ5gXADXgWuB6+K6BpzW
VsBl5QkKX1d2AMKCUTZQTF53bd/LD2IQ2mDd4j0oluiiqOTK8iuG2EhupTy7o5+M
CMB4M8hTXmqK2zOXGSlcTnrVnnn8LN8lknXHUg4ujHWUF4U1PRgVjzLz4aOyBCj1
+RQQiwrKwGCdqzOyQXGoAxtAohVpRM7bGbKpg+9lEkdapxk/zuB71dpEvN1MrH7S
UQFG4HESmDmZ4t5yEzRO5mLLXR/wcpfnz6e0cO/spXrE56FP2KS7IL5teuNqYv5g
4fP/Kc0VIzPR0Uxk12rR71BdAc70r3Ftpv8Kb+ZoNWYNzw==
=csKO
-----END PGP MESSAGE-----
fp: DD0998E6CDF294537FC604F991FA5E5BF9AA901C
unencrypted_suffix: _unencrypted
version: 3.7.3