Compare commits

...

27 Commits

Author SHA1 Message Date
Hoan To 70ab8667af fixed mgmt public key 1 month ago
KyrakerzNetgo 5ca02f56a2 new gpg key for tax 2 months ago
jan.jantzen 2170376e81 moved Dustin Bleschke's public key to archive 2 months ago
jan.jantzen 7721dfe117 Update jan.jantzen public key 2 months ago
Michael Haehnel 9dbdde4b36
ADP-3780: Corrects adp-staging environment
Changelog: Updated
4 months ago
Michael Haehnel 665f39c1d5
ADP-3780: Adds gpg pub keys for adp-mgmt and adp-staging environment
Changelog: Updated
5 months ago
jan.jantzen 5d12cc6d54 add comment 5 months ago
Andreas.Rother 47a30ad1f2 added key for tobias p 5 months ago
Andreas.Rother 426cc6d943 changed public keys for ulf and thi and added andreas to sops.yaml 5 months ago
jan.jantzen 5891b61259 add thi nguyen and ulf fischer public keys verify sops.yml 5 months ago
jan.jantzen 187a8a6337 add thi nguyen and ulf fischer public keys 5 months ago
daniel.risse c3cc147ed2 fix key 6 months ago
daniel.risse d1ce01a9d6 add Daniel Risse Public Key 6 months ago
Claus Paetow cc64355eed gpg key from claus.paetow changed 7 months ago
Dustin Bleschke a165d1a6c3 GPG key for Dustin(me) :) 7 months ago
Michael Haehnel 85d1da2795
NOTICKET: Readds Kevins gpg key
Changelog: Updated
8 months ago
Kyra Kerz ae2666dc61 add gpg key 8 months ago
Andreas Rother 715148b91b added pub key andreas.rother@netgo.de.gpg.pub 9 months ago
Michael Haehnel 23b0ab4f0f
fix[DEV-1368]: Remove obsolete user pubkeys
Changelog: removed
9 months ago
Christos Adalis f10a6a794d create user and pgp key - Christos Adalis 9 months ago
Daryl Sauer-Neumann 78cff885d8 added daryl.sauer-neumann@netgo.de.gpg.pub 9 months ago
Lee Watson 75a3c94f6e ADP-231 adds group for argocd-os-nso-adp-dev 9 months ago
Lee Watson aff320d809 ADP-216 simplifies test control flow 9 months ago
Lee Watson 9877df6455 Merge branch 'ADP-216-uat-sops-step2_003' into 'master'
ADP-216 uat sops step2 003

See merge request smardigo-hetzner/communication-keys!21
10 months ago
Lee Watson 0164502ef0 ADP-216 uat sops step2 003 10 months ago
Lee Watson f607db9b97 Merge branch 'ADP-216-uat-sops-step2_002' into 'master'
ADP-216 uat sops step2 002

See merge request smardigo-hetzner/communication-keys!20
10 months ago
Lee Watson 0300b3d944 ADP-216 uat sops step2 002
* make instructions procedural
* clarify several steps
10 months ago

@ -5,11 +5,28 @@ Purpose: Manage gpg keys for:
# Key Management # Key Management
Roles: * Role: New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc
* Role: Existing User: user who already has access to the appropriate project
* New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc
* Existing User: user who already has access to the appropriate project
* Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml) * Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml)
* Keys Repository: This Git Repository (`communication-keys`), manages public keys and configuration in Project Repositories
* Project Repository: Git Repository for each Project which contains SOPS-Encrypted secrets, e.g. for GitOps Deployments using Helm Files
# Playbook for Configuring Access for New Users
## Overview:
1. In the Keys Repo (`communication-keys`):
1. New User creates,adds GPG Key
1. Existing User configures groups
1. Existing User configures verification SOPS Config
1. New User installs SOPS
1. New User verifies SOPS installation using verification SOPS Config
1. **Status**: New User has working key, working sops installation. Caveat: No access to secrets in other repos yet
1. In the Project Repo
1. Existing User adds New User Key to SOPS Config, Secrets Files
1. New User verifies access
1. **Status**: New User has access to SOPS-encrypted secrets within Project Repo
## 1a. Onboarding: [New User]: create and add a gpg key ## 1a. Onboarding: [New User]: create and add a gpg key
1. Clone this repository 1. Clone this repository
@ -20,38 +37,26 @@ Roles:
- CAVEAT: step 14 is not necessary, as it is specific to a GitHub account - CAVEAT: step 14 is not necessary, as it is specific to a GitHub account
1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch 1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch
- file format: `<email>@netgo.de.gpg.pub` - file format: `<email>@netgo.de.gpg.pub`
- **Example**: `max.musterman@netgo.de.gpg.pub`
1. git: commit the new file, push 1. git: commit the new file, push
1. open a MergeRequest 1. gitlab: open a MergeRequest
1. Hand-Off: Assign the MR to an Existing User in your Team to have your key added. 1. **Hand-Off**: Assign the MR to an Existing User in your Team to have your key added.
- Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml) - Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml)
## 1b. Onboarding: [Existing User|New User]: Add new user to groups ## 1b. Onboarding: [Existing User|New User]: Add new user to groups
Determine the groups to which access is needed, e.g. a specific repository. **Prerequisite**: Determine the groups to which access is needed, e.g. a specific repository. If uncertain, ask a Team Member for help!
If uncertain, ask a Team Member for help!
Technical Instructions - please forgive the complexity **Technical Instructions** - please forgive the complexity
Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
Most of the groups correspond directly to git repository names, aka "project name"
Create a symlink from the group-directory back to the keyfile Create a symlink from the group-directory back to the keyfile
```shell
cd groups/<project_name>
ln -s ../../<path_to_key.gpg.pub>
```
Example: 1. `cd groups/<project_name>`
- **Example**: `cd groups/devnso-adp-argocd`
Add "Max Musterman" to the group for `devnso-adp-argocd`: - Explanation: Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
```shell - Explanation: Most of the groups correspond directly to git repository names, aka "project name"
# navigate to group-directory for devnos 1. `ln -s ../../<path_to_key.gpg.pub>`
cd groups/devnso-adp-argocd - **Example**: `ln -s ../../max.musterman@netgo.de.gpg.pub`
# symlink to pubkey for New User
ln -s ../../max.musterman@netgo.de.gpg.pub
```
## 2. Onboarding: [Existing User]: Configure sops config ## 2. Onboarding: [Existing User]: Configure sops config
@ -61,53 +66,96 @@ For verification purposes, this repo also contains a _sample_ `.sops.yaml` to wh
### Update Verification SOPS Config ### Update Verification SOPS Config
Follow the interactive prompts: 1. Checkout the New User's branch titled `add_pubkey_[firstname]-[lastname]`.
```shell - CLI: e.g. `git branch add_pubkey_Max-Musterman`
./verify/usr_confirm_keycfg.sh 1. Run `./verify/usr_confirm_keycfg.sh`
``` 1. git: commit the new file, push
1. **Status**: New User has working SOPS Configuration
Now the sample secrets file _in this repo_ has been updated, and the New User should be able to decrypt it! 1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets
### Update Project SOPS Config ### Update Project SOPS Config
The following commands explain how to update the `.sops.yaml` for a repository: The following commands explain how to update the `.sops.yaml` for a repository.
#### Prerequisite Note: For a worked-through example, see next section.
1. **Prerequisite**
1. Obtain Project Repo
- CLI:: `git clone <repo_url>`
1. **Create Branch**
- CLI: `git checkout -b add_pubkey_[firstname]-[lastname] origin/main`
1. **Configure Project Repo for New User**
1. List available groups:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups`
- Reminder: Group Name usually corresponds to Repository Name
1. Update sops config AND all secrets files:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group <group_name> --find_secrets
1. **Commit the changes, Create Change Request (PR/MR)**
1. git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
- CLI: `git add .sops.yaml $(find . -name secrets.yaml)`
- **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
- CLI: `git commit -m "adds <firstname>.<lastname> to sops config"`
1. git: push branch
- CLI: `git push -u origin add_pubkey_[firstname]-[lastname]`
1. gitlab: open a MergeRequest, Review, Merge
1. **Status**: New User has access to SOPS-Encrypted Secrets within Project Repo
1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets
#### Example
**Prerequisite**
Obtain Repo
```shell ```shell
# E.g. update sops config for DevNSO # E.g. update sops config for DevNSO
% git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git % git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git
% cd devnso-adp-argocd/ % cd devnso-adp-argocd/
``` ```
**Create Branch**
```shell
## OPINIONATED GIT - use preferred method
git checkout -b add_pubkey_max-musterman origin/main
```
#### Commands **Configure Project Repo for New User**
<!-- TODO: auto-determine group with git remote show origin -->
<!-- TODO: auto-determine secrets files by integrating the 'find . -name secrets.yaml' in the script -->
```shell ```shell
# List available groups # List available groups
# Output:
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups % ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups
# INFO: listing groups # INFO: listing groups
admin admin
automation automation
devnso-adp-argocd devnso-adp-argocd
# For a given group, update sops config # For a given group, update sops config AND all secrets files - New Users cannot add themselves!
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd # Output:
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
# RUN: generate SOPS config # RUN: generate SOPS config
# WARN: no secrets file passed in, make sure to call 'sops updatekeys' on secrets files # RUN: gpg --import *.gpg.pub
# RUN: sops updatekeys ./loki/loki/secrets.yaml
...
# SUCCESS: all users with keys in this dir should have functional keys
```
# [OPTIONAL] For a given group, update sops config AND specified secrets file **Commit the changes, Create Change Request (PR/MR)**
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd -s ./adp-api-devs/adp-api-devs/secrets.yaml ```shell
# git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
% git add .sops.yaml $(find . -name secrets.yaml)
# **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
# output:
% git status
...
no changes added to commit (use "git add" and/or "git commit -a")
# commit the changes to any .sops.yaml or secrets files, e.g. with % git commit -m "adds max.musterman to sops config"
## OPINIONATED GIT - use preferred method
% git add -p git push -u origin add_pubkey_max-musterman
# 1. review changes to the .sops.yaml
# 2. press 'y' to accept the changes
y
% git commit -m "adds <firstname>.<lastname> to sops config"
% git push
``` ```
At this point, the New User has been configured and can grant themselves access to any of the secrets files in this project. Now proceed to with the remaining steps, i.e. gitlab: open a MergeRequest, Review, Merge
## 3. Onboarding: [New User] Configure SOPS ## 3. Onboarding: [New User] Configure SOPS
@ -116,30 +164,18 @@ SOPS is used for encrypting secrets, e.g. credentials for various systems
## Install ## Install
### 1. Install Sops 1. **Install Sops**
1. https://github.com/getsops/sops
https://github.com/getsops/sops - Note:
* MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb)
Note: 1. **Configure Sops**
* MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb) * Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session:
```shell
### 2. Configure # Enable interactive passphrase prompt for SOPS
export GPG_TTY=$(tty)
Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session: ```
1. **Verify SOPS Installation and Key Configuration**
```shell 1. `./verify/usr_confirm_keycfg.sh`
# Enable interactive passphrase prompt for SOPS
export GPG_TTY=$(tty)
```
### 3. Verify
Run the following command to verify local SOPS installation _and_ key configuration:
```shell
# Follow the interactive prompts:
./verify/usr_confirm_keycfg.sh
```
## Usage ## Usage
@ -154,7 +190,9 @@ Note: The `GPG_TTY` is necessary to have the password prompt appear. src: https:
Note: `secrets.yaml` is just an example; the file can have any name Note: `secrets.yaml` is just an example; the file can have any name
## 4. Offboarding: [Existing User]: Archive Expired Keys (EOL) # Playbook for Removing Expired Keys
## Offboarding: [Existing User]: Archive Expired Keys (EOL)
To mark a key as expired: To mark a key as expired:
1. move it to the `archive/` dir 1. move it to the `archive/` dir
@ -180,7 +218,7 @@ find groups/ -name ${keyname}
# For each group, update sops config in that repo # For each group, update sops config in that repo
# Example: # Example:
% cd devnso-adp-argocd % cd devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd % ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
# now git commit, push, etc # now git commit, push, etc
``` ```

@ -0,0 +1,42 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
tPQpHpp5OcriKFWxiZSM41Wm5yHn5Yc=
=BUTZ
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaD2xXRYJKwYBBAHaRw8BAQdAKL1LP1gP7t3R41tNdVH5cUu7OksuY7FDwoq0
EX/IznG0KkR1c3RpbiBCbGVzY2hrZSA8ZHVzdGluLmJsZXNjaGtlQG5ldGdvLmRl
PoiTBBMWCgA7FiEEjWAJEv1C71NS043SL9cfRX73u4sFAmg9sV0CGwMFCwkIBwIC
IgIGFQoJCAsCBBYCAwECHgcCF4AACgkQL9cfRX73u4trEAD/Z/e5IU9+PyU0oSFT
tu9i2t2muFwrNdxsrkgATNJoJqEBAPGRo5apeOwH/8rqfOnK89AMUPPD9DS5Giqg
RPOT4/UOuDgEaD2xXRIKKwYBBAGXVQEFAQEHQKI0sArCldO4QoHZZNUDpk2e92WC
aJSpEpqaQ1ODqGVwAwEIB4h4BBgWCgAgFiEEjWAJEv1C71NS043SL9cfRX73u4sF
Amg9sV0CGwwACgkQL9cfRX73u4tnzQEA5+wX3G6uInM8rkMCGxaZ4/0gV30Kc2ye
1YqWNjZBgKUBAKLeSWj7VzdV/nZ/rgmrZx44pQxbsv5IYaZbYKxanuwD
=vPAd
-----END PGP PUBLIC KEY BLOCK-----

@ -124,18 +124,17 @@ function main(){
fi fi
# "anchor" for actions relevant to this script # "anchor" for actions relevant to this script
repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)" repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)"
# OPTIONS: ARGPARSING and VALIDATION # OPTIONS: ARGPARSING and VALIDATION
# assume location of script as running directly from repo with keys (instead of as a standalone packaged tool) # assume location of script as running directly from repo with keys (instead of as a standalone packaged tool)
keyfiles_dir="${repo_root}" keyfiles_dir="${repo_root}"
# assume location of secrets config file in pwd # dir containing .sops.yaml
sops_config_dir="" sops_config_dir=""
# path to group definitions # path to group definitions
groups_def_dir="${repo_root}/groups" groups_def_dir="${repo_root}/groups"
# optional:
opt_list_groups=0 opt_list_groups=0
# optional: specify "groups"
groups_list=() groups_list=()
# optional: secrets files to be updated opt_find_secrets=0
secrets_file_list=() secrets_file_list=()
while (( $# >= 1 ));do while (( $# >= 1 ));do
@ -151,6 +150,8 @@ function main(){
-lg|--list_groups) opt_list_groups=1 ;; -lg|--list_groups) opt_list_groups=1 ;;
# ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc # ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc
-g|--group) groups_list+=( "${2}" ); shift ;; -g|--group) groups_list+=( "${2}" ); shift ;;
# ARGS: [optional] update all "secrets.yaml" files found below .sops.yaml location
-f|--find_secrets) opt_find_secrets=1;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
-s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;; -s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
@ -184,12 +185,22 @@ function main(){
# locate appropriate sops config if default assumption not found # locate appropriate sops config if default assumption not found
# dev note: '2> /dev/null' to disable debug output # dev note: '2> /dev/null' to disable debug output
sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)" sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)"
sops_config_dir="$(dirname "${sops_config}")"
fi fi
# Paths to Secrets Files
if [[ "${#secrets_file_list[@]}" != "0" ]]; then if [[ "${#secrets_file_list[@]}" != "0" ]]; then
for secrets_file in "${secrets_file_list[@]}"; do for secrets_file in "${secrets_file_list[@]}"; do
test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1) test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1)
done done
fi fi
if [[ "${opt_find_secrets}" -eq 1 ]]; then
# DEV NOTE: this is far too complicated
# loop through find, src: https://stackoverflow.com/questions/9612090/how-to-loop-through-file-names-returned-by-find
while IFS= read -r -d $'\0'; do
secrets_file_list+=("${REPLY}")
done < <( find "${sops_config_dir}" -name secrets.yaml -print0 )
fi
# /VALIDATE INPUTS # /VALIDATE INPUTS
# /OPTIONS: ARGPARSING and VALIDATION # /OPTIONS: ARGPARSING and VALIDATION

@ -0,0 +1,14 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9LiixYJKwYBBAHaRw8BAQdAo9TZ7FbNytrM9Odrm1fg4SV3AurPr6B4Z6wT
bYmc0Iu0NUNocmlzdG9zIEFkYWxpcyAoR1BHIEtleXMpIDxjaHJpc3Rvcy5hZGFs
aXNAbmV0Z28uZGU+iJMEExYKADsWIQT38yjw5JWOTHhZd+I7iqC6q62v5AUCZ9Li
iwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRA7iqC6q62v5JTTAP0R
ME/a4n1TkA7QtUc06KEhdYPld8T3udBusk67jWLGMQEA/niJGzcmoSbNDGvC6hLi
fw9ZlohBFItF8Dur/mLPWgS4OARn0uKLEgorBgEEAZdVAQUBAQdArq2uimWJutt0
DsCEPAwlirHZI476ks1eNr8n3RTzbhEDAQgHiHgEGBYKACAWIQT38yjw5JWOTHhZ
d+I7iqC6q62v5AUCZ9LiiwIbDAAKCRA7iqC6q62v5KgjAP9Q/dfkGy0/9cKJsmPD
emKfbZbQ8FrNX70+oYMGxjV3WwEAyol9yD1pJSt1g3R9/oHo7/KW5ZsXbVIx/Vqc
uskiLgA=
=sg0j
-----END PGP PUBLIC KEY BLOCK-----

@ -1,52 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGJWv54BEADYY6n9rrteddJ99h3erlB3pgJV+ixR7Qb/sCRFiMGcEV9PLiZr mDMEaEBF9xYJKwYBBAHaRw8BAQdA6syYUNOSScarxQGom8QcmY/yaK+OWhAQ68IY
8vkRlrRORaIxFXa/xnYrQ12oPbXjWDajp389W7pRHTgw3gCKRVk8eb1rwT9ZbE/U dj7KxzW0JENsYXVzIFBhZXRvdyA8Y2xhdXMucGFldG93QG5ldGdvLmRlPoiQBBMW
trAL7ug7C+hPPkqiByHBbJ9mSfU1SrnLCAO8QFP0SXn6BVB6qSpouuorgZKwwjMm CgA4FiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwMFCwkIBwIGFQoJCAsC
Bef5Qgb9RfcrCoGQV/ks8za/aPUOuqxhyEm6bmys0jy5UhkYEvvT/RIZFD/mpv/P BBYCAwECHgECF4AACgkQNDzxIYpmTTHvVQEAi2IabzcpNK6ZBmsP2NL52oXhY4iM
hSOZNhQ2Job1PQgaIsM5KH7HpxOjZSjaPeA/buhyFTKCkAd474BHUWIAVxD65Kx3 bzDEtJul0E/hcvEA/3cPIZ9lIB8WeA6SK8nAgV5AlxGXsCdHsv55A2F/vDEIuDgE
n8pWIgbdd6kPgEOCycVx1SyNfdwz7WRINKZlTc3lJYLFy72xzhs0w4W85ssxB8mQ aEBF9xIKKwYBBAGXVQEFAQEHQNGjADOks0AjX4qlQ3xgSOP0RBIELjqYBH/Ihiwf
jwjoauMTGV+dqgsnqBIbDpYE16avUvS988vLicXhZb+dz8jmwxqBojwxGi/IvhLv eQ9ZAwEIB4h4BBgWCgAgFiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwwA
8x+2RD4ZZt3BpEnGI7JRN4FBpAK/kFGWbLKFgJZa+7cGfmC40zfTDqNdegukjtt0 CgkQNDzxIYpmTTFyOQEArR4vKYPP9cD6Plsn0pK4hONApCEHRKGC0d3JtUkZvJAB
puz5X64kJMGQ8ZucmG5x8fgW9qZv7bDZUXVDWIz2QynUxmDuGjzXyTIYlp9DJyQL ALaWq4tjsPm4wF6D9RMN9tCuPPVtt/FbGzVBlm3OP2sL
bRCv4PaNkp0CBELteswuIafKncnSfBsb6fIHjXexpt9ujztqGn6sIket2jmfCdOn =PsTc
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
1vC99G5EtuXL1U37Qp8Kug==
=vm8K
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,51 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=++7P
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,14 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9Lk+hYJKwYBBAHaRw8BAQdAAImByKSkf+XTHj9o6BareP+aIhkTz1KV+4ZI
AsSgv/u0OURhcnlsIFNhdWVyLU5ldW1hbm4gKFNPUFMpIDxkYXJ5bC5zYXVlci1u
ZXVtYW5uQG5ldGdvLmRlPoiTBBMWCgA7FiEEAUMBn2JGntWmoBbCGcp2TTdZD58F
AmfS5PoCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQGcp2TTdZD5/T
6gEAkVq5UnUPs6poLj2Tdqzlj13wToRpP3WFmDaa4mB9uM0A/1Yfde+hFFKIWPFR
hnfXeBH7HLHLC6EC7U58B8P8/aELuDgEZ9Lk+hIKKwYBBAGXVQEFAQEHQJZ2QRYW
XQ6N/wtLePHyafLb+D4wW4Di5SwoO2P/RwVZAwEIB4h4BBgWCgAgFiEEAUMBn2JG
ntWmoBbCGcp2TTdZD58FAmfS5PoCGwwACgkQGcp2TTdZD5939AD/U1HH5hOyo5n7
660ZFL5PoZpm9yxPwAUPa+Mp63QR/IQA/RNlBVGaCRlgWsPa7COo6n7yc0XfB6bi
on9JkIJgK0oB
=PxAk
-----END PGP PUBLIC KEY BLOCK-----

@ -1 +0,0 @@
../../lee.watson@netgo.de.gpg.pub

@ -1 +0,0 @@
../../smardigo_automation_poc_workload01.gpg.pub

@ -1 +0,0 @@
../../smardigo_automation_qa.gpg.pub

@ -1 +0,0 @@
../../smardigo_automation_qanso.gpg.pub

@ -1 +0,0 @@
../../smardigo_automation_rancher_poc.gpg.pub

@ -1 +0,0 @@
../../smardigo_automation_sspdev.gpg.pub

@ -0,0 +1 @@
../../christos.adalis@netgo.de.gpg.pub

@ -0,0 +1 @@
../../daryl.sauer-neumann@netgo.de.gpg.pub

@ -1 +0,0 @@
../../kevin.bauske@netgo.de.gpg.pub

@ -1 +0,0 @@
../../lee.watson@netgo.de.gpg.pub

@ -1,41 +1,14 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGUf5j4BDADSd88HFIDGQseOiuJ2TXkqGZE//VDJFcXLQrbwTQaZXSLPkVc9 mDMEaPiOmBYJKwYBBAHaRw8BAQdAgwGFW1hsK88TTcY4Iw8GZSVAknR0iRKnOZL3
mZeTKbaEup4H0TYIR6cIUGEuBKRNXvxFJeriurC6jiy/ThNwW2tfRdSGxjyfjRro J+cp2fu0KUphbiBKYW50emVuIChzb3BzKSA8amFuLmphbnR6ZW5AbmV0Z28uZGU+
xcUWIogg24dOikoCb7QS3lCt/cAU4qEwmjFKX5Oqjg/ZdN+ODUlxl2pbLeDez93r iJkEExYKAEEWIQS5LdybkIvzkXdY0ihEbFHgSa44ygUCaPiOmAIbAwUJA8JnAAUL
X/eBEFLFxPIZIRn36GNL1M6b/nSNkhMUfV/Z+O8NUP3NoU/bNsiFyJy07zlPLap6 CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBEbFHgSa44yphwAQDIKCvEYJ2x
xBRyBnn7zCAnuMGtvUcPVr9IpSc1AOHmMVBvhV8UpYhAX3+Mz+0WuaFRABMmkXOm gd8QClL31SGpD2/5fJ4x/9cXa2pwmcPo4AD/dWYsVwX6iisiE46U2IIsL7ojDa2J
XoO++6jVYwXh6b4ugsF3OtAJ+NYnbF4jWEqiGjVNbGEX1ikRMxlgFwM28VMNXc04 IYJPrb/HrL8w2Ay4OARo+I6YEgorBgEEAZdVAQUBAQdA9qvcdBmc2TvcReuAu3YA
FduQAArBRmsC5IFL6OoO9Ybx6y8eJ7/NVo/3ry6adnCUizzQTwSFn/iguvFs8xKG ePpddYljq1L7ihWZDUWrtRMDAQgHiH4EGBYKACYWIQS5LdybkIvzkXdY0ihEbFHg
NBYHlKZLAuqvYYJdLE9Jvs8Hy/ERGNwphl741CEcWHWrLVRljIh2b343uAGIRdoT Sa44ygUCaPiOmAIbDAUJA8JnAAAKCRBEbFHgSa44yi14AQDPHLsJLjE7csjNPVGi
otCGA4wJMK4ePZcAEQEAAbQiSmFuIEphbnR6ZW4gPGphbi5qYW50emVuQG5ldGdv 9XUcfq54ScEc698xyuk8LFMSKAEA0dzeY7tnfGNr7m2jq3odopRmMo99Xaw5h4YA
LmRlPokB1wQTAQgAQRYhBLpjKJSNUBdfGWqrURHzJGA9Et1WBQJlH+Y+AhsDBQkD cQD/yQo=
wmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEBHzJGA9Et1WL0UL/1si =rCLM
cI0FMbC+H/zF2WRqNz4LcjV8SG9oTzwdeMV1CWdL1DTkbrWxHlIPVlwYmegAlzo9
9lOJEKcNUwhfyui43cLVBMmL7LULPwCOu2r+DGtQhbqI6tjKz5gNYLiBsc718M8Y
V/V//EcWTtG2uJFQ/Axq79r/HZXZ0/J8P9UXN5aVJXkhhJxZZn8QtcUblnKAyykz
QFac3m0b3SayPRSEVfDszOzrc2bFZiwav6dVBIyBpf9qrCChEAIpzqLzf7pxvWz9
VO7MzQaYYX3g4clkId1sCGPhYQuzdyCSVVyLFeGtFFnk/JeA7Bg3xaKC/aYSpaSZ
qFaXhDv2+pQ9MzYnSZ+i8IhBi7k3lLJbzDWTV0SJLvxoUIpyNL9ezwV7xweWRjQV
9XLCearZPoWxaAOqC8+YOG6FYtIW5pbVQ4j59FZz0UexD+kZHFV5TrZX0EYLkzrh
n/ZXEsMhCtok6eqyNe9DgRYnIH0QMHOSZf807D35R/zUzBwnOOtnmfxRwtksrbkB
jQRlH+Y+AQwArPtb+qWExEMBtUcsfq0P6+BDaJHcdP+PPb3Oa8plmDjRjTf7Exsm
KwQTGRZbYRlNFfh8072TSiu5rhNLyCfY0a79DPk2r1r3i4czx2x+m2m7ao0ZsOzE
tkdejlqxi9TIjWhxdSJHHcizeh1tOJU7TZhG04CW8bRtS02L4hCO7JKq+KTZm4Qk
IE0xaO0qDxnpmosK1jQmiURFHprOl2ozJ9HqeUjfSi93baxcVzrbbBbd+OM7JU4d
+cokhvTQdPPRhaUz5i6wJm2mFkjwr308SgzLsohF7Q0tP+wY7rsSeOscxo8sRuXc
DRpx1aJ6gLZmB2bPjqR0p9kpJy448x4KOBBXkKVFNzvRuG4oZ8SPO1DnP9CroHoO
0l+4NWCrHj7EWaj7mgLyNbJjkKULjwpjTsg3nWJj8QrISQa7ejZxVU96Kyk5WGEK
gvZz3/Eocrn+D2vFd0GOEN1qSxEaBLkynsTLaj4+7cm3V/QUZyrIuUjtYyhL5U/+
HeiZSaM5Mk99ABEBAAGJAbwEGAEIACYWIQS6YyiUjVAXXxlqq1ER8yRgPRLdVgUC
ZR/mPgIbDAUJA8JnAAAKCRAR8yRgPRLdVmnxC/9IntQx0YGcLlIXNEIsTE6Q99Gz
TWuTGq5dZCKxuRoT1V5Tmj9zJ7hS3qS+jK+gQKucecMWHogyHJmJjr9OY5A2E3yg
fL4qr1ZrN4i5ozTKd6r19CkU8YupjexKQ4pwSwaj6ovtjr42XmMXTyZhRx02XNvB
cj6Yavr/+586+MKINSfTEFoat74cyUM/SnORkQB+Z+XEPVnqN+gk5nbq1v72mdWV
ooEKvlXu4samcaJaGSYHGH2WXWwsJ0mnA00AhshwC9i+6RCcJTieHIngtTfQRQ+1
joR8eMvLQTj09Nt5PodcjfQ2jxBKtnQTcyssV1V/Jf/tsAa1pP1unTDHfOOphAXf
MZyhszMs7816JcAwtulz+LAq3QO2Ogp4oVE0dKk7vyIJ0hCtRtDDl6t94DjDSzUl
U91KMpm3KZiXSTuBEVuZuU/GCKmQ5OyVKWMTzLlBHvp96oj8+WsJzTkuJwBHWFmZ
uiK1kd08gp9i56uy5tkQtYJGpcsRNJNSnyAbEcM=
=4tfB
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaBTWbhYJKwYBBAHaRw8BAQdAkvaY0BFbzEITBsCR3A8JnjrWZ/4orlFY7Ixe
aUSE/de0Hkt5cmEgS2VyeiA8a3lyYS5rZXJ6QG5ldGdvLmRlPoiTBBMWCgA7FiEE
u6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwMFCwkIBwICIgIGFQoJCAsCBBYC
AwECHgcCF4AACgkQPShOpyX5VS5KCAEA5Fc+i9r1+xVRKqlf+XqX6PT1uhWKyrR4
+p6D0Q8/aCcA+wSuUcrwSNTcxfKF65wKyuOiNw5lWTTYq8vcwjIDYgUIuDgEaBTW
bhIKKwYBBAGXVQEFAQEHQBddu45Nfx+u3scccplH1OBLxSeOn6nKiSyVrrd8ySII
AwEIB4h4BBgWCgAgFiEEu6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwwACgkQ
PShOpyX5VS4XpQD+JFrljM9ywUV17RjxZQEWpvviHGnWXYiayy/LbULb0M0A/iba
nN8E8ow17zqpng5Jqm7a/IYy8yQsNB0FYf6ddMMC
=FqJe
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,14 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ/fhOxYJKwYBBAHaRw8BAQdAu8VIhoCmqQSnlln72LVE2sW5cE5GS84pxwyh
HMbdeUm0Pm5zby1hZHAtbWdtdCAobnNvLWFkcC1tZ210IGdwZyBrZXkpIDxOU08t
VGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQSStkvV+zaOVwy5b4nKfQzD
RUpClAUCZ/fhOwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRDKfQzD
RUpClLG8AQCv3LTFvw+SzZWa0sLnvahtSR8wIpNw52+qelWDwaMYmwD+N7KhqarI
V6+TWJu9uxpc+RWk/vjlTGDchPeDoCs+xQ24OARn9+E7EgorBgEEAZdVAQUBAQdA
g8dAmTCmmnYBBqPlZDS+FMUpWMhAvCVUfmYai+ZHDQoDAQgHiHgEGBYKACAWIQSS
tkvV+zaOVwy5b4nKfQzDRUpClAUCZ/fhOwIbDAAKCRDKfQzDRUpClDChAQDI0wF7
PGDmqbGOXVKv0uPbTTLhu7oXiBq//blhkhCrjwD8Du/aEdCYoz9m6tobA01sKU+4
Gt1e4njTYlntGDL2kwo=
=hFQO
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,14 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaJMgXRYJKwYBBAHaRw8BAQdAE6GbHO8yvEW3377zNntvGCj5lJJ1l0h5Bk/6
+cKgWJ20RG5zby1hZHAtc3RhZ2luZyAobnNvLWFkcC1zdGFnaW5nIGdwZyBrZXkp
IDxOU08tVGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQTJA8BGoGPfv49B
xldrJs9JaBKwCgUCaJMgXQIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRBrJs9JaBKwCvYpAQDWvMMhe+v3nIttUfEpln+8YQ8KSezLiCpJLQB4o5zt5QD9
Eo/ZIFriX11Y5yxnEjoFkH1LXEj66oGpMTjTojLpaA24OARokyBdEgorBgEEAZdV
AQUBAQdAuvufjrlZjxi5bpQ4MrR/Mk6qxPqU8MFQUc2Df+/alUwDAQgHiHgEGBYK
ACAWIQTJA8BGoGPfv49BxldrJs9JaBKwCgUCaJMgXQIbDAAKCRBrJs9JaBKwCloU
AP4vOcXLiHQ2nkbSm6CeP//0GX0WpsxMniOlqVxkZM5J+gEAu+IulrGA6fNrKNiv
cHh/X5eSsexomJXmxZ8dUOOhFw4=
=sfF9
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaPtbMxYJKwYBBAHaRw8BAQdArKya+q6E/VlCAURWAj3Ggnia56yVrWSE7Jdp
cefGole0HW5zby1hZHAtdGF4IDxkZXZvcHNAbmV0Z28uZGU+iJMEExYKADsWIQSR
K9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbAwULCQgHAgIiAgYVCgkICwIEFgID
AQIeBwIXgAAKCRCTy+xZ+yN5eS4hAPsG/JbybnexMPfb7gsIiqSheeTvrGQnU1bO
2Ouz6e0FcwEAgQKoO2dbkM3/webS1F7zX0p0o1XZMW1ecHesTvQF6AW4OARo+1sz
EgorBgEEAZdVAQUBAQdA70MTcqVm07fe5cZGkR3evSc0yVRM/7WlVmS3N1JRER0D
AQgHiHgEGBYKACAWIQSRK9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbDAAKCRCT
y+xZ+yN5eRveAP49bhetFkuylYLcgEPKIWZom/0clG96YVUIvsCi42SeBQEA4CrN
JEoxwAR/oN1gcCbN2g2fqmirO1PbEQ4yPTLYVwk=
=yjPi
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGhvkHYBDAC6VQNRQDMlSOiUfArW3UpV0RWKZUnX2VduE+jritCe66NuC5ad
ysyaLPV5jk5X8Zgm2/HQtXGe3usOWNOuyvYGKmaFHcy0ev1UKnV4BStvMIbAbled
nx0z1eFUS0S8p137OOZCE38dy6ZmaluvYZUywKTHFb7kR0/RkUk77cRMw1K1990m
2oWt1A1aL5gshLxIiBFxQyZKwLwXuWIN0c4ivxGfBuJSdK3ekMm617vJXBhmwiqh
KZ6NsXrfZSW3dRSIff71l/qMjRv9eo3rYapIc2Br8x0a0fZYKqbvgt903tUii7iq
W59YeEDH3kWyX4EC+zMPGeG0orJRNe3fdk3ShU0cHsaTV1HBkzsHdvBWnDRlauOL
A0cbkvbXAYsqkNNXaCSvN4IjijbJCU+T+BN5EStVlqIo2SelyFnfDnZPGUN3MIUB
TVD8dA/CiOE402yPp15wPLwPOIiXzDRtmeMEa0VYs113E3WaRpsyIiDZbxVxrVPr
jZKUoD+0AH1BqP8AEQEAAbQgVGhpIE5ndXllbiA8dGhpLm5ndXllbkBuZXRnby5k
ZT6JAc4EEwEIADgWIQQ1EdGlt7Ksl7rorz7nWBaMAAN1zgUCaG+QdgIbAwULCQgH
AgYVCgkICwIEFgIDAQIeAQIXgAAKCRDnWBaMAAN1zhrcC/46P4UJLH7kYGjWf+LD
WDRVIE8FeBGDhpn1RfntXSZp3nThTj7xuUm9kSBq+2W88dW42f1PoO36FodTC5qz
Fmr3217DLFQnyg5Lii65x4yeBo6WQwkwt+k/1AOzSw6VN6tY3+4OL4QiOVFYD1RH
NxYpyJZHqgR22H1puxdFB6WTj3GFRnCcZ7x9QluQq8POzVVlnpPQNYKbCAofAoa/
fQY/eLAQzvACLyuFWHr+yvjrFjVCATKNC3EzsA6c7U+KCl2QsKnH4OZCWEvS0+4+
KmlnJITCWfnpaSfqkzAIphZ9yG4ZMgboELSnoXAMrcQgdtmN2f2Ierf0t2/Ejk+u
3dkRB/1T3FcKTvBwgx9EMQejEEmHBBhaZtW4E1fM6zOFRbyZTbxxERNj1tD652DO
LIcEUEkTQPqDYOmsROd1SqNN/1IP1sQzikkyflkL2o0PbgkzVcP+Y/Pv/wg8cCQK
I3ydXpKEppDHSXNx9rk2QOwP45h8khToDfcLgLSD6YiY6Oq5AY0EaG+QdgEMALsT
mGXVgXWm4xtTYn4YIsJRQCx4w+g7wxqY9WO1aSCDAd6yISyW3RUo+ApKHQdC+H8y
lBBiZ7s8JHzGB2J1yivGxjTwzHEWgZ+lC477HjDXQlvgkPFWL2n6N0K1MWVouZAb
wUnqQ06zfWMfAJzTmbWSM/AI1oa82hivgURc78diUpiOWzIXCFI18iDXZ4fBUTB5
wsGpttv8Av0DaqV5KlajvYRC5BY+wP6icPnlng7/f9qZhJJ5mtlhZOrcTnKF2J1m
VGXWw1Y3wfM1Ykx6LgBoBJzk1Mf64BP4YCsuRhB4bdo7RPLQcbcajGlIwVzqyqGT
/opNPIjIH+IDLlcSK4f5UPQ9mzpNlHIV+K8tgIEbsI78LzHgCUpPJsOaTuoQ7KuM
Q4Sq28dk0V8pRYPTWZs6nK39wdZUJr/PrzdSPfzttJ0Xljtqi6husfUJvMVIxhzI
/M0VZrs03N/LDBI4m60iSYshRlgk6ZJ95hqHN0adw076TLzNp8zTdlH3AnudSQAR
AQABiQG2BBgBCAAgFiEENRHRpbeyrJe66K8+51gWjAADdc4FAmhvkHYCGwwACgkQ
51gWjAADdc72vAv+M55EDGhW/4Mp7AZ4uSjoO1JUNUTReIfOGkEGs88fy4SwrI5Y
irT4EL1CvAC8UJMHoDrqd2yyBGEFtddnKbe8KhuNvuxvGgYSK34kaxRGCevgbHK3
Q/xuvDRI6TKnGmvWfcWbe1vLepqOHsbCJolcDdlyylfCOHuBgOoTLnfR7A5M1hSF
9Zf+Et9Ph3YSes6e7SiDNKFcjWMpqxsiX+I/qdfHm5LRAKsla57TCZtKr+hI4MuQ
Phwrrvjf+iQ6zGyEMbvpLDxHa8gZGjCGDaUaFbMD1GdkLs1oZncFxmY+xdxHKAoB
bo/9M6g3gjdn0SA7Ve4jI46xZ8lYPB0a4Op8wfZV9XPWC90+5eSauqVnYgkXYnwl
UxlT2tr8pvxKO9j0Bh5Ufwl7+ITQRFvO0HjDqP0JOQwHQs50/Ckc95PDKzPF0K3a
25eLde8KsRf4fPNn1NOk48TnNZ3h3BXj4Z+Nbpoj1IEqS3tcMISafgK2lfvOTz9k
4hXDgcudtCquYStf
=oxRT
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,42 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
omEOA9Ja52BBiAbwxNXX5zJr5wq9xAc=
=vKTw
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
JhujuU9eIqCXYO4i3GW2OMo=
=cYe4
-----END PGP PUBLIC KEY BLOCK-----

@ -6,32 +6,32 @@
# A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de> # A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de> # C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de> # 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de>
# 98235A419EA3586BFF4E3FC692D4A5202A0D9519 | autom | poc-workload01 (poc-workload01 gpg key for sops) <NSO-Team-DevOps@netgo.de> # C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# C903C046A063DFBF8F41C6576B26CF496812B00A | autom | nso-adp-staging (nso-adp-staging gpg key) <NSO-Team-DevOps@netgo.de>
# E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de> # E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de>
# 890B2EB48F343D4C6DB9DA0916826F30002D3C1D | autom | smardigo automation QA (smardigo automation QA) <NSO-Team-DevOps@netgo.de>
# 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36 | autom | smardigo automation QANSO (smardigo automation QANSO) <NSO-Team-DevOps@netgo.de>
# 42AA7F6BF795490C1A522C730ED842BE1216E0C1 | autom | rancher-poc <NSO-Team-DevOps@netgo.de>
# B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de> # B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de>
# DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de> # DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de>
# AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de> # AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de>
# 5623CCAD4242CC3E0225A62986AF09C173781578 | autom | smardigo automation SSPDEV <NSO-Team-DevOps@netgo.de> # 43DE8A01ABD706717C36018C48C47C125C022F29 | human | andreas.rother <andreas.rother@netgo.de>
# 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de> # 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de>
# 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de> # 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de>
# 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 | human | Claus Paetow (Firmenadresse) <claus.paetow@netgo.de> # F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 | human | Christos Adalis (GPG Keys) <christos.adalis@netgo.de>
# 03ADBCD31737EB474A4BD235CE615FAF927A2054 | human | Esther Fuhrmann (GPG Key for SOPS) <esther.fuhrmann@netgo.de> # 659FDED43DE155FB772A339B343CF1218A664D31 | human | Claus Paetow <claus.paetow@netgo.de>
# 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 | human | Hans-Peter Wissenbach <ext.hans-peter.wissenbach@netgo.de> # 93593B8B0B7B88EA2DCC99F9388B6A662C356822 | human | Daniel Risse <daniel.risse@netgo.de>
# 0143019F62469ED5A6A016C219CA764D37590F9F | human | Daryl Sauer-Neumann (SOPS) <daryl.sauer-neumann@netgo.de>
# 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de> # 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de>
# 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de> # 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de>
# BA6328948D50175F196AAB5111F324603D12DD56 | human | Jan Jantzen <jan.jantzen@netgo.de> # B92DDC9B908BF3917758D228446C51E049AE38CA | human | Jan Jantzen (sops) <jan.jantzen@netgo.de>
# B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de> # B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de>
# C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de> # C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de>
# 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de> # 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de>
# BF3D5CEA36DB58AAE1063D0BB341078652D87924 | human | Lee Watson (dies ist mein schluessel, es gibt viele ähnliche, aber diese ist meins) <lee.watson@netgo.de> # BBA0C26647A2D87ABA186D6F3D284EA725F9552E | human | Kyra Kerz <kyra.kerz@netgo.de>
# 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de> # 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de>
# 13E169CF5C35EF164628764AAA2EECBDE0B38CF7 | human | Philipp Eichhorn <philipp.eichhorn@netgo.de> # 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE | human | Thi Nguyen <thi.nguyen@netgo.de>
# 13D7771BDE5241293F3EDA442AB3335ECC93DDDC | human | Sebastian Schröder <sebastian.schroeder@netgo.de>
# 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de> # 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de>
# BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 | human | Tobias Plöger <tobias.ploeger@netgo.de>
# 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de> # 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# D667348F310C57655FCE5D4EA689FF232FD681F0 | human | Ulf Fischer <ulf.fischer@netgo.de>
# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys # keys in https://git.dev-at.de/smardigo-hetzner/communication-keys
creation_rules: creation_rules:
# list of keys for encryption in stage # list of keys for encryption in stage
@ -41,29 +41,29 @@ creation_rules:
A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439, A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8, C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
0E8955A79FF4687A3ACF78E50B5E444C75867E58, 0E8955A79FF4687A3ACF78E50B5E444C75867E58,
98235A419EA3586BFF4E3FC692D4A5202A0D9519, C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
C903C046A063DFBF8F41C6576B26CF496812B00A,
E5B4FE1E0209DFFE320D2A2E47087747D89B72EC, E5B4FE1E0209DFFE320D2A2E47087747D89B72EC,
890B2EB48F343D4C6DB9DA0916826F30002D3C1D,
4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36,
42AA7F6BF795490C1A522C730ED842BE1216E0C1,
B4BAA59056DC362809388F3F2119881095EA7DED, B4BAA59056DC362809388F3F2119881095EA7DED,
DF977A1F65999F4CDD721A27516F64D5932B8AD9, DF977A1F65999F4CDD721A27516F64D5932B8AD9,
AC9B0DB590F4AE2017C2AD836113AEB66C510C3F, AC9B0DB590F4AE2017C2AD836113AEB66C510C3F,
5623CCAD4242CC3E0225A62986AF09C173781578, 43DE8A01ABD706717C36018C48C47C125C022F29,
1EBAE111F6EAE0CF136358E8625C5A3B8DA21485, 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485,
9F5341688D2F9024A15541C9E02949D0F7769E2C, 9F5341688D2F9024A15541C9E02949D0F7769E2C,
17B8FDF68AC123EB666934B17D0DF6EC048A5D77, F7F328F0E4958E4C785977E23B8AA0BAABADAFE4,
03ADBCD31737EB474A4BD235CE615FAF927A2054, 659FDED43DE155FB772A339B343CF1218A664D31,
04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487, 93593B8B0B7B88EA2DCC99F9388B6A662C356822,
0143019F62469ED5A6A016C219CA764D37590F9F,
9E561083EACDE14694C73A323A2F6C1D153D753F, 9E561083EACDE14694C73A323A2F6C1D153D753F,
9F08DA9D42379AFE6610E9E615CCEC6801DBA02E, 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E,
BA6328948D50175F196AAB5111F324603D12DD56, B92DDC9B908BF3917758D228446C51E049AE38CA,
B643A5D780A01F24E95AA100DE6F8E2C149C3748, B643A5D780A01F24E95AA100DE6F8E2C149C3748,
C19A7D807525CE24443CA9A49372E896B41FE700, C19A7D807525CE24443CA9A49372E896B41FE700,
0DB51A7E90AC6418B7DB83724D38970874850C33, 0DB51A7E90AC6418B7DB83724D38970874850C33,
BF3D5CEA36DB58AAE1063D0BB341078652D87924, BBA0C26647A2D87ABA186D6F3D284EA725F9552E,
73C2C9954D1BC94DC6682525D2FA233B52AEC75C, 73C2C9954D1BC94DC6682525D2FA233B52AEC75C,
13E169CF5C35EF164628764AAA2EECBDE0B38CF7, 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE,
13D7771BDE5241293F3EDA442AB3335ECC93DDDC,
0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A, 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A,
57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5,
57F93F2A6585CF2DF9A3B31F13B9F45E122698D5,
D667348F310C57655FCE5D4EA689FF232FD681F0

@ -1,524 +1,498 @@
demo: demo:
credentials: credentials:
secret: ENC[AES256_GCM,data:m3uKjs2CMg==,iv:REr+W6QAcMXjC6kt4+U9W680N7NmOaPCbf5ZsL5v+GU=,tag:JTcpjBULW1tb6wYyQO1cWw==,type:str] secret: ENC[AES256_GCM,data:B5h1+zKRxQ==,iv:tFdKcG+3U9cwR/f8ubs1wm5p369R5dMEnH77aWt/K5M=,tag:WxWwgE05rWUaB7EOxnoGbQ==,type:str]
sops: sops:
kms: [] lastmodified: "2025-10-22T08:32:25Z"
gcp_kms: [] mac: ENC[AES256_GCM,data:ByW+jdHSeU3hRj5xvyujFoi38QQBNVUgMHvm4j1kC6XTYbBVRTWccr3boKaRzi7b8sdKE3SA7lz77MVRpYeJXn3ZIf4NvHBxDJv7btGg3c0Lq+bWRsHS9tNFRH8bc96GTWUldKv+tdyGOC8KQ6DwJASFuM3km0t0JuRqY4w0Dj8=,iv:ICVeB4s3Zqsz2uL3Cs/mhNwheK9G3nu5kPE+iQQT5ic=,tag:JZMMvnQtNHfasHDrJOAsvw==,type:str]
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-30T16:32:18Z"
mac: ENC[AES256_GCM,data:DNsgx0KhSbgbCqqME9MUJxHQSt4vVc/C2xfkckwjhK5nb4dW1Bz3Y5wAzPlOkPPKp9YB70/q2spw8MKSiJgeujfqnogPtZ409lbi3/RyF/7WxnJM0KFxdrsQwxfOJdYjfXnXicW9CD6xYPn1+LUVVqnRDBXt4MIzc5AMqaXy8pQ=,iv:dhVa4Dig7E3fld2Y3upjw3/P87bV6/C2oGDBgqQYRVY=,tag:RA9qsnRNMnznkNBDkjssIw==,type:str]
pgp: pgp:
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA49EwzBHBfyRAQwA59rrxcceb6CV066UH5esTFaElafvGExF5nKTewi0lGMO hQGMA49EwzBHBfyRAQv7BsBjoNJanbWUWzFN1fTL6V8zfY2rS+LHqGbZlAMWt89K
vDKjzKSeDHv2GtitqDaxeTamFt7sZEiKV4XNowlRAY2lx9EN9JVgKGTg8ZEmo0nq qFutxRqjjo96Y1ESFTsr9Lqb5gO3WB2E4JTXqBsAMHdP1tGMj/MJpEjTsnY7Fugt
NpQW0fgaFNI/xqEd6ravF2Sr/UUUBsYDVl7j2cYIJT+ShHDCA97I7kEof6Z/fu0H y1sxcBHCQUWGNZI/z714yNSDokp9S78OVvThS5C5RKn6dkIMfZ6/+FWiAQaR9Bhl
6cLGuv0KA9wHVTj7+q/dBtXJUfyMBBE98GZde9lAJBvjDSa8I9/zm5gdrxtvOG2p u2u8sDSsAAXBEduNNavBCUvl9WudLu7+j9gdgI6MgdD3W/I12EHDL6aMJdaLmcn6
g6N7zV79WvZtE+pwNU8jQKqU6bVzFXNGMtRn6fo6ArUkFxmdzYe2KLHA9KzxVVDp ZxYSjojqqWfd85fxO9cGzz+mhfglhhRquSrM+nelTgLYNloLLFnol5qAnvCnr8+L
GCqofBtqYzLTxFNkfgpmvdMWhnrmLbDYJc/r4MsgZR4L5LrP/AFDTOHePcHeo1+I vM7jC+gj+Z5VqtRNmCm1JuGMQqQo4AficMgH6UlQ87k76sFKZN9b9pRNSCP1KQEp
/H6ZVluZ5QRdijvR68Uo7/j7OzIjSA8OCYPxPSpmUyr3MVGOwWnSDbGcHVu0sB34 b2OGAmIwSijdhXCPmOYodalwx8N2mt29myRnSWw21KJZ85Nr5xaaF5YUeiFSNnnP
8+3sHoguDfKO1NBFLJtoxknJxSEAph6OanNwGU/5tp3tunFfGryrgZgpVpheC0tP xW5YaVFiGwA9JltOnwTiE3JEHtfox1VNLSbLDEQCMeMLhE6jsciH0SWgzMJm2Xu+
iT7awd3982HxnwC7MJ1H0lEB+MT5H6i8t6Vba9jCl0KTY3+BGzc8rVOSJWsQcsIH nZ/IqdAGgDvaBV6fNcG10l4BZ16ZAWv/+9NGQWJ0dhasBxSUrFOY5MMLkCYq+BXO
LS8DuNh9YkF5bhXxtvLBQyAtATle0swu8oPHhM9fPwLHdy6+36lwW6H5v77tCY2/ 5FaJPSYCO662WSkoReUCFz2ZrhHG0RrREBp1hDJhnpcorSZoV8jWxyS2tY8MGb3f
a04= LCOG771hk3zlqnpgDhxO
=Rntn =VALa
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 533A89DD49FBCDA2BF014A936C962DD77704154A fp: 533A89DD49FBCDA2BF014A936C962DD77704154A
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DK0+AyNumsXsSAQdAMYFNwKZg8MrY0KlULLnfvFdVc/fuXsnYiahI2MYBu1Yw hQIMA/3nDyRfgQqhARAAopdmS/yGWhA3AFEbiVQJgxDRPGR1dC3xUob7o4DF+Nl2
6Tqaeqf5YCg08kRlDwugXpReiFFKsT1TpjMjLGQf3OxxM45LOE5cUkJoQCYHwRpH 8ma6E8klwWnmigUP9RyIFFWHqrMcapECJSi4eWzNdcd8XuWFeyaorWUqZrQc3TQq
0lEB2m8lED2E336NonUt3fOtvM5vaCS+ajfP320mQEPgEz7QbA2WrcIlat9OJED4 pNjh1B4snCuFwTuNNExH/ieW6YGPcNo/ykoHJTsWwGYwfHRQ996YbYHRtpOuxWVz
HrnssHzGtEFui9XUp2z5yv8aubkmJXlfP7clnrkY9KJ0MDA= vWLkdPu1cSPDmZk5dAyNh6XyBNpQIF30O5gCPLLsZTQDvjroCAKeChAKdsh9Jj/X
=kTMq zms+0wmRYd+KAm5oCReTtP2dRPYEa6MsmR+F9t+i2KuYBE6cm1/FsKjD3VvIONG5
-----END PGP MESSAGE----- cDV391FwOn1woU/oK/JTKMCgBk7ifIroMeVbLUFmln0HkJ4M4CV2WIKiui+XevXl
fp: EFBBBB131CF1D863005C18868C8C09CA950B1DFF ja9lMRyuh8vYETT8mFKWaUZwlvRtsp2ZDv1YahaSLpOniP/So1LnQsiGs9/um3k8
- created_at: "2025-03-04T17:44:07Z" 1siC94WZ0H1KeFgwy2tIjsvJfG59Z3EqmElZlxvH7q90oicrs/OWvO26htkzk7YU
enc: |- N2gwC3Hjqr0KReD/WniSidQsv1QYeEVQPv6z1WCPybEMviPPPyFRaJ3XmC+YiKhJ
-----BEGIN PGP MESSAGE----- k0C5jo5VAbm0kJYdNrml1LUtoN8PhEqyzOfRCOmr4cs4ndlIJLTz9j1Xvz73iXiD
0MNg8oFJSvYCmeqnGk4W8JdpCbNO0gqfFO2AMdecsejKcvN8I0ekgFrOSlgAKrvS
wcFMA/3nDyRfgQqhAQ/+IDo5diT1oTdYlbwxRbZKyrRWygNGLrWZjr1/KH1jnxzq XgE8Jh/Xbg4PhggxdwDjU710wzfpoLOHJuSQemZainrnYaqeAKrHeK8NrwMx8fa2
MCUY4Hba3Jvwhxj/Y9V1sQAPAjSG7eFNAWCtbo0UvJQtW6syUyUFBob8jyZXTZo1 q/NFG5ySZBDL8e+T1qEsLO3XkWwBeWlvo8A8sLRJEo07RjrVVT/TZwQa6OmeVEs=
cHWB2TRRr7rjyRxnw4Mug5DHfUUVK6CagXr0Fg+wvJQnluGbsE3Krrm8C8FSWdBo =4p4A
E0Y4nVmDWnwNWegTHbd6x3MlST09STLPLGnL1vNAEPgSz/5xswtKzFr83th7ebmm
Ojjhwz9KkYwgpFLhPlDQ4d0YwA1mwlAFKoe1vPjIcLNUTxDuzb3VIJxt5Gi9GKid
9PzgDQf6Gx5Dr3VRTLPQm4pT8HUjH0wNyY2vM6bQUnSQy/ztxdhiV2rq7m1YXc/E
3ry7gtkwxwsrfA6x3g9QiWKgf7XlCCWL8bwfXqOOpelsw1Y2czhbWh9qJmJJE+j7
N7b2EWrXYSaNsnbyptnq1+wInIzvBL1fAQsoqkwW0DdKaqdYnAsDmwHBYwUzmN45
O7K0C0EevlWOTxCYV259ZXCr4G631kqaSYTxVfGo7uO77uu4CfV/1SfqbmWEtSpD
jkLPA/7tlkfNlT4t3V0hCOiv0N7bn7qwMo1IHwL9plmgqAxOqRohDR486kb4RgJg
c1BsCQ0vzkYTl83+fN0AfmnfiD1eIr+YvHV89pAjA+k4H/e2IiIr4D3aoewJmQTS
UQGmD6DzVHnEz5KKQuejN7BLmDLuHojNY0YY9Q+JA0xN2mvYjMXSDMMqcoJA3z+e
KFmATIU9LsLezDStUiqE9j5mjpnJdb/zupMFvjz8RtpkgA==
=myeF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DuAaR73LFvScSAQdAsVQhCe2FnHzzNcznoNGXjjJmIVh61Wx0jYlWayHixW4w hF4DuAaR73LFvScSAQdAxxYDXShwKh/6W4ibLuZt7csqihqYHQKV2bkuo8RH31gw
My3BL/Bk4oDSxBfUQ28UWkFGUg1IPKu69lAc16rGyTq9RVYGRNl3ZTAUY53+Pp/w mP0wr6zffEUUUiYyrVx5f65WcKaI1a31nMCfJO+ttTMJ2kl2gVoEHx+7jSP+Tt1G
0lEBYxxw1Ohm4gsJpUbqDIV14v50qh+otssrJbbQ/Fe+rPFkzKGydRhOrUYLLWDj 1GgBCQIQmmC11YaJGJxUFgwnrOTJeVu5mzXOVWjCZRhkyrsyH0hXRY05egXZzMBT
QZruVU2YkHGU809lEW2jJHmcSlDVLUXO/6u9FBGZ1WSj+pA= DisTqzIIan1hT+u/35JMeujHe/LrEPyQlhtyaThjz0tfMPXSbEuiUiuuiV7YpiYZ
=w8U3 sX30U6j9Dsm7dg==
=08Mf
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA3LBDEB9lMmaAQ//dT6qK8f0CaddMWsNHvovjITEI9m+oFl7as/JnpFLnU+U hQIMA3LBDEB9lMmaAQ/6A6jPXX1l7J7dmAexDkvOuC2+8azrnM9u8smXbje/xESd
OUQs90dq292FUhVcOeWfPkllh7o9DI4JJYx50bCJOBxKcBTyDjmnsEK+QyB4Ezi/ pwYupQa4RYrSu3BUaNNfglysJVNLbw6ntJ7JZYrt6tbQv5/JVcMGzlRPTkfAugVl
bgDlUyVNFgj6YER4AJfx55jXO5vBQKjpyFQUAoTUVdeact3DF7VQNsWQop9avSfq 521Y5ohKmlYXN4jWb49d8/50JDxsmnZblqDv6qHKkvCmesveHRqif4gZGuBkXVdR
lY/1N3R2PG6HUDKsS4R/dKFbnlkbHD6zq6JA6mFy6HTbdlVUGPlwmfUoYoVTjgpx G/TaH8VKGfR6E+WJ8Utbfp1rBmvh0CZB9Mpnf+dKEF+cIPhUhCpQZttULLLwKVca
tpAOusp7xAlwm7k88g3PeXkSU2dyG+xBia03ySQlKw6UqbQZbshvTvLlfasDEsqN /C5obxQ3NBITqw1SzTHfmxn2oL/phGmwjXiDy0v6JQBMzDZ0C78YS3q4T4nkA30v
nVArwTeY940ZjJcoHGBU8YYg4uXi0TMSh7NfWachOXVEVroNwKZu30zJL29QyiJp gD4GswOHkR+EfppkSn0k7f4HxLaAMTFzut9B2BdrtZl4UWBNz6CTCf7YuFDBs7eP
cVQT2SOHLdI8X+Qf2NjIgqIABkwOubvoM35gWxqSgOsqJOTNlKc8tCcuvjy3KPvS Da9ZLzLGiml8rhzY4UJbmJ77zZBvMET3IYkMSayff2IxoHJNRSI4RQ1SSLC+yy1y
YoQSZb75/6T+kghPs4/UMzdpDbLsfftjpxdcnO+DT6ukk3M8lr22aQo6tqaQnFqB C2lcaC5OO8s0gT62gmfi5X/Ebngx06A9X08f0GowP2+KaWZJ+3Q3Q14DjAOtdH0T
U4+oxg2mmD26KOmir5ctl+qLMlUGaTni54BHxNwivgagkwTL0EgRsy08saZdnoh2 yrX2xoLNyXjhspYB9jFCuD9Ct9S23E4Mu00eoK3ABXmF3OqwwIV45HyWB3qbhdYJ
w4Ww2qwlsy2tnHXD41f8g9va/sluzd9NgbO+irSigQVKw1vVCanSXWpUoOPT5ahM xTDJmP/s3krRTcgiQD5yuHoNgkvAzptmvO9sgGuFHlI5y2vuQ853XjJmOJBfUy9r
lu0KCq9E3CDqHm7vGDNO7TDskKqVkCQ11C3ge19swHG+YvAW9uYONV9dPh/el7bS WONMbORPqvns4AqPce+UbU0Jib3olUU+BI19q8w2H46Xh1XmYHbMsNAXeKkyX9/U
UQEQ23+TsHgVkwLAilxel4hEiQ/giD+x2wInm8JV3mmLuLqBcB6oMzsgE37hxhsT aAEJAhCT1uQf5MbaPZRAQX4hTgW8mG/soN5wpOV9r1pqfgaZINtivwO9apOhr+CW
Khz8+UO4pgn6Cj1G//pyqVlwIqdSFrLJqfSF8unGvTqMbQ== MgQBk/zwHinI0mU7x7CJTlTDX6culH0kiFWeZCVxxjh3l2M1NIORyyHMf2tFQu/G
=1qti L3WICmtOWf54
=NaqF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58 fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DpyXAcYv7T/8SAQdA5zRWWv2VlGjv6HzyVLHyLU2dmBfXuMX8MN+iWecYHGAw hF4DuAaR73LFvScSAQdANY9s/4ZpJhJaCWVDPtlTo6Ob69MpP3ACFTFccOiIYk0w
N8MwLk/F5NBHyJiOCS2mGCSRZ9+so1m1DAt1SSJ7xvJ4hKRNL35X65hZG/SSba3U 1bSb7XRxjZ0YqWkBsmDattH9J/wg/isF3GJR8HIFRgHok+r0PscQR9xr8YlDxoZP
0lEBmC9MQZ9aOpVScVIe816vTn1GfVKtmakl08b+2WAIu5sY7faZqn/kCxlENyoZ 1GgBCQIQfdgQpU1ERezqyr0F7cqGEh6MwmhYz1hrnUEFWdB4c8iPhiR8mJZa9+j8
C48WgsgrAEeDLWL24Ka1EFrhSeTTpWG3qt43VbT+mzwHUNs= Ii8yEtmpZgAxvs4hR0JPdw4gDInIT6xre5ErJ3GSefvlug8WQ9cgSFMBf4DgelXQ
=i/wf u+8VrFR/sV7fcg==
=HIJK
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 98235A419EA3586BFF4E3FC692D4A5202A0D9519 fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA911WKxzIy2nAQ//X8lU72Gwrr8xJEf1s4ngqdStGJJC5zQyIWvrC2DdGDE2 hF4Dq7ZJnmCAxTASAQdAcoI0EFmwEAnlOgW3vI3+CzjI6tuCuLZ/L5LOIwMK+38w
6do8Y+PBKOyvYq+VhbVk2dxeCoBJKdm8kq+xpJYY0uYeai2QvTcgItUJR8Q37zmH KRjRd5n9WqNTrxwvyYLMP1kM0VzLXppgM+t/Fr4ObkySYxWStdiN9++EkpaKEEhl
LwjUnYAz5vz/ikmOiFlIfAcj93zKLXS5U/DHgAKiSMlMAiH8tRwV9cpgB8DcKYTs 1GgBCQIQMAboN3IjFtuQnT98NOVkTaRbWeOfi7IFnLL50yg/BsGNMnMIrBOF3WmO
WhWVyqPJfrxuG6zUMUfnjQYt8w+XI3niQm5T/xBBNtY33UMU7v09NSsACjHe0b9z ny3u2Nzl0//G6NS5sGe3+xoCxAz4gvQaaTPMsbOPpmdP/vQyZNzMhidNOx1fHgt3
e8a0O/NuIL5yEEjB08vmH75ENlRYTta/6J7gZsc+BVKDM8GtSMbj0apiYRjtcv5b u2vrYfnv7cQO4w==
o46eReMJpgs1k7zqN7THpif99BfzYthnlL+cO2EjRTd1ELx7pGON0YX1usLNlbOC =LzLZ
L7NgHMg9lt1fsU2xXxCCaAD4YpIFhQr8Gse3bDQmes9XldIGBA4+9O1kRbuYpQig
ezdlX8RPZJaBbexWb93KxbjK6qyBaJ2UJZxE+e3k7r9bRN6XqFSiGoxgpL8bJjMu
7XQlqI3EWS2Xl+VE6NJ+GV5xRAUTrKXTbU5u4NWBxtZZ4E+hFzDhLHAdMYJcHest
Fkqd3iRSu/G8yymvf44xQ7W6DQXaQYrLGOb+d3k91hOU2sBh7H6pw7zcwKp5a4Tg
C5fsvTaHBBWiHpT5B3qqTBmpfDLck2PwAjHRprhNZrQj4oLqPSrfdjzvViVBWKbS
UQGpPA57Dgf53AsObPp6+snyGUkCSOFcfy/CKJIJNRX1NrsfO4IWhWPCYduVfIMC
s4VC+Rh0EeoqAOrhRlsenYhzYE6Ku6WBx2yOayJqAkWgKg==
=UlLG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC fp: C903C046A063DFBF8F41C6576B26CF496812B00A
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA2Cr/drkb+8JAQ/+P30LCNnKXN/o/fzkcXPnXsyV85rcgHSF13722oDO8xTk hQIMA911WKxzIy2nARAAqDjWKUlpAHXCE7XtvfDJJZ3MqhC5Dq0SrnSQ4Sv6Nk+k
2SU/HdiBQ5hXu7F4Zg01314DW/CI4+jWt9gKbn255WnETYQhre+k1prKRSQ1HFYL pVz74k+vzPwQumi3MuOOQi8BH0IpiAd2ihWhcr+nu4GOUZ/Xo5OJv72t8qT3lFf0
qSkbaFoW1NM3+RoM1hUBojVJ26+APjwNqn/+nx3QSKsirgCUynvJTTI479bvY+vL Unp6Eg/UESilwQkHPhJQOOjHr0CIBxU4SkDBcLlVkOjfZMH/qXkSlOa9Wqi8Z7nw
S+DiSct1UYyqsZpmUDxLL/0ta60ekWzOaGMzBAaSmdlg9sSRslX1lZkicwLzSC/X P4XnUVCOqfRSoBe8sammriO2d9fjjbVy9m0VksR1R3TClpPv1uN3V8INvPhlC3Ml
0BfuBXLh/KvGlcAUh7dubFWeae3CT8oMIPHNdQLQZKFtfg10vgboZXsv+Zu0vE0P nqo3zLnkg3lAu28nVXgNb2s4PvmTQAHwhTXF1/nPEPBP1ilrA3amGcR4VcC1Svr8
wRxXfc+cz66NzKBuBDna2c1wTFOxzfJLd7jFBnHKavbFwGKQsumMNCOMGA6mP0yo dp4YfgWnzqzNuOP/4U4R56RbmvxEOan85CwFbHWuFpfzf0fWPs2l4LYgxB33MggW
Xt/4j/7NonwG7hHPTiCxlN3viVM8j52H3ExLwoaOhcLALzVaJbM66bLGFUI//T+J P+WF9rnSf+y8ph7HVwBnSG0WCmqyuQBnyImdUO/qi/0Zd4MpRMvDhtYNoDfHmph0
MjAfdl8ixtiqw0iVR4Zu2x6PeOuwbwuRUuRUMauBFHUKqi/l9QXpOQenySUlqU2w rWd77WQUsI9+r5dhLdtkBX6LluhO3FK/L4NnEVsc9M9Ve0nYtGpqunZb5T0VuPyW
nSDawTEW7pzHxwuC4KrAUdEOml7+VIyv3RSmLeIbRhhSm5DT6wcQrIPk24o87ujR 7NA+oEXqo3ZZoPvphkuCUNQUljmrFUPhlkTDB3A716LZ3nr5tRHm+iRrTfflgo89
enbiWDFLdqPUBostnwiz4D0AanzQpinb9WIr23kBI2OmTMvlwu0hlxALUQ/mTBwA i3m3uXKwVcTw7wFHCwrPI8imc77PLW+H/FjBs+3YX9rOTffFerdPwKobaxB/Fc+P
f/oKp6BJZBqyPyr6pZoiUPElgALh/83D4w4+xNxfjXTD7ZQSQSVYHQ3mFiW6CXrS Ep5nabvn9nzVfzgXh9dov8dajtPj1gkIE0heTkunXARcje8qNwsP6c6mYYAsDYXS
UQEzbFCPi0cz+PAeUynGtyVh+R5FQS72JaGFTqy5+ggaqyxowtgeGHz1X/hq6y7J XgHh5C81WdFJVQXTvuuONx10XZk4O22SFI9YOTQ3dWMpZSk0qoN1xgiCO+mvYiPR
IDCX4rNTx8DbQjoFtntJloMWcvfAiaVnYMr4ghgKRmoCiQ== fvIMbjihzdTsfKmIJtaR2BS7KkM6hshraGHtGMid9ly3n11dok4+dNMgsrqvqQA=
=ugtl =x41/
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 890B2EB48F343D4C6DB9DA0916826F30002D3C1D fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA3Zl11RyMNviAQ//fs7kWhDVa93Tm8BwbVBnAm1fl3SLT67hpOsFKgyPjEIk hQGMA5pTFdxsndstAQwAuvSwuGLSiTBmFA8rQbFiGYExh6x62ijw7pOaqOK3l4wd
4tNl0HRSzvFrMok/Hy2lIDOKilmM4/mBR55jdEgNN5JGK5GFOiF97j8KJr3YepH9 CnEKDBzGK2VjoKoLe0Kp1epMZcgLQhzF1qe7eKLnT11dI5jcYUO6mDzhq/38yWdg
BwVjsTSqR29bWol/fCJup22RGfVP08POEr5GXGYsbKnG7tkYbjyGITx53JdOo7rD g7NtoZRP4gIC+Xfj3+bhZBfhPt6tTGGw599P7gkXuOnDzeTip9FVysGRjeYm3Q8y
+ozkx6gHD31w1khMNXj17RvC288ilSnXKDdzT1QIRZf3pa30b7pb4wAaj8wiBJ9u fZNKuT/dhjEgMNZqh8RUFxcQExwiZ4UYWPQV3GsCXuJlvx7NRNhSbacFw+3+OQrX
vmv4pmpgcFRanvRlCjcSg08jX6I8i+iwIBEDvm4IA+i5/rfFeV+Ugbx1C5U9u+8M cimpFzIZQfz3nmEc21kBigCmF9IxSJhFANkPAoiTr/Kszki69z9+oZ/e8aod3flF
s1IAsdH9fHn4zTsEQgwZ+/dekDiw2HGTpsJqkhxjm2cI+N4h8TqD7jxuffbPeKJW ow6tVtjVDH26IiD/5FckBDJcibhw18ghrHh+XuMgzqBX+3pc3UHWRSag5FiA7QuC
USmMHoSMrjRNTERjHAFoumXLcFLw633kbeYnQSByfGHZJvfPBnMWA7TPxCjPHHF0 cPhUTFdLVC/tb2R4ci0ropUZ3/7Rdd2Lrn7Ccvw0aTaAb3KWxtqN97UaAbkPQYy/
Y+BJ24+7p3xr73etLP79P7Vc6THBG5q/3xHpztEv45ZleSzXYrgRDC/zoetk95c3 cNwwrVKGGfUGsZoTl7DGeZiP36tu38qLsEA3Wky7+zhwrqlDZPDePZyf4QHr1ZjM
FMdxUURHCiS4QwpeTMPFloV/XkKG7qhqVXrJEsd9Gf1QKG94Ep5mllbIhOfGX2yz sNZx6RDKfV8uhG8V/LRC0l4B8kXUYTmh8MVebNfEnINgzXyOkIjl+qe3SGAWl+sz
h/kzUD/+z8YD+IoUXFNSAnq+9HTxB3LzvZKSvTFH0zUIIwXPcFOoUymh8bJOdlGf cD1kpLyhuquxwzpNxi28kP+LAv6yM14pVY3tJZn3ZbZhfkV8i4/VF0Fgsp3RPige
AL6cy0WQ9lqoT0/ALCOrxQu0l4nfKM7RaPoJZHiqdntDr0gykpfNtIAY92nPug7S SmJHbw9iGMZLu/pbzapv
UQEgwnE690QBTnyOoNJrcvs8zipV8so2VGKxRARDtrbUedI40a3g3Vax5fTLPHWb =frF2
EU9sUde4Q6msevEmrTKFCzPe2zHSnq6pLEpNhLpIUiV9SA==
=P9Me
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36 fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4D0Z3mmZqL/KkSAQdAzv7oU9PEct/VghS6oZqKeqcTWIThBuSHzE9Lm1QGfSgw hF4DwvSwby3S138SAQdA0xD9js3d9JcZTJLGHuUZXtA3ot5LOjkqRd7u8/dfAE4w
KdBeR6DsZJv57zUw+OzGczxitJ0PaP6PuV76utXD/pJGp9ItDbYSQ+g7ILRf0z6v Zq+vAb89/DHUuKlLC3vMfpSStvtrSUnMBX1jcGjpG25j8yQQMHj2o8CeUBHXv2l2
0lEB0+p1MPajO8IqCKaU2cHndEb8zma7mexf5yTvrAjyfobGAB9WXWt0hF1OolnS 1GgBCQIQoKb+YHrlK9J77UMKq/05rO6GX8Ro/oG3WbtRw+Ap1roARUkQerjlxeS5
geCrg3U9Z9UMKGZ8FaqeKk9PcxeZpt54M8Xe/Cg/dKO12qk= wD5jUhO6IaxTNnRf+zddSoLyD6BWWusDyvAmf2h4+YFKAyc8q+x6Chdik1bQnLyL
=zj3E YQYEe62pU7JmMg==
=cyBZ
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 42AA7F6BF795490C1A522C730ED842BE1216E0C1 fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA5pTFdxsndstAQv/S3MAPxPFSkZWThwh/AgcsdWR4RSX/4FhJfKYUBVGef7U hF4D3RW6IFeToCoSAQdAYzjUM4IJtNT8mTr2eavs7asD3hIesRGtaaM4NixrL3kw
hNAQ4LI7KYrtPffapufL5DlfT6YY+lGuoBUumYQYB9WYeydjoreudy4kuWy5ReZH DaMd4Lw+G2b0T3kVwmrur9e61zj+qgHwLmReij97JfW+5ceB3uzl9ILii4BZDWko
qa2gB2nB7n/CRODPPDl1g4JCzlV0acCoHBC/AdDIhG4F46r+6zM4MM+yNuKOiMWx 0l4BOqi2wZcXuG7nwdLySPn1MnZ7KuEm3KXX03q8kxtS5qhPkOOiG6ZJNuK6RP5c
e4UmBHSwakKOylm6XwfuX4wD8vFo4+H215jvUIldKJgZ5fO/PnCuqlCeRaaH7nFl dcxsESmU/0O4Fxn9MbLYKDJWuMv1tpxwsR2zw1TcV04q8owIFGJDrtCs/+VA9Mjr
SxQ8GP7RGaHxKH2B3ranz4KnNoeHxF+LaBikXlq0tppk5vnta1LjLYJB5xRs9uOR =LmAl
TeN5/j3qnSnqcuv1KSgrBGYZcMYmjIMfTAsSYeV56Blbs4qA3O0IxRczbF68JLLx
pBYlbVcSpd8gJguifcgUXSUmUHTBDMpTRusQ4U4Ecf1oNR1sOPP1mZxmxDkQOrPR
Zuvi5KItTbjDhT3fTcSqpIIDGeo3v3xbmvSVxzyy+pU+uY0Wztv+C7W8yme6Tzsr
fwHIn9Bw6UcCyO0sRO3K0lEB8RYBarlE21GeX3YS46eX7Sn5/qpceTA15THqh2uj
/T5+OmH/CQ5j/oggKxctx6PS2D4XlyhG6eLTfBZAXnmsAl0LtAgeo9uMWCPG+K5l
jMs=
=X9dM
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B4BAA59056DC362809388F3F2119881095EA7DED fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DwvSwby3S138SAQdADSwT2HHeiE3R6m9m3Agfcfj1x6uYRkvovSDW1OKFZlow hQGMA3n4x8uRQRGSAQwAwgeiNm/1ezo/ZZZHaBJytZjVBoy0NKwZ4n6pAVEzoU9a
0Jv5Vr/59L4RnIanZ7zBS2/axzk0JDGzgURZFh+KSV4tGuGttLWnWlPrAFqLPmLK Hf4lomaBc7bL9aYEWKoUTmsa4UCGvSDaJVzhKLetKodG7wnxGW5yXYfS6WISGq4v
0lEBMbT9fjxCO3itbexnUmeOeBSCspJ+PlmTxzLp610Aq8Jjrx7at8I/wfk+EDgo Yc5bzDQrUbvIWibnTh1MyAhsac7gwq1Gnbh1opqNE0kgiFovcdwz2ab8/8foiwFF
8Th61Jt6qmsNDOrI/Yn4D9fSZzQyjORA4S8k0haZ0mbNl5g= d8ER8Zcyb0IeGt+2kRh/QjCanlyU92jwJOBzQVc+/nKIksWKUKYq6IcHOQgeoGKi
=kWN2 GgVHXXo19yukmykL6QeGAJi3lukH7+mqi6sgXp8Zh3E3wu03L8My1mXF3SJ1IpLs
ctp5JPHpQn3nVBsVvbkf9P+AvQsQOXKvaKgsZJ3O33wmz6AiiKY/FrUwlG4r8aEW
hhwAo/sLUYvcGzFJU92tDnskwsNAOPA8Pj0RB4E38JCsK9bwRiUqAKHRdfEeSefw
3mmML1Z6H7CCc76O6lCXjR8W79jMRwq/xE8BWMkB1XffFaRHOhllPBro8uR3Zol3
DYq9WSw8GoLGomwM+E7V1GgBCQIQz26PHsb5dysgZPrFwJqvcaFjMCcZKOOriFfj
14bMNJjAc8yHTkekSmblPuIJ3jwsSoFbTJQYTafIxZ4wrCk75rEGWEjIAaHjN9uw
VBSmK4pj1DliPK4D+OPBkMy15XZSA3yaXA==
=coc1
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9 fp: 43DE8A01ABD706717C36018C48C47C125C022F29
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4D3RW6IFeToCoSAQdAE/qpxjjka0byA0qRiMtvCc1flWMH4EWBMmxJSr24dmow hQGMAx5drVN5V7yDAQv+P/6LKdpEL2yWkParQsGIIaqju5T5/iaAvecngHA4FBIo
dyPYx4SALJve0C4X50hs8WTDFj9bdlVBAUi6ros42XgjUq0omiNcCNMNLNliXIre zUduorElOKC+T92kYss0FDMl3zePMyYXuPReOOntoKOt/T+dlTTKOKhKzEZ7dZyC
0l4BdnSW0oVXJgo4GgLAw3ldi6chzxtKz2/XMiNo+T5yfIKDdqn1So/c829J2kH9 Qd8NXPovBqx0Qiznf5hP9oVElrWmD9L8GuzT2c6M2VAclWPNaIjpDoY+ux9mAHqz
CwPY/vvaIVvpbjDQ2ovck6grtbelBuLS/pXG8j/SlLMQKWXLU8Yh5a3QGQ8+QP8j CUycoUYNEGFaysWanzXqw9pQiXxOmJ3n6rQ6P1CisCnQiMlgVRamYzaViO/ti4HN
=KNuv I17Yfr92aarDwvQw3Gqpo5XlBDlZuaiToriOwvsRbynJ9iTaYzAYkDNgebScGWhL
Tl5f0AQaBVQbsuIoqt91NNDgI8ja4vYi3eXd+o9M8t+4FhT9dzoRDxBNH9dZHfFi
8vLNb5dUgz2wn5miLrwFTmbn6C9GofEj18IU/c7GEFGld0ajPjqxAo6AkzRP/ksk
5bCUneJUBg+1/wv5Lq6SkLalDMO+te4I8RDE2+MtJeIIzcLiQxzNl3YO40cU2K3J
c7JO98gACdx5AiwTg4Ze0l4BEvfJ3vTUoM2iZIYEZZ34qGBr4DJSPIRDtftKJ8iM
y4DstvqHtiuBBPogbQd7of9HfLEB/IeMxLX8WfWxrPMhMv+ksF8yblYMKhTcb2Rz
72gsQiAvIOElqeV6X5W9
=/qwi
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA1j++ZN0cDPgAQwArsAQFAnZIyrgbxv579qdfRTGavcrxPpP2bjYUHW4DF8t hF4DRPQAGSQLsJYSAQdAK06N4nEaBoHoqzisngt6Pjfw/j3+az9kkcLz7yuzEXQw
YzgD1pGPqt3Ypq4dn611lY8RUfLZ8JDUlYQTC1dLjUrtRD24UiFwHAtnBKd2PURm 4c/WT258IUaMZw3APc/Cb3/5ckkeWY2iEWGq1CotE7sW1G1MxaisQjSNWVMCvhdB
xmi3LZVWZx9/ko+vUykq3DKGMeFkmqr+ZSGsjV0BMNylwJ543Fd6uuaRCymkqhTm 1GgBCQIQeKyr52qjVGTwr3ul5eY84So8d2GBnF52544vkHmsKdmyE9pZKrbC0l3o
4y5nvVnchWHhv2qdHW8R5nbrjHhcx+pEsqhH1v6o4HXVDqwdb2n3Tkqv9ogbqO1q uTPT1oneWpXUguohi4YzLxeENdX8wumnlatck19ivmtDCFtKf2CYsQIFLTj2g9eP
nKp+fTJ/H1Uo1fljdyrKskEArvaYv/lmxY2xSnDDTDcEuHUv1ES18KrGjflxIwRA E3nvfD74nt30ag==
sZYbHp+1Fbb5a2Zh6ySrg723C0lQOi8jWyr0pZmrFkH2EUXc2nLeFykYAaQVV4Rm =gmxN
igISVbrPqdnd30Ppd9KhKCRFVqzLu0TQvtafcEoFKCNi6wYMBakJOEZXYJZ2O66A
DTrFRTYut8DufzHuj89iJ9cxeUCAlIcYS6JvKmjRCDyizzsNrgeSdpyf9LRp4Ba5
uRaOK9wrpyX1TPCnAfxm0lEBU+pqhcsxdM7eNv0KvYJOIj7aQzWgfC44hjlNoFOa
7/O19kTASE1SrR+zZqC2H8WMG74lk63Uw3lRXPSpV4a2bNVoHkxMcO9byODcft9M
fo0=
=k5Fc
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 5623CCAD4242CC3E0225A62986AF09C173781578 fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMAx5drVN5V7yDAQv/R5AjSEZhrkQ8v1FC7zVaw2MNcfJQMiX4Q8ybnC4G2bbi hF4DqL0Ka4V5gcISAQdAuEiGMF0+O5sHyuNiUxFTBjClXPI5qZMYykvyne3pXkQw
UL1Mydiphqh0tdjsPClDmYyVxFDCYuTQACw3HIJRrs4QCEThtI1gpTLcuWDcccu9 MnFMOlgqovBanqI1cM3DVZElrMxsLzxseGTbL8UKd0mClzXnqNFkc9NLkDkNO6tF
h17kmNGrOLoelGpZZr9sP1nVQBhc1T1aAGO0f3z/MvEbSMLUcp1+AXSLrtuxl3ME 1GgBCQIQDfe4S+Awl42he4BxG2Roh0KyRv9NqjgyVk9ytevFB4jLbRpcKaimCW55
1xw201q4571MA2xReAiCC+HGK8SJwpdpBr/W4YBajJB5LWBUbKJ0P411VIGJYRV5 n9jFLqfOQlbqje4d/b24/lJOkMmhibfpJ7YDQIt/vxoi7GvufiAciJgIW89owYcm
VUrB0ctyuGmNqkwkqBlvl79eRS8N6CW0adWY+aIQ6cWGxcitKtN4i/BE5cIre5Fe uEiaLNhXb5Kneg==
a0Wa67FGxSI74MdN0uxRgbE7TkHBHhiHp3RaC7l3vHfs1LVNuoB3AoEcAc6Mi/dN =fJqe
QAhwAOWJd6Um4FBqIcSDe2N9gjIoqhg+teZVoF8HKcatU5p9jDm+R60fO4DRys8e
Rq5CPEjRVTDeUT1Nv6cgq9QJ0LmWVz3VUbHRhFbAjZ0rAzqpXe+HXDmOC1+DMTT/
aXsLqP3VjE8y5yDK98Pf0lEBrCUkCAKm/woq70tv53MjRm88DyU0NFvT69BPieH3
lrc/q9Q8Txr8LzvOyjpS/mPj4ORulInMPc0n5vYBcxQQg7+M9P0JnTy+ckNWBkQ/
Lq4=
=gmlL
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 fp: F7F328F0E4958E4C785977E23B8AA0BAABADAFE4
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DRPQAGSQLsJYSAQdA5WWyS8peeuXEesR/Ts5Gupa+bReYqJ3ocLw2tenrjiEw hF4DbFrAcOA5jGISAQdADz7JJxhJrzKxkQ35pdxuSycyV+2IS8/QZBcRBIXV2y0w
za1udIqbwwgAdp7TQ+8GXdN/uErM+o66PE7DzQMz53pP4PLWyfgNeR0qHzlu5Zec OYnbgVgIbCwSWz5XXxfiM5D8e03HkPrh6Cg4mXcMBqFoF5ktMcXnMi0dxyrYIKom
1GgBCQIQfTaLmc6+U4G0QiTtW+tuUIlPySgagN2xZmVr2Of75mfaWSMQV2FbbVId 0l4BEjoQpriTjcyBcaoi0LRGRd9l9tuZjMoygeox+d72uEt2NU7ztlPAhCUWEjBT
S4laxU+vTZvZq7JtAuieicAA5fPGq11TVPkbXkbwbVLe/UfbUqnB1Vhjn1C/vKQ1 xHE8Kwz57AF79f8d3/c7dUgyjdlL51OhVNi4pjggK8hskNCZR0Fco00wIKK7tFHT
Jxxf9oTCSRduSg== =WKjm
=M9yG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C fp: 659FDED43DE155FB772A339B343CF1218A664D31
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA1kDHheI9SLWAQ/+IW2hkHvCThxNheQj0jwdcYF9sUGzVtfG69edWujpOcJ3 hQIMA0JLr4yo8A4WAQ//TVI5urdUpi4RQgn2sst/1hF9NIFu9StHg0iGLP0SB+k9
OQIEaHn/igp1Sog6oU5/JWhNL+tq8+67WoOakI88+ljZYrh0XgolcaB0chnLoXAT XAKv6q1MUC+ykwU7vsP/scADO+GG/4swuRDR8d6y0wmStXEbAXTY8CzeseIAQA3h
BKp/J3KyyS7RHMWbQpuBHsGF/YTpfyYSjxk2pzRgUiJ6CBGWJ9yDmo/WuNuUJl6m spPP7F1gIanG9pgMBFAuPdudIbzz1H63nBkTAggKRvFz97LbX1ZJ/7cAGcr+ljor
X7ei9opPYiiFzQCRUsORgUv61iWqsdP3uPqN6KTQJ5CELqhxyMPn5FWtFSmeVbw7 pGfNdkZs2RNp+9D/WOgV022GEOGeqv1pv7RX1Z6rjTCd0FtKFjRTQRnZpFV2S5o7
NkraTCD7pQCgV3dep6mUtvaN6Gk4LrGX1KtDNBp3hX/f723dFI3NlLqrWKZo7DPN Hcfp+ntLk0Cz9StCK+9CGzuAdfXLSXzAmafvC/7tqxHLSuExok7OyHxHd8CNAWzO
zndHBrMMqEbewbk4phiO1162ft3FCRksaWuK+CRtehswMElss16gM69T58w4bibK Wn/3NeT/RF97xL6zUE0ITCRoCjyT/AKxXA03zEForWypkHXSvj7wD6DKX1Vt8NmE
y0QCrO4FXQBPmGD+upRN3kXZYvQLIIJxtjdMO90ktqgyjSkJ6eSh1qJAmLsjs6L/ se1t2T7aJuvdxKwwwEgreKcpILPAoefT/JKTcjh0SfTbufhEcDnKjRmjB4wyiYse
O6Uuwg+SRtZQDipu4ItViOFveTEl2sJtD3k1aNWkkuEW5PktGrleiePfiD/Uh4M3 wqMgXYA7s1OIkwriGPl0KKoZyc/dN6+2HXbDwDnO77MBRNA/KHd/03o6jM2+5ZxA
azH1yQJNnAf0SkoUpBLboQX/LYhjw0t7ifm14VU22NHHq2yqKQ0KdwMcp3y9Q3cn XG9nEeauWfB3e2BW6RrVZXHGpOtXIc9/xcISg8cNmqnxuoHeXqNON3QFNkZSpnsR
jx7ncqxuYVP1mgV9SHnRmWq8LMuYzGPAkeBqfx3dX9NtFEMQLPcczhvl0ujBbEr0 3bhD1ue9DmCpFKjpcONFU987ev7A60VG0av20R3pLHj472TI5DX5f1NkXxe6Yvf/
G5McwY6Su7XC9qwz4PW4yhERhJb+pnUQdVS8UJLnFgGt+yDYgpom8KyD1eEa/m7S u3EF7ddWIkFWX21rRJWEBod51d9Vg5uQfaJVYAfmCtjgfEWtDlNeaGLBqrLyAsXS
UQEG5qqrdo7rBX5udl2QEbrslew+m2AJ0Lcy1iPP1Xrp1KLaeDDHncYFO+VaSQM4 XgHnFHa8vUNK2Kj3VfeNi4CNlJaKKSdxVhKnXLq9tVaIxE3l7NsFfKYEeqjZCFoE
5fHyHwB0JAW/5V/v+HsOZq+kARm7vxjdqaddIf1werToFQ== QI6fiNp9Z4WCXY4MOTP3s5c+eoGFwzA1iQFJ0W9f8Xf28G3pfQTeU5LzjXg7kcI=
=lGmU =Uje9
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 fp: 93593B8B0B7B88EA2DCC99F9388B6A662C356822
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA195cwtvYnl1AQv9ECVPyiqv8m+f44zOhB4+zFLwOmaOrW+xRTxJF1yDft8t hF4D9oMBxyVlaokSAQdA9tHAO9kyV6aj0j6XWH7/VK/ML9EuLdz95Tq0mbss5VIw
NHayPc3He8+BXdS2dHerN5hDuH+ZoT6zFf0heJGLN2KHH6zRjQ95FH/SkN7Ot2rg DaDHuifWmKJ8LpAcxHVx46+/dpyhOozT0miyCmIym2bkVACGz6+redvkwuQE83pz
tC2CmmuDxnwKhdngv/Sr4mtdeUj4sQtmsgbAxKuIxMy1XO87wi2+lepl6mYaU1HZ 1GgBCQIQ0pf58HpQQmV7m/Men//N+xIqm135d970FwzxDgsVPpOsxmNpKI8tTMyB
Xb7Ju/Z/z6QEKi2WUhd4MlLlmbKGJ7f/RXYjXe44e2ZyE2rwylMHPolQ3XwEwqUg 4ovko73ionZ4eVMMEx9ivbyUw70fE17Yp0OZB5WpEYnQa+cbzyqZbyANavcIVWbd
vCX85xAS4nThWX6DwF2t/LmW36vJhj62zTJU56Hns9RuZAKgIVsABZWwT8quOcX9 IjZm4O0v4ELm0Q==
2r5dwI3lmoaY9cUQu6hLv9dRsKRlHvCveaRJb0Rq4aWkU/EIZgEobMjIJbdVDPDi =pKAV
nG2cZ1YC8gGBNazt1Ypy7iQOpQDR/0yNOwvQksveKigpiyuMOkdrKITsD0hVh9dt
RrqzHvRyZkiEm5KvDP4T7FYaMkTG5z8gd+0gp9FbUqtdivfaRr8Ewqz6DL+mLGWx
9bH88IIDAtZk9sdkYs+S0lEBzvqoZQN0QUhaJWjCfbYk3QhjxRifEDnzK43q0ESZ
KJCMqB+ujsTFsZOEbk2hdbB0GtkQ92fazi1ADbg9eTI9hyI0nYVHU86NQws6cYol
jQc=
=2xds
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 03ADBCD31737EB474A4BD235CE615FAF927A2054 fp: 0143019F62469ED5A6A016C219CA764D37590F9F
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA/IHQvF5YsEcAQv/UMgerVrfVFuNjIurmlsc3lTz4FEa8SWDo+4FzWkcpDVU hF4D4oFtgf6gcosSAQdA/ziAtNNZxwqL1CmVr8JeT2OLocQuHYf9SxnMBm6xl1Mw
oeGq4S9RoX80RtzW6QXmHA/dwnNxlAVFivNykCDXYQmPsUr3k1VX7lENWaDu9B+D pYvXfBTchT88Utt6+WOXDyUOAbrJREtJv8o0UA/YiZCVnt3rUJJCqgOiMdOe8EGg
2Z4RxoPwRN5jxSo+wFj+y3G1IuYFRaAk4Uy6tc+tG7K470JIzciEkN8zVxAuhd+M 1GgBCQIQWzeWtees9enj7kwxZ2XN5Hu4a/dF2f4XgbqEg34SWhwltb3BGgezS6co
ajgC3+wbRYRYbrAZT3t4NVoyDUTAU0lmTlRG/hHx/uLCR4QItL5lWeHfulKX3gQn cFh181dESMCzd/+RhcxdHT3HEZdG0DTZcvpn+8Cddc19SRaV46ly8Mo5umQa+hHB
fq4hhhKMC3oqrdGrqoPL9RT0U7dSAVjyFMCgjWDP8IFS/PcK2tvJlAYf6vlm/FC1 onTCmWIYSibMqA==
4/N5XiW70F/jwXhPjnnoDZsd/P4wQUdkaMXjNtC0xWhOjsopL4J00KP+i7QLgpg5 =w0Os
i7WmF7FcWUcKpxIQOuKYUocsUjOELXIo3cBTsGPXNZdM/thE6kM04kHIJ3P8CiSJ
pzXOmskOlUFZ/btC7ctwEPq/BnADE54t1yyaN5iSEUdXjn9izv3BUyK1GVlxK60V
4LRZ7FrAWE2szXRsLGur0lEBamlOdPrpe/u17GEK5PekTA/s00BoWfjXmep9j4Ti
8LxtAoIgVWN25i8uYLulqNHXT2eT8sWPHw2YEVzNGPaxitsDEwUsOJZL4FXmu25C
g4U=
=SLdk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 fp: 8D600912FD42EF5352D38DD22FD71F457EF7BB8B
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA/fyan/DNa3uAQ//d3+Vg6+kbssPoolgUhc1vcd76ZXQ3MbfJdUpn1Y38Tsh hQIMA/fyan/DNa3uAQ/9Gtba2jw6Rzb55Ug/tRrOcqbA/9kx12p2yucnHm49DdUl
1Rxp2m+CHSbp0a2ljTFtrbyvcXE9Wy4ovjRXy6DR1JWOpACWO16D1tQY59xcw13i 7f2/bFO5B7LCncGQmno6vXFc3D6B5BxPrXXFOjzdCrTZkl4B/9sVIl0DdvhrszEm
oBnnsBY1vEutckPPK5F8jRF5dpNfsSuzUGThqVZbERZ9RwEbOsQH8rK2FIXWIUDi e3qVykJpqj6rl+b2fpKrVjifdYb3/jG/02rIdGcaep0nU7iO3l8cSLhHs9jNRb6g
Kp6I4rKqH875JkEf1/xOtZ3FO73QY3OEelW4uESKhteN3Y57zeib6xCv3K0Fo2LQ 5gapzO6CG4vgAwfIhSaojtPMIXtkmB0RzGh7OXntonKsAXWnySHCPVOU6DWiVHEb
WqEBO+w5s312eS4eKnSLUfcbrD0Ct4Cvqqh1AA2nexnLcUjue4cOTXPQeJ84rML+ Obg6QZJycacuSG8ML0GNpTA36p8XRWDmeR1/FO9gzyItzXIfCf5pOnUp4v64vuC4
eRp0uvs1gU+fB4XQiaPqKhGqa4NRd8N6hx+sOLjnn612CmrFs3q762Lx92MuZf+R QqsY127RsS11drnr9NFAMdbNAN9FCT+yLINtDGDSZmh65oHxB1qIItnTW7aZ5Lq0
AWdsLoiZq0jFPQTEqPUP1RdCt8682y3JPeig+QV5XpNo4rBXGOnKKRkCXkUemWoz oGL9h0+uEDcF3HVihic1qs1N0dDCD17VYeiikikMgnyczjvMVHdeHaXKGoeumVlL
/YjnGv4cFJf4t8MxjYSCKFWpONbmVWhFVXOnVOolXSUHtV3fI2toG5b94g1EeQeL QzuBwXyAJ7E/pg8N1Ku8kq0+CmaLmDbYs+7HNRtRw9zpznmX1Z3EsrVGcO8YRq/r
Wuy83nyd8lm0OmPL9gmCgQVCBrP4u5tVInWyyWhF+I/CxL3wo4J3CUpbD4WjsY8o JTBRbC9mr4L4KEDn3ymVAUeQHZAJZjwOM8shsoE6YC8zBmC74xWb4tu9c20gg+28
xke0o5uU15B1SlYxPBJLmUfNDiygjZQyB/lOKZ3BI5zuXUDJyb1FcP169WeQSUZP WLU//3rR+pFfRGK+OBJu2emnEkgm/5sHFXw67bzqru9dTiyLGAOWBsgmMwPjIds7
EkaRHkVj7pqqyMbjunF/2ZP7r21SYk88rToinH01HqQV8G2Fmxw6MBpbfU9/91zS hO/PMvLX+u7S9qJ1p8DQZ+PJ3zA0saHMg07JeqRxBf87H6fFS9KWjl7dtczk2GzS
UQFfxsGD8sJmSk3XjigjVeoXLkO8KWfFGbm0lCoa+TI0MfiamYEMhJPzQR8gwtxi XgG6ZoEL5r0su8MIo82lsdDMWeMvs1H40W6d7zkfWI+qVXOLZjNeeotzgVop7YnM
DEsaz5B0GVwrbMOHG54MqPUGxPV+cHtnuWxbtRmxG0oQ1Q== db8zhgtXrMgHODG8519YP8zNaXfQN0pjX0A8rnFhNVPifcjYiOKUB6s/fWe9ovE=
=cPOL =GLU+
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9E561083EACDE14694C73A323A2F6C1D153D753F fp: 9E561083EACDE14694C73A323A2F6C1D153D753F
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA+cOSmNXMUmKAQwA1PRef5Kz4hHgEmui6uUioadp7ogQ9T30l2JOPnghdg8s hQGMA+cOSmNXMUmKAQv9FJ487BOvGvaLZIGYwLqElDt3GGMvhpbwo+UgS0Po6Gyq
YRuOgjirBJqkkaBO8iz+l41DvTNQHAwkPV2zoCKCpHHyeM/hNy0LK8QfyBadGoSB /DsAtMlpES1ieHmfMQcQfb2IWXm3UpgwwLMSbFXsB6OBbZhDpPM3MI33ZmYdLY56
ENxnre8WvwCQAl7w1jUzy9rR5ugVWd92K16DE49BMR3tczfmOt4GVegG/CknJBvD oZdkJk5vf/VwpmSUvWANkFRhDxce2U/szWU+9XdRg3IgVprpu83a+DbYto2lENcu
4KPcancT+KW5PBOsnefu7KqEMDVl0wtEC/FeCVQlg7pECIcrEqB7i0lfCqHJBi0x 8Eyuou8bTKcquKcuezUqIfZiuv5G09GUOx59cmVusJ3DRn7ozRadJQLiwd/m3z6v
ZAb+QAKyKImIToxPbSmGKlIbnICDlHkLrjR+b1lee7FysBWswlXC1I9sZCSx991h TrkO0lIfiQT1lQnwtgixhlN1zICQ+ujJzQDNqHrjjxLWjmvVgWjXOyLCx+ivWySg
/bCk5sX9GgRVkeOfSd/DJ6jVIdxMlb6PtI6Yr3cKjdJHxroLdKd9GqT9TsyKxsNi a58NF38vDQKsQvAv2f1WwW5/xeMGqHPyHPEipEEbDzEB+iwZ5K1YHTj2ocBHiOtt
/6IPo3ZiNsKtVj0ax6V49Ep7+0HDdFJMKosG2N5mqLwGcyl5Vno4PD5lCiCyLAsA DheDdmeC9IGNTDc/XrLmlW4grrUNsEl7hmlT75A9R7w5Sal094VNEh9L7bNj2dqg
Rpp+KUTTihWOcKixdmrup2+IfgHPx8EwbtCtl2cS2POKQCA1qZv6UK5qoncx8+ez nIQjU6AgyYm3vd/zcA2ew0gl3FimP4qQO/M+mTe/SNA4C3UvdbNOBwHjp5NiejXv
/Sld5DXucNsYDto8XcGs0lEBmksc668Jrcj/PAL0pXXTLnziuQhFMhL/9T8dFjvB uFFbZOfgNlHgRlb6bnGh0l4B/jLdc/21pnGrx0MJdYUl8mn0u9A2lssmhXMXgPGm
MvMVCFwQc4m3/ebFTddsYtlN2PF2rlSaOikijclN7hLT9bUPQJVr0SITiPolgg0y J1loxnQ9ZskDbnA1g6gXP+vPGyXSzX/R64OM3EKaA+T/LBZ+f58Bo7QYGGDiAnSS
v6U= Yy+uj+x84lQGz1kdWjfA
=KacW =fOjJ
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA5bUWViEqX+EAQv/SyHaPsOtqYugafiYw6M5pyIlBdUlVDgh19+e6eWjVLLR hF4DrMuSzhFbHkQSAQdAM4iNYf1Kyv22rIy8PxVWrTmtRleonfVYeUCSWuXjx3ww
nwrIsgHvWGi4+/10pSJGXJIPXx0u2a7etrodKPM1TjJLyMUz2MEQOAVv5pPT7lE4 hRny7s7V/KA7nd5o/XYCZR9kJpD5UI94+DyqVxy7u8TqldDmiivxWks/JejKF0nG
9KESZ/c41SSnjmgS+bhvTo6J0WAg/yMzGNahNAs5ZPqSuWWFqLIoeiHQjvPPZ1eF 1GgBCQIQzP20RqCgBpJio/WKvvsLd8iFSDiK7BnUJt+aKTVSK0k6I3hTUzTsSmOv
szo1wqKZz/Pe5gNEVKenN7+EhMSU0Kzya7U3yErxsjtkMSf2vOrlKkXyuTgsiPXQ 4H26OK2RbI0eqmlCwAiO5EW6SUpIr/4uwTZrUoIJkr4FziAfrqzTrPjxM8eAIPF7
LyrG04EnqRo9AZQgR+3BvOUxAoJApjBgeIteKtqu+qNI/bHh1f4EiVrkBk008IY/ lQ4w7IDFLJ0+qQ==
DM2qIiX5/EmT0l0dtpwPYbmfdqnKqUNygE3eGiCdizmceTnkETHatX73g7UBsIul =0RD3
3BFWSjD7svl3onhocygIo7aCQVgDDULm+t/SJstXYIh4lrjqQmswYM0VDzfaiCne
u/lrdBTvSSlnilGk2GbJNJx1oaUU9gERqYYUdUTD1t2/JmAaudTTqsHhFsKWPnqu
lDA/idHZlfQeFexW6gBo0lEB9XBd/jzfCUw798EEuvgrMFre4UGo16obVjnxWrJ6
WLqbDRNWPzT43uAAW2Os9aezL0qglXcNX5dI/ve2revJOyVsIt6CkxvjlzJiQPZn
q4A=
=D4n3
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: BA6328948D50175F196AAB5111F324603D12DD56 fp: B92DDC9B908BF3917758D228446C51E049AE38CA
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA8YZutSkx0fiARAAmwvzEOXs0PBK5w7h/38B9GRgmFCv84CL7XKn4uYXW9jA hQIMA8YZutSkx0fiAQ//V+rV0GdG9Wl7gtwhOQidk5hFcGi+gWc2V2CX5KRGiNM+
rzvSjj+dj0/cIjCLEo+6RqxahfHqTsGPlzCtEm+BI9mJX8RBpEkclnkAQC63EO/h Ej7UwpsozNenBKJPGCgW7A1TviWVN9u97e4a++6fPMQSb+BZ+7jKNHWSU5EHUqm/
/vl04Oztu3Sg1ADTEeyEHvx+bhaE1jJ6LYcc74ETsJNQqTJmAsTq/tme73pEWHpU TmymPa4HgonKNgI1Uh1T/Mlz/shtugCxS1oThQLIrDyvyzp/B7HWgvtqDKo0zUIQ
SZeFg9RCs3iFLGG+FkJsoOv+TmUF5u3NzAz7DZJi5gB+LgzJ0JukL1LAQ3o+un6e 7zM/RN/qNdtXWd26pmzk9aH+yOLmtoB2Cepgdcy6yG7wIKge2EmejfM6+mLlRiNQ
qN4yZOhc8ZeXVK9X08MMZ4a3ErsWmTXzywsWie8dWxDAA48n8wJKgt2xExygywW3 WqAqetZVtJYfiy5EqnRNPQIzbr3+2dTsIORpQcFvGB/ULUbcSDt0HKXmWQ+c1hZo
36Ugk2WNfWY4TlrXYNtG90/22BHOXDRWTrw7NrHUYSUf7MzhfkEu+IQNYtY0um5D nXDOt9Pz4Wly7M9wXWwWwSDNwM29WEsdZQokBpaN5Lt58CszV6MQRWn852xuOV8H
9aqwa6mLComBuYlXOu5ItPQfy0q+TF5sURXLx45TKH/KtQVVEJMbe0frwDZWLCsh JfVQxPix8FWrcOOur9n7OrnKf4ANzoqjgbVZ7kTo+hTzClWCMs2hfXnzVhJviNVh
GZ6F4X1/ddxlNBOLPm/ysBA+9a0fvNK4tlsdeD55vkqjY8o0iBK4GfzNYLGSxhs6 k9kzLeps5BIQ23qSsPBaMWMrXyyxsZd1b+1MUwCliw13zQX5hi6m07SGCJyLKfDG
AiMtGAIhDQejaldsV3CUg7L2KSA51KPx7Db7FlY0KpASPZrh9ADePbkgv1vBNMBp C221sNKCoaE2hBQ0ZqGp4j0c/0R0AuI66xOyj5J+MOqJlQvK24I1uO/8n6UMNpnT
pxDXdxBLakhwgruJEcMQ24vjdNF1U2gAuzcOMmUz4P5mKTqgLoBqZmbAuUMaRjm4 ZUOvA9umkWDmSHH68SzPjeXsoZcy+mFrdTvTqaiKuxjjlGKMdNPv50gWNylv+r7j
z3D6XMVFhWIj9HSesbnOg8REEfh7PwMgER2QGSyolTKomd77Qa1DNw/RZXyPI/XS /VkS0h2tTZE7YKKHwo7T4AaPGg/uwxD+u3+i5QYdpJtrY1UPk+uTOmCFtBuur/XS
UQFlSb9MVVjmKswCvAUHayjpVimTqBQqmbRcR4PQsLmKuylC/mueAlcawfSjjKli XgGphqprcxNQ+a8Fm6pgpNQn7F8QGJEbjTR0LdUhTScn8wK567d0Yk+mHszdzZJb
vW9jMuddQjLJAxih1GhVJbLR6xQZhM/3vzG5Ovt005Qhpw== cWDXSe1BNSekAqSpJQDYF+qldkR2F/Mqe+tXiH95C2PCtPkoRak+JZuKoEqBxqc=
=vQIB =KDxH
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748 fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA9vEXLVODHp3AQv+LOnf8kWrZoWoxnED1e9BDtuitn8Q5AVB07e4u8RA+0oD hQGMA9vEXLVODHp3AQv/QOoPcsrKBc0fzmPrUbyp7dApHFbwnSF5JSQRQfGzaqP5
ALOruldWTMzEWMzfZESz14gTF+A7A5LOemmiewZwjzu3QSeANvwZfItjeqkm4Vvi Cq8PBKEoORT24eoX11Tr8fba0i+PJBB0w12EtfBOmOwGhqUgOYXw81lfJh/hY3J2
3CNB+I7KmZ1k0p/RmKBiPqWjlFYLplh68e0Ivc63R6bwfbJWmYPYjm78oFqq7HTs 1okk8Sm+tOJ2sBMLYFEKyoOmLmhbhSfe2uloPhObnFiaBramMD6ViudTNAvSVVmG
+WoUkSzmZQdWhVjCG/qtvA2pEq9kCTzIqgPWL+8+O2TPdbZ+xbYF2UZbvd/UQ2xI 7xORVno5LNzJ9DHBemeKvfJsoc0nLTDPK78hBoJ6Z/926pZJWGGbufIk9eJ7Ayh+
3VXAV1GkKihWaQmr7nVhH2QZpw1Y8ER1EuixVXi8LloiD+x8KyA5hbjCh3RRvtMr 9WgQfxGwqKbAePydYPgj/HPB0UuZy98SFWVXaoyOL14yoWsDNDRl9cbBQk73IlOG
UyphedMIQLFkU5cf99YvD6gqqAcnB50yX/mPYtbQR2RzAUuppnmyUg4O+ouhmL/r 0MJZQLFs/voEFHtp2vmytEspQYnzoJWAbaYzuv1JuJ7p4lg+KMBCyHzY/C4PyBQ1
CJC1uiRabspZ7VDHQKVyPcjP5g55gZPtoJJqJrkPr5rBIEE6v2UFPq9isUhn4+tb 01Y1qKyojRUunjHLtOByWf6WoN8BowhaVlDTymjsZxGbbJ4gGPXBZzGwRQLJIJYm
YqenVTCg8X+sgjiqeEsyMKNCqwOlBK//mNcXmVTJelHQzRJgrMSzOi+5yb5whgNs 3a+33exsOywTWmXK6eXCe4lT7R0WfUBxnL98uzEyd2MrZwLlrjL6t61yW2DPCQA5
wlwR3w0EPqRpTyJu8fxw0lEB4Y2mF7FWiZ7GUe/RiOLak92tja7VWt+xcr2baPIt DLNpzg1xDNFOKxrqOaAc0l4BbdMLoLTJyE+bQApW3z+kFWFXBgyIzwn3hhrVaqGF
0E1XpI/aSrA+sReH74iRC+unmFRagkdo/cUYfCX0WT9ZKAA5OHYcFBOCbCMkTX9p uo6L2AWvUUvLeOR1APyQi4zM7lZ1TFDRd8j9147P/XyvEpH4KLpOsg6YEtBNL6tK
u4M= Gzr1NkPJSLY3m42NUAjy
=GPTC =vkun
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C19A7D807525CE24443CA9A49372E896B41FE700 fp: C19A7D807525CE24443CA9A49372E896B41FE700
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMAztV5cc72nziARAAmlYtXpJOJv3KzfYdO2opekdIupkW4p2TSLaXzKsmHaoH hQIMAztV5cc72nziAQ//XAPd5zFKCAQJ/a483lBmHbF0619H7YnJaWkPyg12pQ/d
wcz/5M0+yJq3UZcOpcYZ1WQt+LrIYE7cNdh+tDEFohYE4kLHFRJYirdASgd2Ez6K XgeZEN54TGW3ItCrw6DDhPM+HU0msRzk1lGqvMLY8ZrBIFQEQab/XAGFI3/LD01S
xZc5h612MS644uSf2c7dvyEniOUNtiyqHJadL+/BkXpdECvfwDAuff7vrYgPMLOI TWlP/G7xykD3M3DKR9du1VSgFq8VAgZXpxZYjZlFmdG0R2S566E4bRpLahQjc4Ky
H3pUD16ng+7cF1mSq9dnoKGJN+qajFT+3DlaZrBnSa3uMFAQw/SIGknIGpBzI9UJ IZs8uONA9NW7tXG/uYMqlrvLIsPXDvMCdp0g8tZ0jbzDe6JmjHO8F6X3C3PTj8CW
ZV9qU3P5+/3cpEq+xYsRjylIqzxIbhV4OehIgISFdh8MvLmPAxLx/vEGh2wHyPK8 e1bColDBjFyGjkVjdm560zayt8iyplRV6HFSHJSbZM0aDvxD16woIgtTtcyNgSw5
r134kD03wyX6Dkfqe1QkTLcvraAEiNsuWW39MIoh61mFBD+bx1SPXAMkEaotyEhA /kcuUL0j35GHsuyp9MgD3R5aRo6K0hBMQ8BNO+8yMVK5SaUdx0YLfYldsIzCyjQA
0Bg+LuoRkoNEeghXvUz7V7dP0WfufHjuWY5mNHLBfkc7jbx6ETWn1KHZmTMrpFno bzDPgdVgzynZ4HAUesKm344O1t5yse8zVkXEZcnTaD6B2Peq8d7KebAWeYTdsoSV
S46qpZnacVGQOcPs8PoOZ7FHhr6GMnHsZXdTkVJW53PrrJ51Sf6wiTGq2XWIcXjR D1tCBnDk2K1Z5hizQnpTKqnnxvrN6PBmlebukwBoO4sKbV1HbNLcHw6qPVnPdZwY
PIqfPej9JtWp+dpuxmOZYW1yMwTMrr2lsxQ1afEGtTIyF4+WYwrGiqj+6o5MJ0f5 XsckI3DAr7N4tHvYPB+/VxGWTDG2YXt5F9uEF1UP2LG9EywKwlv7txVvOODZBdif
MphpD7iLwJTKo3JW6u+vuJ0um1i3TTvlhIgxO0vQZ5XX93rGZydNqnPXtJJk9wV+ oLF3CnHjPwOe72QwMNAAT/NEkvj1zHq7Gbs8sw8wCPGYK8It1pP9S90Twd4wpN8+
RMZfGAwy+xCpcW3rpmtzLm93JyU08ttlpfpcQKZou+/CUyQQHWTtvjGN/ZpXM9DS GxLYUHviJ2OKeNCpnCScDlZbeSZ73tPCXt4AflHtmR4xm2WeYOGLpYf0qebcWE/S
UQGvX7FTCvLwvcIvtn2wHMuWmnHSSALrcbU+vY6CV6GBHvdsl/ImJ9Co0rq+M3VY XgHn+1dCTTZrTwg2a3/KxyZyWjJQlNpelFu01nZqRf+2sfhJ87RO+VC127j2fQ9m
t/tolxsGPSRO981BgWmz1BNc9TahsosWShFS3mTrwPbMoA== OVQRo7SppJ1bGKePYPCxr3n2yX5OAg59Zosmpol6CmnA69+1XI/9WKO6DjQLhIE=
=v/V8 =T8yr
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0DB51A7E90AC6418B7DB83724D38970874850C33 fp: 0DB51A7E90AC6418B7DB83724D38970874850C33
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DxQtfVaqAjfQSAQdAxexVKG464D0ioLMokAOrzNihI91cFatH1FTMJAb5fzYw hF4DE0EFwq0sN6cSAQdACZWKgv/UBGhkQYwzobY7i3bjIqf0h2/+tQ8a4Y3OhHUw
8hpnBiccDrbZHotReamlNaoJt7jGn0Qbm9NtJBd4fmui+KX1ebcbc/8BG+3mdRna QLX6jxqf9v8mm+T6bbIw9dPBii2CcOQuX08snLZND4U2krCDmMje6dXv8vFqaG68
1GgBCQIQtHx/QUdWkOIlA4HepwkxbW8iQx43na6T984cKerAsy76hQpualuwjol3 1GgBCQIQI4HHAYaBSQyNs5OzEdnlIQHITx5pHddPWAuRdZjV9HjZlTFAXt2OuyGo
Vo9t3dFzS/AuqbOY2wX6TvWrXKvamkcKhlmTaGiqVikYe2Y/tPWhB4lHNSMWheZB mDJ8Q9IZ3uEryX9QHYj9xMI5EiWPEtG+F/dOZTdDFiaecFShFyT0dtjbKpq9/oLo
vVHnbym+rixhjA== Asqs37LyfqxdXA==
=Irjp =9o84
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: BF3D5CEA36DB58AAE1063D0BB341078652D87924 fp: BBA0C26647A2D87ABA186D6F3D284EA725F9552E
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DZmNQj/lmIGsSAQdAWVdKmqeffNGzocmRTUOVYEAN4XL/z82Dk/IuCY7ryAkw hF4DZmNQj/lmIGsSAQdA49S+dmUCPFNLnmDhAxcJauiyU5WRDruQ4/qoUHAhlGww
dCokC/yI07J0fj15TKnetYCdpa8jTKTXoc3Z4uLSn0T1aKg1+FtvoofC3DlsYszs a/MWR0oHxJ7rjnWORYnrjiL2ZroCpEBylIqFoITN8rJ3+15HdCheYNQUCtqDunux
0lEBBGlM+zxriJOlOkPWx++tvOSxAKpp2HPO/0ElcZU6npDK69L7G3kIW0gzjQ5Q 1GgBCQIQ4tIsGLzPYuMieuk6rQQOxZrraO8kbVwT6CAKWjdHROWlw3tQInIFj+cq
KH2rjxPC++ThCFhAwwjwSLbIryGM7vKk9FnCgGbran1t5h8= inH1dMovK98BGeoxkTLH5gwyfct5fyopnph9E3fIt5WCXuRV8Ak45Bv0C381a3jQ
=V7BJ /0vMA/o/7+lX4Q==
=0Oor
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMAxSu/PO9GEkJAQv+N1ZJ9h8PkWI9MuX5Ba3oAFxRzq6ghc6J+8nz1J64FjzY hQGMA6r2J+JSOMNuAQwAmiOT0gsE4YTRfJY0Y6j5Niba4O717IHAPLS4ufvMTtRi
HI174WHdjIrD3l5xC2//9HybWJETV6ibzJ8bNtSiK5mBrfrRj6rKKePv+sp1lr6B ea0092B1ocXy6ZIW9jxQ69dZ5hlBHo2XOc29XmxJdYNvYMQlF0CDvy/iIidnKk/V
YVZtyWyjMaKSVtX5fmSFxrBxM1Y/8fEuBp3O++SzJvud8P49M+FYB6/nviB/yDy0 FuoDH3KwHZRXWOdDoasbNdwemB+7b+mKE2QwEtxCMmXfPADjSJVkJshASzzKIqnJ
vC99Bts7txkjGURKAXQmycGRVYfLeGDHWDP7IHR3LVOPaZ7aas1waYLk/ZVIL6PB ezM/2JZi93RNk1kEEy26O5MgjLlx+Hw7MyV9TBvoGAsapIQ0F/8KqdL1TAyS9tZk
LCOWVwEaemFBfYlfdu9Ll9V4j5aHvzDh3ZKbGB95k0ievGn/KA+jOnW2EUNa3Rsq kBZK41KZ57OR9/7o9adUoYmQFEEiW7pKPjLsUinn/u1I0savVVUqnF4laZlD0gcN
xURs6gnzX0fo7tSIxY6AXUl/B9vQwxD1DDeLt/qEvc4kPmGdPlHME7exndTDEocZ Rcf614BAdlmatC9L5kyJ8y9MYyfALEAbduX9VCx9Ml53hUMcC2pZZyqrB9vRCc9a
CyHk12F77BK62zTqyPTdQHy+4EOxKpIgrCUhG/QbCm5F1FytD6yfor9GzacSCoMb /dMDSTsD3XvwMTufSflZqbqHUxVwZmxdj5XrL6eLtqwPJw3TieU90v8KBuWswbOH
Ot6Ute+sjLQZFO7vaXka/V4eGNJbc5DOFbtDqPVcuUKbdtVVYccKELpCaE0AxBGj bKU7bJlJTsB2Ybe46INm3hbplw7+6bcmRon94ApWM3BAcMEwHx31jcFdnuhsCj+C
Blc/eyeZo4Wluh7tHbfw0lEB2DcyrFcBRDPBSeAybsTLR6UC93P+1cA3lRotn7HI eDdaTmMMhq+iYRFLUy1z0l4Bt456lbnPk53wVh2FTznOmcp+ifs/1un7lA3Hs0Q8
h7mhHNGeohFBXFQzd5yV2g0FAzMwBTC+FVIOxNLONVP1hmBorI/R7PwOPDXDkcis ZKr6tDF1U6VvQz2G5mKXAa3hfgvPMUyLwuaQX60xKeCxaJLyg8xjFuKF+/FVM5SG
Dm0= 1KEM4STkW0U5XTeTCZ3q
=NVU7 =0h3U
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 13E169CF5C35EF164628764AAA2EECBDE0B38CF7 fp: 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcDMA8b/EJ6Mi55zAQv/VYLKEqNrBQo9iohdC2KcEng98V4Ez3VfEKQjydB9T4w7 hF4DAQRCY74qADkSAQdAvIowg8Xclb585kkv1RbnvQyw/IH3ilglRS8P4/6KrjYw
nF4JLq+OF/sW7CkAhOUssuJct3zEawNu/W7HMcbtD5XWsb2GRevWFv6w1VG2ANWu wDVdFJ1NGxYaZS8GwxABxWUxiPwX3icUpGdkC9V6/SDPt0rLLfrM/nF8bx9qn8m/
5UT7rKmSBw20gFtxw8VLFX//CgZCs+cN0PZcMzXiXdwr7HwEgzZbZc3TtFtNUr1q 1GgBCQIQ2/4+OS0baD4CY+FQxXrrlN7yQwz6hbC2MOmh4UkTDqTPMRX4j6VJClVN
WORua8Lswhj2Uu52euK5k0JUJdzsxop/p8s2OSYOItKl2CcqbzxLngbMcDIUN3vt s1gm2K1H3/dwMCNDnShJR0SqFmL7MENClZx4pViLd4R85dirVc/4IK6cWV+wjd4f
/8Yw9mnKGsvaKT0B7x0bDSMXknfuq4No3HUH7+FrsIDhs90XD8HOqUS8eaNKwezS NGLewEarDP4Nmg==
hhsPlhhSMDczqKCnu4NfWTmDgfiRjR6sNlYngtVGnseG2JKTxC68j/5LMrNOiL0v =HKnS
EgH2EUGphg0yupTeuUsVu/JLDvPq6DRzw/egwCwfeInS7TPFHwBK+5wAxCX+3oUg
H5XuFiM6xAmJWzYsuZQ7i82WS79BkLMfxKlu+1FGWO0fEQMlTxYCFNSdUfGBHnqT
QElvhUiWj/03CA2iUx/V0lEBU5JACYpml2V3uwd1dlQQE/OFlBrwlHzf9oIY3Pq1
s4Rf+gD5wdX1PI3K/68mcQNedfXvmwv+HGhTSfzAXwom65jPYkaTOBj5TtNfdjxU
dzY=
=rMVG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 13D7771BDE5241293F3EDA442AB3335ECC93DDDC fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wV4DAQRCY74qADkSAQdAM15Z64heWtFlCMworwtlRTCziwpS/JyQp+4VOQlDpz0w hQGMA6N7K3Tfl3HGAQwAkX3y1cILzx7sPNoEHjRogEzDhEc20yTSIf9ezCYKaiJr
9dO6QL0rHr6/RYj0nQ/fb00Y9X90Kq9XEG6GWFYjkiQGeJ7DYooNPk4HWV4HTkOG BxNSSnMqJHCPRYmJduz+BOiQrnDpGVnIJj5FW3cswp4Ua9ez7pVK7XGffyp8pNr6
0lEBinuysaQ+Lonn+9y2JsnV83L4tf2awTuSpsqRVLYBNAKHfsgcYc0Z37FfURxf pc5ONXuoWu6cxvB3J46V1dE5f6dTPANo50eOlhmYqI73R+3lQGal11eq4jiOiHpB
jns5ZFOch04oWRKT4Ufw2sMHgtaqV6+8Ri6tFWtHS8aUMgE= wA/bbrcuuvltam2TilpZgDyC5mpXu4mb37UB1Qmm+2pu6iriQhjgVtDgd9O7dOWQ
=CWEz G9ow1j45B+P2gnbpew/piqaID3W6Ctv+A76iEUnlfmRt+elwdxoowUjXBYiBqvMA
gpc1rURhMwpFXDZ376LpOu+laqe249vuF8Fv0vpIXtB+ku0c/15Nih9UpMqHE/JI
I68pIH/Bo/PQiZH7R4AYbyzWZEOVyseMOnXxx+nabvSzLKX75OiFOgmFRRwN3SFn
LtiVvmDr29jRQl6jBWT+Hdx3KU269yWHRAs/IDCJ++ahLZcLPtoypUw6Qpzr+NM4
BlYglPvpW+4rIq70o3KN1GgBCQIQPv9A0Itmo4dXEwz9yIPBavcX0m9YHqkNxoxX
WBplWcRtGcLPiGvg84d7hhOkRvkinlns0DjP/74k1knI3Deyxsm64V5NsplyxlHx
tosS1LBdsA4fUxArXp/kzWD8317r3vzyow==
=7SZ5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A fp: BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5
- created_at: "2025-03-04T17:44:07Z" - created_at: "2025-10-22T08:32:24Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
wcFMA5KoiSc3R+FfAQ/7BFHn9U5mrARB3hFmzMp2mhEer1nnUgEh5InbbgErPkZw hQIMA5KoiSc3R+FfARAAhcW4yy5yQAYAfmEqiMpQmwGZZDhHWzWBMO/dkJXke0kk
FydX4ikmK9xLyIxF+wUXNQTtSW90y+s3NS+ZhAQXbGwToyNEYhO35ngp0Ju7tjyp C6iYT0FNLAgCnG8ONurf/IXteRf00zEsjhel6wanpZnb5w9NlfI9m3KArI/e/zce
zp8Q82fUVI6r1UrWkddwd1QLigd3BE4i9I/xrSyv3sjgufOXwcHGpzOeLt0QFy0T Jqea+SxGcTloGeWn1lpgu1Lg6ajP5w6Z8o29HNlMQ/8ikdrNQJrThRFRBaRRsgU0
KG1m7F/Hx5KFtpCmhpkVF9zcrImgMXeNvS1B6iVe3Y0elvzOqZGviFvXqXuCVd9G BYWD6n4yB+SbczVZFjNvuijLerAuRTwEXsbSDuqUdn2YS3yfK5l6CJycEpJJnMrY
+MNqEiKsHZ8ongHqPW9UA0N51RPtWqZ5ANul2+kcFav0UsVIMGDvt6VHxm1ysQsT 36vedeJ2SyiWFHY0W5BRhATkYjFf7FyNYLseWIHVDQ1pa1kItTJzEp9UY5BkjaUL
FPw4M6jXN+bCgYKguRQPxIhZG2Qv2MpkGR2nvkFN1+PTF0tZ9I8X/wfUZSH0QnZL 8LsVDutNCgxz1hgdpC0kwAYB43uhVC+zZTbSIrJstP0NDk7n5q5I5nIXw2O6LpG5
Z2HNobmJEefY4hilQ/QvBzQpVPVz3fGiSlwXGzX3FHURpibWfKzk8Lw29HR7kVUt SAKFdAoOMhJanIr/KPGwWcMzbAPJjna8+DdkOPh+Sli4gwKJ1ta/PvPVemt0VraO
cJjJKeuHwnMg5HkyoRWTlFEe8gVrDJkBIe/MYkjoF7+ROcEn0yz9egGcawnIAOjH /xxj+gmdRQRbtl9bmraLwofOMy4egUNxGubDLIRNWtGIMyKaTsqeb/BoEBM2StBo
rcB1HoJvl7Vy+6ybteLncvtxEgREMZ2AuihIhVzxOHCr6cUzFu+dp/u+zAQ6LtWk /EKeeanHREB36DJTyvUYcplpPivzNJVjsui2RQp9MfdVA2o4bGn4wtfrVJwFXzBQ
ws3/KOiTT+YCWxNWuvWE6QDyM/UCC1YFJ6MoPe14xiAqafU/g43DEi+4P/Cg7njr 5x1eBhaVwdZIq8Eb+9F0eSHFZmz94PhYubb+Wf5YcuKy2cEc16yVgB7CIeReLgjV
kQC2C3t4n57UVuzunBGZj3fKrTlB2dVYA/zkJgoUZP5H0pXPnr6iMZpfKcWER2vS PbiqcrB0r/UHAWUER9Urewl6bBmpzNccjGsPQQx7lkAgZqOjgl5bO3sqzriohtzS
UQG3nfKuiQ87axXf9YebCNzC8QXUVqaUdEgXBo2bLX63CA1OxtrAmEZQeUqxXIJ3 XgFFm1ImeTVy5DdtowCYryA/fw9XvI4cG7np9FK6ZEhOjTuneJ8uOc2hyZsiKpkV
uVtGMVQ4QoTknW1+XS0MUqrzvAblSzf8N353hS0L6pTwow== 41Ia28jLCcl63zVNBbE6QdCzXa4Niy3q0JPRjDZo1y+DfmsPja7QRIlOCd92UJc=
=bHwT =n3js
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
- created_at: "2025-10-22T08:32:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAwTtVaE3mgdcAQv/ZorP3XE4BVsGhz5m92Fch9W7ZeG3S45o1b5pgGR3/Aw4
323PWxqCuR22wtgHw1plfCnFH4O3/3j3bP2fWzYd4HAnxvjaFDdBqG8kC5klkDG0
hAeL2nT8UvpWUZhhqFOwgeYJrrUsWvHEtYyfomqLbwMSKpLUUONWw+lpWOpy8YhK
+VX3qBkZ/KI2mbv9R6wUYbLf81j5LrCcCrx2DJ8B9Q5EXcWn8KaFQAHNQvIlj2m2
kcDJnODx9iHNjMf9lRlJ+wN9vb7+RZlPshGMgXMsn9HipxDbqe0F8+H098heceVw
gPuush8/ZEKAyi6aj/s/bWHjQ2bZW1IMSzT0V6N2r/SpVU6GVDSrnLhyuiJvNypd
7TIDeGXj8eN3s7KY2rHfsMIo7EUI/w//ahFM/SNchfMhyLrD8t169e9xHXQZdgQS
wq4srLq2byM2VZgxMeC0mPjzsl2+GXWM40aFl6N8jQ781946KPUG3At0IsYtcP+1
0RSAUlybEO91cS81iZQY1GgBCQIQpylFCD/qJtg2Gns6Sg0RQIn5jXk6WtO95ZD0
gLimARayL5pocbeAgCW+rKLkW/NhcjjTSAOyeriU9O5vSCFiZ9O9Drr27zjK6o3G
NwHeOhPqwHt7UiCBcBSzxKjiY7VUJBYKWg==
=4BZs
-----END PGP MESSAGE-----
fp: D667348F310C57655FCE5D4EA689FF232FD681F0
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.9.3 version: 3.10.2

@ -25,7 +25,7 @@ mv .sops.yaml.tmp .sops.yaml
# define "fixture" # define "fixture"
repo_root="$(git rev-parse --show-toplevel)" repo_root="$(git rev-parse --show-toplevel)"
# --- # ---
if [[ 1 -eq 1 ]]; then function fn_test_create_sops_cfg_default(){
>&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}" >&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}"
set -x set -x
rm "${PWD}/.sops.yaml" || : rm "${PWD}/.sops.yaml" || :
@ -39,12 +39,10 @@ if [[ 1 -eq 1 ]]; then
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
rm "${repo_root}/.sops.yaml" rm "${repo_root}/.sops.yaml"
else }
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
if [[ 1 -eq 1 ]]; then function fn_test_create_sops_cfg_dir_cwd(){
>&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}" >&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}"
set -x set -x
# note: fail if for any reason sops config defined at top level; this repo should not have this! # note: fail if for any reason sops config defined at top level; this repo should not have this!
@ -59,12 +57,10 @@ if [[ 1 -eq 1 ]]; then
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
else }
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
if [[ 1 -eq 1 ]]; then function fn_test_create_sops_cfg_opts_complex_1(){
>&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params" >&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params"
set -x set -x
../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1 ../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1
@ -73,12 +69,43 @@ if [[ 1 -eq 1 ]]; then
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
else }
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
if [[ 1 -eq 1 ]]; then function fn_test_auto_find_secrets_files(){
>&2 echo -e "# ---\n# TEST: auto-find secrets files"
# SETUP
_tmp_mock_secrets_dir='mock_hierarchy'
_tmp_mock_secrets_filepath_1="${_tmp_mock_secrets_dir}/one/secrets.yaml"
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_1}")"
touch "${_tmp_mock_secrets_filepath_1}"
_tmp_mock_secrets_filepath_2='mock_hierarchy/Tw o/secrets.yaml'
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_2}")"
touch "${_tmp_mock_secrets_filepath_2}"
# RUN
# set -x
# suspend strict: check output for errors
set +e
# move 'set -x' within the sub-shell, otherwise all output dumped to tty
# ... bug: stderr still gets printed, not sure why. E.g. '# RUN: sops updatekeys mock_secrets.yaml'
_out="$(set -x; ../bin/update_sops.sh --find_secrets -s "${secrets_file}" 2>&1 )"
echo "$_out}"
# re-enable strict
set -e
set +x
grep "${_tmp_mock_secrets_filepath_1}" <<< "${_out}"
grep "${_tmp_mock_secrets_filepath_2}" <<< "${_out}"
grep "${secrets_file}" <<< "${_out}"
set -e
# TEARDOWN
set -x
rm -rf "${_tmp_mock_secrets_dir}"
# enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
# ---
function fn_test_expect_error_invalid_file(){
>&2 echo -e "# ---\n# TEST: induce error: invalid file" >&2 echo -e "# ---\n# TEST: induce error: invalid file"
# dev note: ':' is a noop operator; could also just temporarily disable strict errors # dev note: ':' is a noop operator; could also just temporarily disable strict errors
set -x set -x
@ -88,11 +115,33 @@ if [[ 1 -eq 1 ]]; then
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_default
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_dir_cwd
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_opts_complex_1
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_auto_find_secrets_files
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_expect_error_invalid_file
else else
>&2 echo "# INFO: skipping ...." >&2 echo "# INFO: skipping ...."
fi fi
# --- # ---
echo "TESTCASES PASSED" echo "TESTCASES PASSED"
exit 0 exit 0

Loading…
Cancel
Save