Compare commits

...

136 Commits

Author SHA1 Message Date
c9cde863fd Tweaked decision making blog post 2021-02-08 17:53:58 +00:00
838ec1c79c Additional corrections
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-25 18:56:44 +00:00
610ef2a861 Couple of small corrections
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-25 18:46:30 +00:00
e1a641a7bf Reverted Gemfile hack which I accidentally included in my commits. Doh.
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-25 18:42:05 +00:00
c66df7c0fd First draft of blog post 2021-01-25 18:40:21 +00:00
9846416b36 Added rough draft 2021-01-25 18:20:44 +00:00
2be7acd2c2 Added inital decisions 2021-01-21 15:50:15 +00:00
d1674c5402 Updated gpdr.md
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-21 14:03:51 +00:00
3ceb87faca Updated terms page
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-21 13:37:57 +00:00
3b25b71b18 Updated privacy page 2021-01-21 13:28:23 +00:00
d5ebafae77 Fixed typos in privacy.md 2021-01-21 13:21:44 +00:00
84e371154f Merge pull request 'Update dependency docker-compose to v1.28.0' (#44) from renovate/docker-compose-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #44
2021-01-21 11:54:06 +01:00
2faa90b0fa Update dependency docker-compose to v1.28.0
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
2021-01-21 08:00:37 +00:00
792674d6b5 Try @file once more
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 13:24:15 +01:00
007646b26e Try without @file
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 13:14:18 +01:00
227e84ff63 Try to be explicit for the options
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 13:07:24 +01:00
81d8caf946 Shuffle this security label once more
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 12:56:05 +01:00
d5dc6d540d Use correct label
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 12:51:12 +01:00
acafb427a5 Run lock on gemfile
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 12:44:33 +01:00
b3956b91f2 Upgrade ruby
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-27 12:41:39 +01:00
49350a1cbc Add security middleware
Some checks failed
continuous-integration/drone/push Build is failing
2020-10-27 12:38:07 +01:00
56bafa3e84 Merge pull request 'Update ruby Docker tag to v2.7.2' (#42) from renovate/docker-ruby-2.x into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #42
2020-10-05 10:42:52 +02:00
961cf1a54d Update ruby Docker tag to v2.7.2
Some checks failed
continuous-integration/drone/pr Build is failing
2020-10-05 07:00:21 +00:00
a3489c9aa4 Merge pull request 'fix Matomo typo' (#41) from aadil/autonomic.zone:fix-typo into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #41
2020-09-27 08:08:08 +02:00
2d24baa5ce fix Matomo typo
Some checks failed
continuous-integration/drone/pr Build is failing
2020-09-27 08:05:35 +02:00
05c26544ff Use new deploy key name
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-25 14:20:18 +02:00
56eaeadfcb Use latest tags
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-25 13:16:12 +02:00
fd09a12a24 Merge pull request 'Update dependency docker-compose to v1.27.4' (#40) from renovate/docker-compose-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #40
2020-09-25 09:37:30 +02:00
864cffb9b5 Update dependency docker-compose to v1.27.4
Some checks failed
continuous-integration/drone/pr Build is failing
2020-09-25 07:00:37 +00:00
076234aef4 Update deployment
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-23 09:56:14 +02:00
0d4ee2b0a1 Merge pull request 'Update dependency docker-compose to v1.27.3' (#39) from renovate/docker-compose-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #39
2020-09-21 10:29:04 +02:00
c6f5ccf4aa Update dependency docker-compose to v1.27.3
Some checks failed
continuous-integration/drone/pr Build is failing
2020-09-21 07:00:52 +00:00
c1267c5366 Merge pull request 'Update dependency docker-compose to v1.27.2' (#38) from renovate/docker-compose-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #38
2020-09-13 10:58:04 +02:00
cabc8efdb7 Update dependency docker-compose to v1.27.2
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
2020-09-13 08:57:30 +00:00
737b7e1edf Merge pull request 'Configure Renovate' (#37) from renovate/configure into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #37
2020-09-13 10:56:43 +02:00
91eca81fc6 Add renovate.json
Some checks failed
continuous-integration/drone/pr Build is failing
2020-09-13 08:56:18 +00:00
911ac06b14 Fixed links in privacy and terms pages
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-15 11:26:46 +01:00
420b4da5dd Fixing page layouts in privacy, terms, gdpr pages
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-15 11:18:09 +01:00
210afaf16a Merge pull request 'Add basic policies to the website' (#34) from policies into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #34
2020-08-28 19:28:02 +02:00
c17eda92b5 Added more spacing
Some checks failed
continuous-integration/drone/pr Build is failing
2020-08-06 17:21:01 +01:00
0b5e27e0c1 Added footer links
Some checks failed
continuous-integration/drone/pr Build is failing
2020-08-06 17:08:52 +01:00
2ae36bade9 Drop PR builds
All checks were successful
continuous-integration/drone/push Build is passing
Closes #36 (comment).
2020-08-04 14:47:28 +02:00
77d85db350 Add terms of service
Some checks failed
continuous-integration/drone/pr Build is failing
2020-07-02 13:29:14 +01:00
43a19d64c8 Added GDPR privacy notice 2020-07-02 13:29:00 +01:00
7a53515307 Added terms of service 2020-07-02 13:11:56 +01:00
c700c414ff Added website privacy policy 2020-07-02 13:11:05 +01:00
b3bed6d48e Ignore the nojekyll file too
All checks were successful
continuous-integration/drone/push Build is passing
Follows https://github.com/keybase/keybase-issues/issues/366#issuecomment-39060720.
2020-06-28 21:31:59 +02:00
3ae5a6e803 Added .nojekyll file
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-28 00:20:26 +01:00
74949d9595 Added pip3 instead of pip to CONTRIBUTING.md
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-28 00:05:11 +01:00
a5fe6f88a5 Added folder directory for well-known in _config.yml
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 23:57:18 +01:00
8037032778 Formatting improvement
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 23:41:03 +01:00
bc2e8759b2 Include .well-known
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 23:32:22 +01:00
a5f62f6bdc Deleted typo directory
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 23:19:43 +01:00
c20ca831c6 Fix spicy well-known directory typo
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 23:02:47 +01:00
b1217dcbcd Added Matrix well-know file
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-27 22:54:23 +01:00
e9d0088195 Migrating to swarm setup
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-24 15:20:24 +02:00
6c169e26d0 Drop the bumping, just deploy same tag
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-12 16:07:37 +02:00
b6ad82d86f Use valid name
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-16 17:44:21 +02:00
f19aa81657 Fix path
Some checks failed
continuous-integration/drone/push Build is failing
2020-05-16 17:42:38 +02:00
3fded72105 Slim down compose configs
Some checks failed
continuous-integration/drone/push Build is failing
2020-05-16 17:41:19 +02:00
a5740aea02 Fix stack name 2020-05-16 17:39:58 +02:00
2a72bac756 Revert "Reset to dokku deploy for now"
This reverts commit 9f42ecaa77.

Actually, while moving to the swarm setup, we can't go back so easily.
Sooooo, reverting this and waiting for the migration to go ahead.
2020-05-16 17:39:03 +02:00
78ea06871a Rename to follow ecosystem
Some checks failed
continuous-integration/drone/push Build is failing
2020-05-16 17:32:55 +02:00
9f42ecaa77 Reset to dokku deploy for now 2020-05-16 16:57:49 +02:00
9a8bcdc66c Merge pull request 'Configure Renovate' (#30) from renovate/configure into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-07 12:04:44 +02:00
27a36aeaaa Exclude PRs for now
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-07 12:03:00 +02:00
0f2a7a6df1 Add renovate.json
Some checks failed
continuous-integration/drone/pr Build is failing
2020-05-07 10:02:12 +00:00
558b71934d Add notes on bump
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-02 18:35:50 +02:00
15c9d4a153 Build the tag
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-02 18:31:46 +02:00
fd54672540 Fix version
[ci skip]
2020-05-02 18:30:00 +02:00
3667ee109c Resolving dev/prod final issues
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-01 13:47:02 +02:00
ff4617f318 Centralise the docker image 2020-05-01 13:41:07 +02:00
333f000fcf Build and deploy image
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-01 13:39:33 +02:00
b529e2f2e8 Point to deploy docs
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-01 13:31:52 +02:00
e9a1b2e369 Fix stack name 2020-05-01 13:31:28 +02:00
351251f54f Unleash the CI 2020-05-01 13:31:06 +02:00
16339ecc2e Zomg get it finally working for production 2020-05-01 13:30:54 +02:00
d6a8259e08 Use only the single URL 2020-05-01 12:52:13 +02:00
803bf41e61 Disable CI for now 2020-05-01 12:51:35 +02:00
fa6a2e120e Absolutely blowing things up on the way to docker-compose setup 2020-05-01 12:47:10 +02:00
20ed2d29b1 Fix typo 2020-05-01 12:41:54 +02:00
188b461c58 Trying to get the volume work in prod 2020-05-01 12:41:54 +02:00
b87d648a7d Use local mount and drop commands onto new lines 2020-05-01 12:41:54 +02:00
b72febc4c8 Just try watch too 2020-05-01 12:41:54 +02:00
076a6954f4 Build and trace 2020-05-01 12:41:54 +02:00
a85b656af8 Use port only 2020-05-01 12:41:54 +02:00
cc3066bb1d Fix the labels 2020-05-01 12:41:54 +02:00
886fb51ed6 Use the exposed port 2020-05-01 12:41:54 +02:00
5b7ee79c5d Move to a docker-compose setup 2020-05-01 12:41:54 +02:00
34aca195ce Merge pull request 'Added rss feed icon to footer' (#29) from rss-icon into master
All checks were successful
continuous-integration/drone/push Build is passing
One issue that I have caused, is there is a lot of inline styling going on with the footer icons. I'll need to clean that up later on but it isn't the end of the world for now. The next time we touch it though, might be worth just adding some css to handle the issues.
2020-04-30 19:47:46 +02:00
87b6978506 Added rss feed icon to footer 2020-04-30 01:39:01 +01:00
5a6986db29 Fix URL
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-25 14:03:23 +02:00
6f9bf2d4db Grammar, typos and a link to git.autonomic.zone
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-25 13:59:44 +02:00
a303c4eaec Merge pull request 'Add datpy post' (#27) from add-datpy-post into master
All checks were successful
continuous-integration/drone/push Build is passing
Looks great to me!
2020-04-25 13:51:01 +02:00
1eb1a0ef8c Add datpy post 2020-04-23 16:53:19 +02:00
68a8df1fb1 Build first before serving
[ci skip]
2020-04-23 13:48:24 +02:00
c7579b87b5 Remove unused variables
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-23 13:37:54 +02:00
9b7b8e289d Run make build only once 2020-04-23 13:37:36 +02:00
06e53cd9bc Merge pull request 'Revert "Add freenode URL"' (#26) from revert-freenode-addition into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-23 12:31:53 +02:00
a60aef66b0 Revert "Add freenode URL"
This reverts commit 3cbc9adc49.

See #23 (comment).
2020-04-23 12:30:12 +02:00
5ff502bc72 Merge pull request 'Add freenode URL' (#23) from add-free-node-logo into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-23 12:10:29 +02:00
3cbc9adc49 Add freenode URL
Closes #21.
2020-04-23 10:00:43 +02:00
55c8859f07 Merge pull request 'Add make stop and allow --incremental' (#20) from stop-and-incremental into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 19:47:14 +02:00
9f1dd6284b Add make stop and allow --incremental
[ci skip]
2020-04-18 19:45:22 +02:00
8463aa2342 Merge pull request 'Added RSS feed for blog section' (#19) from rss-feed into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 17:30:07 +02:00
6211ec5cb4 Added plugin to generate RSS feed at /feed.xml 2020-04-18 17:29:12 +02:00
a006517b8e Disable force pushing
We assume we have our builds setup right now.

[ci skip]
2020-04-18 17:28:38 +02:00
1c980536a2 Merge pull request 'Added Gitea logo to footer' (#18) from gitea-logo into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 17:27:52 +02:00
e0007eca54 Added gitea logo to the footer and added titles to all logos
The svg is a lil bit of a hack. The svg is the proper svg logo, edited
manually. The middle transparency is actually just the background of the
current footer.

THIS NEEDS TO BE CHANGED IF THE COLOUR SCHEME CHANGES
2020-04-18 17:26:47 +02:00
27c81db722 Exclude PRs once more
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 17:26:32 +02:00
e5faea080e Remove indentation and top-level this stanza
[ci skip]
2020-04-18 17:25:26 +02:00
8094625dbc Try include/exclude events
[ci skip]
2020-04-18 17:20:48 +02:00
8868ae08bf Try master / push combinator once again :sigh:
[ci skip]
2020-04-18 17:18:59 +02:00
7e854e1616 Try refs trigger
[ci skip]
2020-04-18 17:16:16 +02:00
99bf5a891f Match master with push for triggers
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 17:05:14 +02:00
7a5c2d613b Turn on force pushing
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 16:56:16 +02:00
3645e21236 Remove new line and run formatter
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-18 16:52:07 +02:00
6623973388 Added exclusion of pull requests to drone builds
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-18 15:37:16 +01:00
80af40e8ff Add a friendlier intro
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-14 15:20:31 +02:00
8ec940fac5 Move to clearer config
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-14 12:44:58 +02:00
789cc39c10 Inline this link
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-14 11:14:18 +02:00
2df37af10d Remove old format cruft
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-13 20:00:49 +02:00
6ebcab155e Move to v2 format
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-13 19:40:29 +02:00
9105acf97c Point to git.coop URL
[ci skip]
2020-04-09 08:36:21 +02:00
af8ca3ca38 Merge pull request 'text-tweaks' (#14) from text-tweaks into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-08 19:12:25 +02:00
49f3d4ed71 Merge pull request 'pgp-key-update' (#15) from pgp-key-update into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-08 19:11:56 +02:00
850da933e8 Merge pull request 'covid-blog-post' (#13) from covid-blog-post into master
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-08 19:08:59 +02:00
07367a85a9 Touch PGP key so that commit is signed
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2020-04-08 18:01:21 +01:00
da3a3a989c Use triggers syntax
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-08 18:40:20 +02:00
dcb3ada610 Don't fuck with DNS for now
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-08 18:36:17 +02:00
489315eb60 Only build things on master 2020-04-08 18:36:07 +02:00
5a8abd8d2b Upgrade role requirements 2020-04-08 18:27:31 +02:00
9b906cff1a Re-enable DNS entry tasks 2020-04-08 18:27:24 +02:00
0afce645e0 Remove notification
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-08 18:18:12 +02:00
4b31a9364d Fix site URL
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-06 16:41:20 +02:00
20c1d5bf0b Disable DNS tasks for now
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-06 16:38:56 +02:00
39 changed files with 607 additions and 478 deletions

View File

@ -1,37 +1,27 @@
--- ---
kind: pipeline kind: pipeline
name: deploy to swarm.autonomic.zone
name: default
steps: steps:
- name: Build autonomic.zone docker image - name: bundle static
image: docker:stable image: plugins/docker
volumes:
- name: docker_sock
path: /var/run/docker.sock
commands:
- docker build --no-cache -t autonomic/autonomic.zone:drone .
- name: Deploy Autonomic.zone with Dokku
image: appleboy/drone-git-push:0.2.0-linux-amd64
settings: settings:
remote: ssh://dokku@dokku.autonomic.zone:222/autonomic.zone username:
ssh_key: from_secret: docker_reg_username
from_secret: drone_deploy_key password:
when: from_secret: docker_reg_passwd
branch: master repo: decentral1se/autonomic.zone
tags: latest
- name: Send notification to chat.internal.autonomic.zone - name: deployment
image: rmilewski/drone-rocket:latest image: decentral1se/stack-ssh-deploy:latest
when:
status: [success, failure]
settings: settings:
webhook: stack: jekyll
from_secret: rocket_chat_webhook compose: docker-compose.prod.yml
channel: drone-notify deploy_key:
username: drone-notifications-bot from_secret: drone_ssh_swarm.autonomic.zone
message: trigger:
- value: "${DRONE_COMMIT_AUTHOR} deployed site.autonomic.zone (see [commit](${DRONE_COMMIT_LINK})) :partying_face:" branch:
when: - master
DRONE_BUILD_STATUS: success event:
- value: "[commit](${DRONE_COMMIT_LINK}) failed to deploy site.autonomic.zone (see [logs](https://drone.autonomic.zone/autonomic-cooperative/autonomic.zone/${DRONE_BUILD_NUMBER})) :confounded:" exclude:
- pull_request

5
CHECKS
View File

@ -1,5 +0,0 @@
WAIT=3
TIMEOUT=3
ATTEMPTS=3
/

View File

@ -4,31 +4,40 @@
For those unfamiliar with how Jekyll works, check out [jekyll.rb] for all the For those unfamiliar with how Jekyll works, check out [jekyll.rb] for all the
details, or read up on the basics of [front matter], [writing posts] and details, or read up on the basics of [front matter], [writing posts] and
[creating pages]. [creating pages]. Alternatively, just dive in and start editing! After all, the
majority of this site is configuration is just flat text, so it's easy to work
with.
[jekyll.rb]: https://jekyllrb.com/ [jekyll.rb]: https://jekyllrb.com/
[front matter]: https://jekyllrb.com/docs/frontmatter/ [front matter]: https://jekyllrb.com/docs/frontmatter/
[writing posts]: https://jekyllrb.com/docs/posts/ [writing posts]: https://jekyllrb.com/docs/posts/
[creating pages]: https://jekyllrb.com/docs/pages/ [creating pages]: https://jekyllrb.com/docs/pages/
## Deploy It ## Development
1. Push your changes to master and Dokku will try to automatically release The prerequisites are [Docker](https://www.docker.com/) and [Docker-compose](https://docs.docker.com/compose/).
1. See the [Drone dashboard to see the build](https://drone.autonomic.zone/autonomic-cooperative/autonomic.zone/)
## Hack On It If you're on Debian, installing is easy.
The only prerequisite is [Docker](https://www.docker.com/). If you're on Debian, installing is easy. Install Docker.
```bash ```bash
$ curl -fsSL https://get.docker.com -o get-docker.sh # have a look if you want $ curl -fsSL https://get.docker.com -o get-docker.sh # have a look if you want
$ sh get-docker.sh $ CHANNEL=stable sh get-docker.sh
``` ```
Fire up the container with the following. Install Docker-compose.
```bash ```bash
$ make dockerserver $ cd autonomic.zone
$ python3 -m venv .venv
$ pip3 install -r requirements.txt
```
Then fire up the container with the following.
```bash
$ docker-compose up
``` ```
Then visit the locally running website. Then visit the locally running website.
@ -37,9 +46,8 @@ Then visit the locally running website.
Then you can edit the files as normal and reload the page. Then you can edit the files as normal and reload the page.
## Notes To stop the container when you're done, you can run:
1. For configuration, please note, we now use a `dev` environment config file: ```bash
`_config_dev.yml`. Hence if you edit one `_config*` file and you also want $ docker-compose stop
that change to be reflected in the other environment ("dev", "prod") then ```
edit the other file as well!

View File

@ -1,15 +1,17 @@
FROM decentral1se/jekyll:4 FROM ruby:2.7.2-alpine
EXPOSE 4000 EXPOSE 4000
WORKDIR /usr/src/app RUN apk --no-cache add \
bash \
curl \
g++ \
git \
make
RUN gem install bundler -v 2.1.4
RUN gem install jekyll -v 4.0.0
COPY . ${WORKDIR} COPY . ${WORKDIR}
COPY sbin/* /sbin/
RUN bundle config --global frozen 1
RUN bundle install RUN bundle install
ENTRYPOINT ["/sbin/entrypoint.sh"]

View File

@ -1,3 +1,7 @@
source "https://rubygems.org" source "https://rubygems.org"
ruby '2.6.5'
ruby "2.7.2"
gemspec gemspec
gem "jekyll-feed"

View File

@ -34,11 +34,14 @@ GEM
rouge (~> 3.0) rouge (~> 3.0)
safe_yaml (~> 1.0) safe_yaml (~> 1.0)
terminal-table (~> 1.8) terminal-table (~> 1.8)
jekyll-feed (0.13.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (2.1.0) jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0) sassc (> 2.0.1, < 3.0)
jekyll-watch (2.2.1) jekyll-watch (2.2.1)
listen (~> 3.0) listen (~> 3.0)
kramdown (2.1.0) kramdown (2.2.1)
rexml
kramdown-parser-gfm (1.1.0) kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0) kramdown (~> 2.0)
liquid (4.0.3) liquid (4.0.3)
@ -48,13 +51,14 @@ GEM
mercenary (0.3.6) mercenary (0.3.6)
pathutil (0.16.2) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (4.0.3) public_suffix (4.0.4)
rb-fsevent (0.10.3) rb-fsevent (0.10.4)
rb-inotify (0.10.1) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rouge (3.17.0) rexml (3.2.3)
rouge (3.18.0)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sassc (2.2.1) sassc (2.3.0)
ffi (~> 1.9) ffi (~> 1.9)
terminal-table (1.8.0) terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1) unicode-display_width (~> 1.1, >= 1.1.1)
@ -67,9 +71,10 @@ DEPENDENCIES
autonomic! autonomic!
bundler (>= 2.1.4) bundler (>= 2.1.4)
jekyll (>= 4) jekyll (>= 4)
jekyll-feed
RUBY VERSION RUBY VERSION
ruby 2.6.5p114 ruby 2.7.2p137
BUNDLED WITH BUNDLED WITH
2.1.4 2.1.4

View File

@ -1,21 +0,0 @@
DEV_DIST_DIR:=dist
devserver:
@echo "Serving development site from $(DEV_DIST_DIR)"
@jekyll serve --watch --incremental --destination $(DEV_DIST_DIR)
.PHONY: devserver
dockerbuild:
@docker build -t autonomic/autonomic.zone:testing .
.PHONY: dockerbuild
dockerserver: dockerbuild
@docker run \
-e JEKYLL_PORT=4000 \
-e JEKYLL_HOST=0.0.0.0 \
-e JEKYLL_CONFIG=_config_dev.yml \
-v $$(pwd):/usr/src/app \
-p 4000:4000 \
-d \
autonomic/autonomic.zone:testing
.PHONY: dockerserver

View File

@ -2,20 +2,13 @@
[![Build Status](https://drone.autonomic.zone/api/badges/autonomic-cooperative/autonomic.zone/status.svg)](https://drone.autonomic.zone/autonomic-cooperative/autonomic.zone) [![Build Status](https://drone.autonomic.zone/api/badges/autonomic-cooperative/autonomic.zone/status.svg)](https://drone.autonomic.zone/autonomic-cooperative/autonomic.zone)
> https://site.autonomic.zone > https://autonomic.zone
A [Jekyll] based site for the Autonomic Cooperative. The site is based on the [spectral-jekyll-theme] template. A [Jekyll] based site for the Autonomic Cooperative. The site is based on the [spectral-jekyll-theme] template.
[jekyll]: https://jekyllrb.com/ [jekyll]: https://jekyllrb.com/
[spectral-jekyll-theme]: https://github.com/andrewbanchich/spectral-jekyll-theme [spectral-jekyll-theme]: https://github.com/andrewbanchich/spectral-jekyll-theme
# Deploy
1. Push your changes to master and Dokku will try to automatically release
1. See the [Drone dashboard to see the build](https://drone.autonomic.zone/autonomic-cooperative/autonomic.zone/)
# Contribute # Contribute
Please see [CONTRIBUTING.md] for the juicy details. Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for the juicy details.
[contributing.md]: ./CONTRIBUTING.md

View File

@ -3,16 +3,16 @@ title: Autonomic Co-operative
email: helo@autonomic.zone email: helo@autonomic.zone
description: Sustainability, Transparency, Privacy description: Sustainability, Transparency, Privacy
baseurl: "" baseurl: ""
url: "" url: "https://autonomic.zone"
source: src source: src
destination: dist destination: dist
sass: sass:
sass_dir: ./assets/styles sass_dir: ./assets/styles
featured-image-source: featured-image-source:
500px_url: include: ["src/.well-known", "src/.nojekyll"]
github_url:
mastodon_url: https://sunbeam.city/@autonomic mastodon_url: https://sunbeam.city/@autonomic
twitter_url: https://twitter.com/autonomiccoop twitter_url: https://twitter.com/autonomiccoop
gitea_url: https://git.autonomic.zone/autonomic-cooperative/
markdown: kramdown markdown: kramdown
permalink: pretty permalink: pretty
collections: collections:
@ -25,3 +25,5 @@ exclude:
- vendor - vendor
- Gemfile - Gemfile
- Gemfile.lock - Gemfile.lock
plugins:
- jekyll-feed

View File

@ -1,27 +0,0 @@
---
title: Autonomic Co-operative
email: helo@autonomic.zone
description: Sustainability, Transparency, Privacy
baseurl: ""
url: "https://site.autonomic.zone"
source: src
destination: dist
sass:
sass_dir: ./assets/styles
featured-image-source:
500px_url:
github_url:
mastodon_url: https://sunbeam.city/@autonomic
twitter_url: https://twitter.com/autonomiccoop
markdown: kramdown
permalink: pretty
collections:
posts:
output: true
permalink: /blog/:title/
clients:
output: false
exclude:
- vendor
- Gemfile
- Gemfile.lock

View File

@ -1,5 +0,0 @@
#!/bin/bash
set -eu -o pipefail
echo $(pass show hosts/autonomic-dokku/vault/password)

View File

@ -1,47 +0,0 @@
---
- hosts: all
gather_facts: false
tasks:
- name: Load variables
include_vars:
dir: "{{ dokku_lib_root }}/data/ansible/autonomic.zone/vars/"
extensions:
- yml
- name: Set HTTP 80 port proxy
dokku_ports:
app: autonomic.zone
mappings:
- "http:80:{{ http_port }}"
state: present
- name: Setup LE certificates
shell: dokku letsencrypt autonomic.zone
args:
creates: /home/dokku/autonomic.zone/letsencrypt/certs
- name: Setup LE certificates renew cron job
shell: dokku letsencrypt:cron-job --add
args:
creates: /home/dokku/autonomic.zone/letsencrypt/cron-job
- name: Specify docker volume mounts
dokku_storage:
app: autonomic.zone
mounts:
- /home/dokku/autonomic.zone/letsencrypt/certs/current/key.pem:/etc/x509/https/tls.key
- /home/dokku/autonomic.zone/letsencrypt/certs/current/cert.pem:/etc/x509/https/tls.crt
- name: Set HTTP 443 port
dokku_ports:
app: autonomic.zone
mappings:
- "https:443:{{ http_port }}"
state: present
- name: Remove automatically configured ports
dokku_ports:
app: autonomic.zone
mappings:
- "http:4000:4000"
state: absent

View File

@ -1,54 +0,0 @@
---
- hosts: all
gather_facts: false
tasks:
- name: Load variables
include_vars:
dir: "{{ dokku_lib_root }}/data/ansible/autonomic.zone/vars/"
extensions:
- yml
- name: Prepare Python system dependencies
become: true
apt:
name: python3-pip
state: present
- name: Install dns-lexicon system wide
become: true
pip:
name: ["cryptography==2.8", "dns-lexicon==3.3.19"]
executable: /usr/bin/pip3
state: present
- name: "Create {{ domain }} DNS entry"
gandi_dns:
gandi_rest_token: "{{ gandi_rest_token }}"
domain: "{{ domain }}"
ipv4: "{{ dokku_domain_ipv4 }}"
state: present
- name: "Configure the {{ domain }} domain"
dokku_domains:
app: autonomic.zone
domains:
- "{{ domain }}"
state: present
- name: Ensure default app configured domains go away
dokku_domains:
app: autonomic.zone
domains:
- autonomic.zone.dokku.autonomic.zone
state: absent
- name: Configure the dokku app environment
dokku_config:
app: autonomic.zone
restart: false
config:
DOKKU_LETSENCRYPT_EMAIL: "{{ autonomic_admin_mail }}"
JEKYLL_HOST: "0.0.0.0"
JEKYLL_PORT: "{{ http_port }}"
JEKYLL_CONFIG: "{{ jekyll_config }}"
JEKYLL_ENV: "{{ jekyll_env }}"

View File

@ -1,6 +0,0 @@
---
- src: dokku_bot.ansible_dokku
version: v2020.3.15
- src: https://git.autonomic.zone/autonomic-cooperative/autonomic.gandi/archive/0.0.5.tar.gz
name: autonomic.gandi

View File

@ -1,8 +0,0 @@
---
ansible_python_interpreter: "/usr/bin/python3"
autonomic_admin_mail: "helo@autonomic.zone"
dokku_domain_ipv4: "94.130.105.60"
domain: "autonomic.zone"
http_port: "4000"
jekyll_config: "_config_prod.yml"
jekyll_env: "production"

View File

@ -1,8 +0,0 @@
---
ansible_become_pass: !vault |
$ANSIBLE_VAULT;1.1;AES256
34396236353735666531323238656533643465303131663464613162396333313836363630666266
6539323631656635333864316166633064633366323936610a656137616334313534333635313232
35323561303763366563316631313638363333393763323935343563303963616334336639386462
3837383830616637360a373539613630356564363662393836366462666430353439353637303035
63396633303166343433313439303539313637306637663137313533316531616434

View File

@ -1,8 +0,0 @@
---
gandi_rest_token: !vault |
$ANSIBLE_VAULT;1.1;AES256
65653461333739626564356366313338613561396163383161633561373736626138306633353261
3230376530616361343063346533633464643165643739310a303965353336353063353564643263
37396139643161346265616630633530353866356338386134383565363238393932666565663163
3831393731353735350a313235376463643439363833616263653637623363386532636132366662
65313835306637323066396232653166313262613333633061313266363338646334

View File

@ -1,5 +0,0 @@
{
"name": "autonomic.zone",
"description": "Autonomics website on the world wide web",
"repository": "https://git.autonomic.zone/autonomic-cooperative/autonomic.zone"
}

View File

@ -2,13 +2,13 @@
Gem::Specification.new do |spec| Gem::Specification.new do |spec|
spec.name = "autonomic" spec.name = "autonomic"
spec.version = '0.0.0' spec.version = "0.0.0"
spec.date = '2017-09-24' spec.date = "2017-09-24"
spec.summary = "" spec.summary = ""
spec.description = "" spec.description = ""
spec.authors = ['autonomic co-operative'] spec.authors = ["autonomic co-operative"]
spec.email = 'autonomic.posteo.net' spec.email = "autonomic.posteo.net"
spec.files = 'README.md' spec.files = "README.md"
spec.add_development_dependency "jekyll", ">= 4" spec.add_development_dependency "jekyll", ">= 4"
spec.add_development_dependency "bundler", ">= 2.1.4" spec.add_development_dependency "bundler", ">= 2.1.4"

33
docker-compose.prod.yml Normal file
View File

@ -0,0 +1,33 @@
---
version: "3.8"
services:
jekyll:
image: decentral1se/autonomic.zone:latest
command: bundle exec jekyll serve --host 0.0.0.0 --trace
environment:
JEKYLL_ENV: production
networks:
- proxy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4000"]
interval: 15s
timeout: 10s
retries: 10
start_period: 20s
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.http.services.jekyll.loadbalancer.server.port=4000"
- "traefik.http.routers.jekyll.rule=Host(`autonomic.zone`)"
- "traefik.http.routers.jekyll.entrypoints=web-secure"
- "traefik.http.routers.jekyll.tls.certresolver=production"
- "traefik.http.routers.jekyll.tls.options=default@file"
- "traefik.http.routers.jekyll.middlewares=security@file"
networks:
proxy:
external: true

11
docker-compose.yml Normal file
View File

@ -0,0 +1,11 @@
---
version: "3.7"
services:
jekyll:
image: "jekyll/jekyll:4"
command: jekyll serve --watch --force_polling --trace
volumes:
- ".:/srv/jekyll"
ports:
- "4000:4000"

6
renovate.json Normal file
View File

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}

View File

@ -1 +1 @@
ansible==2.9.6 docker-compose==1.28.0

View File

@ -1,15 +0,0 @@
#!/bin/bash
set -eu -o pipefail
# Usage
# ./encrypt.sh mysecretname mysecretvalue
declare name="$1"
declare secret="$2"
ansible-vault \
encrypt_string \
--vault-password-file ansible/.vault.sh \
--name "$name" \
"$secret"

View File

@ -1,24 +0,0 @@
#!/bin/bash
set -eu -o pipefail
# Fire up Jekyll with the right configuration
run_jekyll() {
set -eu
bundle exec jekyll serve \
--config "$JEKYLL_CONFIG" \
--host "$JEKYLL_HOST" \
--port "$JEKYLL_PORT" \
--trace \
--verbose
}
# Main entrypoint
main() {
set -eu
run_jekyll
}
main

0
src/.nojekyll Normal file
View File

View File

@ -0,0 +1,3 @@
{
"m.server": "matrix.autonomic.zone:443"
}

View File

@ -11,15 +11,27 @@
<ul class="icons" style="margin-bottom: 0; padding-top: 1em"> <ul class="icons" style="margin-bottom: 0; padding-top: 1em">
<li> <li>
<a rel="noopener" href="{{ site.twitter_url }}" style="border-bottom: none"> <a title="RSS Feed" rel="me" href="{{ '/feed.xml' | absolute_url }}" style="border-bottom: none">
<!-- This SVG needs to be changed if you change the colour scheme as it is a massive hack. -->
<img alt="rss" style="height: 2rem;color: #fff" src="{{ '/assets/svg/rss-square-solid.svg' | absolute_url }}">
</a>
</li>
<li>
<a title="Twitter" rel="noopener" href="{{ site.twitter_url }}" style="border-bottom: none">
<img alt="twitter" style="height: 2rem;" src="{{ '/assets/svg/twitter-brands.svg' | absolute_url }}"> <img alt="twitter" style="height: 2rem;" src="{{ '/assets/svg/twitter-brands.svg' | absolute_url }}">
</a> </a>
</li> </li>
<li> <li>
<a rel="me" href="{{ site.mastodon_url }}" style="border-bottom: none"> <a title="Mastodon" rel="me" href="{{ site.mastodon_url }}" style="border-bottom: none">
<img alt="mastodon" style="height: 2rem;" src="{{ '/assets/svg/mastodon-brands.svg' | absolute_url }}"> <img alt="mastodon" style="height: 2rem;" src="{{ '/assets/svg/mastodon-brands.svg' | absolute_url }}">
</a> </a>
</li> </li>
<li>
<a title="Gitea" rel="me" href="{{ site.gitea_url }}" style="border-bottom: none">
<!-- This SVG needs to be changed if you change the colour scheme as it is a massive hack. -->
<img alt="gitea" style="height: 2.3rem;" src="{{ '/assets/svg/Gitea_Logo.svg' | absolute_url }}">
</a>
</li>
</ul> </ul>
</div> </div>
@ -42,6 +54,10 @@
</address></br> </address></br>
We are a Co-operative Society registered with the <a href="https://mutuals.fca.org.uk/Search/Society/30380">FCA</a>. We are a Co-operative Society registered with the <a href="https://mutuals.fca.org.uk/Search/Society/30380">FCA</a>.
<b>Registration Number: 4597 </b> <b>Registration Number: 4597 </b>
</br></br>
</div>
<div style="vertical-align: bottom;">
<a href="{{ '/privacy' | relative_url }}">Privacy Policy</a> - <a href="{{ '/terms' | relative_url }}">Terms of Service</a> - <a href="{{ '/gdpr' | relative_url }}">GDPR</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -14,7 +14,7 @@
<div> <div>
<h3>Websites</h3> <h3>Websites</h3>
<p> <p>
We offer <a href="https://wordpress.com/">Wordpress</a> and static sites. Either managed or unmanaged with frictionless tools for editing and publishing that empower users. <a href="https://matomo.org/">Matamo</a> provides ethical analytics to measure impact. We offer <a href="https://wordpress.com/">Wordpress</a> and static sites. Either managed or unmanaged with frictionless tools for editing and publishing that empower users. <a href="https://matomo.org/">Matomo</a> provides ethical analytics to measure impact.
</p> </p>
</div> </div>
</li> </li>

View File

@ -0,0 +1,52 @@
---
layout: post
title: Hyperpy, the punk-to-punk protocol in Python
description: A new Python implementation of the Hypercore protocol is cooking at Autonomic
image: 2020-04-23-dat-protocol.png
category: technology, peer-to-peer, hypercore-protocol
date: 2020-04-23
---
# Hyperpy, the punk-to-punk protocol in Python
We're quite excited by the new wave of community-developed peer-to-peer
technology. [Scuttlebutt], [Cabal], [Mapeo] and [Beaker browser] are inspiring
examples of software which show that technology can be built to operate without
running on centralised commercially-owned infrastructure (e.g. WhatsApp).
One of the underlying innovations for these technologies is the [Hypercore
protocol], which is a way of describing how two computers can send information
to each other directly.
Today, the reference implementation of the Hypercore protocol is written in
Javascript. The Javascript ecosystem has proved to be remarkably flexible for
advancing this next generation of tools. Simple methods of publishing (npm
publish), well-established distribution channels (the browser) and a
[philosophy of modularity] have enabled so many to get started with building
peer-to-peer technology.
However, there is a great need for other languages and ecosystems to benefit
from the tools and concepts that are being developed based on the reference
implementation. People from all walks of life need a working implementation in
their preferred language of choice. In response to this, we are seeing projects
like [Datrs] and [Datcxx] emerge (please note, the Hypercore protocol was once
called the Dat protocol, see [this blog post] for more information).
Alongside these efforts, a member of Autonomic has begun to work on Hyperpy, a
Python-based implementation of the Hypercore protocol. The project proposes a
roadmap but offers no deadlines and receives no funding at current status.
However slowly, things are moving along. Further progress updates will be
posted on this blog as they come in. All development is taking place on
[git.autonomic.zone/hyperpy].
[scuttlebutt]: https://scuttlebutt.nz/
[cabal]: https://cabal.chat/
[mapeo]: https://www.digital-democracy.org/mapeo/
[beaker browser]: https://beakerbrowser.com/
[hypercore protocol]: https://hypercore-protocol.org/
[philosophy of modularity]: https://mafinto.sh/blog/pragmatic-modularity.html
[datrs]: https://github.com/datrs/
[datcxx]: https://datcxx.github.io/
[git.autonomic.zone/hyperpy]: https://git.autonomic.zone/hyperpy/
[this blog post]: https://blog.datproject.org/2020/05/15/dat-protocol-renamed-hypercore-protocol/

View File

@ -0,0 +1,72 @@
---
layout: post
title: How we make decisions
description: Our collective's horizontal decision making process
image: trees.jpg
category: decision making, democracy
date: 2021-01-21
---
# How we make decisions
In Autonomic, we make decisions collectively, while also attempting to empower autonomous action by individual workers.
We designed our decision making process using decision making tools we had experienced through participation in various horizontal organisations. We hope this tool is useful to others in the struggle for a better world.
Our decisions can be split intro three categories: **Small, Medium and Large**.
## 1) Small - Get on and do the thing
- No one cares.
- Made by an individual within the co-op.
- Could be in any area.
- Up to individual co-op members to decide if they should just make the decision, or share it with the rest of the co-op to seek consensus.
## 2) Medium - Consensus pending objections
- About admin and infrastructure.
- Don't have an effect on the direction or operation of the co-op.
- Give a deadline. Unless anyone objects or asks for more time then it passes.
- The deadline must reasonable (a week by default).
- If any member of the co-op thinks it's a Large decision, achieve Maximum Consensus™ (see below).
## 3) Large - Maximum Consensus™
- Important decisions affecting the operation, direction, working conditions and finances of the co-op.
- Consensus voting: addressing any concerns.
- Can be requested by any member of the co-op for any decision.
- Input from every co-op member.
- Whoever proposes Large decisions is responsible for chasing up members for votes.
- Votes can be in favour, against, abstain (stand aside) or block.
- One member, one vote.
## Process
For Medium and Large decisions:
1. Write up a proposal in a [HedgeDoc pad](https://hedgedoc.org/).
2. Link to the proposal on the proposals page on our wiki.
3. Announce the decision in the #announcements channel of our internal chat.
4. List the decision on the Decisions page on our wiki.
4. Announce the result in #announcements and record it on the Decisions
page of our wiki.
## Proposal format
(For Medium and Large decisions).
- What you want to change.
- Who it affects.
- Size (Medium / Large).
- Deadline.
- What chat channel you want discussion to happen in.
## Example proposal
> @all I'd like to propose (Medium|Large) decision XXX, to write our name as
"aUtOnOmIc cöööpERATIVE" in all our public communications.
>
> Deadline for votes is DEADLINE let me know if you need more time to vote than that.
>
> Please send absolutely any and all replies in #CHANNEL, not here 🙏
>
> 👍 this message for "enthusiastic consent", 🤷 for "stand aside" or 👎 if you need to indicate your extreme disagreement with this idea.
>
> 👇 VOTES HERE
## Further resources
Extra information about decision making processes in co-operatives can be found on the [Seeds for Change website](https://seedsforchange.org.uk/resources).

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
src/assets/images/trees.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 KiB

View File

@ -12,19 +12,19 @@ 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
@ -37,157 +37,158 @@ IO+EGhTtR0EooVY63Y59KZVr9jwEikKMpGbfvSCHiXysKAzkV+PGQ5Z178y7U8dK
6Q3MWczmlrnyQVQ6xXlNxLfvcn3IUj+ADaW8LkQyVrJM0EcbBk4cw0Ri4tOyHYl1 6Q3MWczmlrnyQVQ6xXlNxLfvcn3IUj+ADaW8LkQyVrJM0EcbBk4cw0Ri4tOyHYl1
f5Bx/zCbpCkTf4uDfTE+cdt41FYiyvx0Amu7plZ3ibGUlhbswk8MdzofBK2DixTS f5Bx/zCbpCkTf4uDfTE+cdt41FYiyvx0Amu7plZ3ibGUlhbswk8MdzofBK2DixTS
4voMlbDE4zeSBNHU5wPW1HeIRgQTEQIABgUCWoxPHAAKCRC1UnX7y+g4PH8dAJwJ 4voMlbDE4zeSBNHU5wPW1HeIRgQTEQIABgUCWoxPHAAKCRC1UnX7y+g4PH8dAJwJ
e2Gas1fDwoYesuHCNOP33mj5WwCeNBat5nVVRbP9rTbSjcP+gnWQXA2JAlcEEwEI e2Gas1fDwoYesuHCNOP33mj5WwCeNBat5nVVRbP9rTbSjcP+gnWQXA2JAlQEEwEI
AEECGyMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AFCQtW2zUWIQSC/IfFGnGQL9wQ AD4WIQSC/IfFGnGQL9wQLPVPkNVbsksRRwUCWf3BugIbIwUJAi0RlAULCQgHAgYV
LPVPkNVbsksRRwUCW+DdWAIZAQAKCRBPkNVbsksRR2SJEACJA9GtC67i+tP7cWTY CAkKCwIEFgIDAQIeAQIXgAAKCRBPkNVbsksRR/11D/9PjT5I4kLqb7aqeb2CVtla
La9iRUI14fLZrAnry+bN+B/f2IDpvv2eZXlkdTdUo7PF5/+1ug8oTV3NkkfhQ59v hX/UJ3xFEduFCOtJ2yn/9qESsP07PksZ0OEeIreMBDf2SW9OeqoNl8MwMDF28Mxa
rNp3XEhqkG3fIwSVYXyAj3flxS7Oa5PHUKfEIzR/hGX6k8YGxb/ILHr4vqEcLnrf /8rmO/wtVE1RYOWaPxQve9V+1ok5pOFJgHntSBZyHxu5Kygn4CqPazQBqzV/nfP4
Nz0F6p6wD+XoNUqJv/xogwWj8McnNg5594ksIfFfkJixoAOQTEzN722+90nVguN6 7lJ5/hUAB430nWkMs5Z8EbyVwJW/f7ATbomxGwaSevD4N/FuuipkPcywrTxsU8t5
/h2EG2iMKhDwxgS54MDLN0MySOSiKmAqD1oPzH9mLUXI1Wl4SI9GPiaiKR8ATgGw SwHymaBAVT963kCqDR2/qj7POHdQzl0xVOSyO1Z5rp0P4vrh6llJTrk243RWB45Z
w/+apBi5G38LQo7wZatCXiiht1tOE5Daxrs7Y6dKk8tbFzANxztIyXJl8Vcavk2s CYLoLQpSyJcBeScPgSMU0ACQrt0hX3ADsqZv0PNdKiWaFoTpKOW3cPqCH7rYQRqq
9mMnTxlYu+6qu1tuhuo5MLMyQ5AVb+cfa3C83djMT8q5EOHSCBZ/eRKrd52XxQMM 7WDlRh+MEBeycJ8WNdNZIlMpEjsuCXJqksAg4aLC/hSTyPYmWxKMMOCBc90ibafb
gHD7mrM4LwXk6YdpJsthg/XkrpbbRhhV8yiLgjL7c75gmdzY9rWOxnVH7xHM/p9G rwivTQk2VNnDdhI8N6c6vLF5ptayMK6tF0W80PloqSUUncVLCvqhbLUZ9mR8dBoV
PsTFPmuvgsz2Hq6tSzqOdr166kKb957FExC/Z7U9ExtToPOVDW5wLFC81VHg8F6I ihRObIEGbGOMb8GV2ZgxFE6w84Tq8TT1cOFTa9unpkupd1shhP1tJvCw/xfYKf/b
bAdy7JUDdGm7Gcw+RZfSS248fsmPtCK8AY6SFgYKQjviscRSprzis7fwOzE+pLgw FPgmLXOG4m2i5IDuh8N2SvJvjRHfxL07V94ExxfMgHBg0POKUE7BJH21lZ1oTtyq
mBqYC7QVqhEvnykeXkQkRzzl9Wa3zrikYniPk8tphQrvU2AQWB9wbPk2EVNaEPXE fiIv4KHzTju03YclgnbA+/LVUt3N32bSKGJIc8twh21WWHmfiWd/DxlEjVdKg4d9
HzaRLV1CDEL7bX1xjHs7cOM5x4kCVAQTAQgAPgIbIwULCQgHAgYVCAkKCwIEFgID CrZiePweE7ztfih5tIo5YokCVAQTAQgAPgIbIwULCQgHAgYVCAkKCwIEFgIDAQIe
AQIeAQIXgBYhBIL8h8UacZAv3BAs9U+Q1VuySxFHBQJbor05BQkLVts1AAoJEE+Q AQIXgBYhBIL8h8UacZAv3BAs9U+Q1VuySxFHBQJbor05BQkLVts1AAoJEE+Q1Vuy
1VuySxFHKcQP/joTOsDKjVkjZmYtoFixIBPgIfHcDFKN4UyVg/79Ue3xNaaUAze9 SxFHKcQP/joTOsDKjVkjZmYtoFixIBPgIfHcDFKN4UyVg/79Ue3xNaaUAze99NSL
9NSLD8SBYbmI4y26H61u19WW2EyXs77jqgu6h00wKt0Ka+mFOHIhsd4gj5S2DXaz D8SBYbmI4y26H61u19WW2EyXs77jqgu6h00wKt0Ka+mFOHIhsd4gj5S2DXaz+XJp
+XJpllUm3n+LlU7Usi7MXkfwmKW0HmKRlJgqN9UCNczj5ldkcByuWd+h9NsDN8Q5 llUm3n+LlU7Usi7MXkfwmKW0HmKRlJgqN9UCNczj5ldkcByuWd+h9NsDN8Q5RADU
RADU+/wOaH47rcg8hNRJUtoBhz8qtU/5whlGMmV+Mi585eHlUXKHtsTtLfjzxBjx +/wOaH47rcg8hNRJUtoBhz8qtU/5whlGMmV+Mi585eHlUXKHtsTtLfjzxBjxDvnD
DvnD8gcvFYUnFALW/qM6uZMcfjt3pEcetQ3Jj9dWl6QZujawtATf7jG79LVe9v3c 8gcvFYUnFALW/qM6uZMcfjt3pEcetQ3Jj9dWl6QZujawtATf7jG79LVe9v3cTy1F
Ty1F+dQ59HuzkLLsq4TLjgIafABpaZNUezVhpeREW0ucOyA66Jgm4eIpTLlk0MoU +dQ59HuzkLLsq4TLjgIafABpaZNUezVhpeREW0ucOyA66Jgm4eIpTLlk0MoUvzsY
vzsY2jlQ13EUtFaL42xW44nYzeJm+PJNL7+hlh8GjlA4SjeF8vOpmIEOqn2cNhzp 2jlQ13EUtFaL42xW44nYzeJm+PJNL7+hlh8GjlA4SjeF8vOpmIEOqn2cNhzpBn8N
Bn8NXcfI/kLvYknvuTvhlIRG22eCOD89Y4QEoK0L51FSHdpHKs20gEdftpZWG513 XcfI/kLvYknvuTvhlIRG22eCOD89Y4QEoK0L51FSHdpHKs20gEdftpZWG513dHCN
dHCNnXCp6+aQ1v6lkREQUYzNX11pRVJC6Yojs5rs4MN779adSMpF29VjE8yM0D6X nXCp6+aQ1v6lkREQUYzNX11pRVJC6Yojs5rs4MN779adSMpF29VjE8yM0D6XlPIp
lPIpYyiOCeG7b5aln4+Sn4JYJ8usIlCrPTm0uDcHrnISVn7LeIvbMn3t1KqhF4BT YyiOCeG7b5aln4+Sn4JYJ8usIlCrPTm0uDcHrnISVn7LeIvbMn3t1KqhF4BTkJyH
kJyHVUn3+oNSTQVUhtd4lXO3UcZc4zddYkbLeF2QeY+6yVMFyiB7izRTtCxBdXRv VUn3+oNSTQVUhtd4lXO3UcZc4zddYkbLeF2QeY+6yVMFyiB7izRTiQJXBBMBCABB
bm9taWMgQ29vcGVyYXRpdmUgPGF1dG9ub21pY0Bwb3N0ZW8ubmV0PokCVAQTAQgA AhsjBQsJCAcCBhUICQoLAgQWAgMBAh4BAheABQkLVts1FiEEgvyHxRpxkC/cECz1
PgIbIwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgBYhBIL8h8UacZAv3BAs9U+Q1Vuy T5DVW7JLEUcFAlvg3VgCGQEACgkQT5DVW7JLEUdkiRAAiQPRrQuu4vrT+3Fk2C2v
SxFHBQJZ/cGYBQkCLRGUAAoJEE+Q1VuySxFHwOEP/j2uPM+FUM84X5DzPdJ20mUA YkVCNeHy2awJ68vmzfgf39iA6b79nmV5ZHU3VKOzxef/tboPKE1dzZJH4UOfb6za
1omWmBMgttW/S5VY7+ACpJWa2MP6qjGmjl/mmgGKTq31lLbvDHDD796fouZUGXqf d1xIapBt3yMElWF8gI935cUuzmuTx1CnxCM0f4Rl+pPGBsW/yCx6+L6hHC563zc9
8spPyF4VVcreqJilBFrGpDEkL10B3K/WfpS/k5p87IH6JudNNIM0lUyAG1KR5q8l BeqesA/l6DVKib/8aIMFo/DHJzYOefeJLCHxX5CYsaADkExMze9tvvdJ1YLjev4d
MhEQeXz4RWE+ZIF9mAmrGRLb1OIaNYpKVSQliBh3F6jiyQ3uiUx//6x/tSFOfxqR hBtojCoQ8MYEueDAyzdDMkjkoipgKg9aD8x/Zi1FyNVpeEiPRj4moikfAE4BsMP/
M1tdcb8gDKs6u3zFB+uM5BywGzRNTIcF8Ie2smavrQ0qSgQzacQmIWFpu0V2L4QX mqQYuRt/C0KO8GWrQl4oobdbThOQ2sa7O2OnSpPLWxcwDcc7SMlyZfFXGr5NrPZj
kJRQiUkVeRkhDV+fWcR+49BuFQgU2K8YB8n2JLalG5l7gBSfQ4FUOUhxmDMquVIJ J08ZWLvuqrtbbobqOTCzMkOQFW/nH2twvN3YzE/KuRDh0ggWf3kSq3edl8UDDIBw
yS7nLsMBBYtl7SrFe776uYaxNE+hYofv3mRRz/dApRxLc7jCI9dg0PtZjAaCrahg +5qzOC8F5OmHaSbLYYP15K6W20YYVfMoi4Iy+3O+YJnc2Pa1jsZ1R+8RzP6fRj7E
FPHmXLZi0jg+Ijbpx8TI2MUf0P20iYeL6cRFKh0M774H0XwYLi/JFol+5bgscBF6 xT5rr4LM9h6urUs6jna9eupCm/eexRMQv2e1PRMbU6DzlQ1ucCxQvNVR4PBeiGwH
UwyL0gwiO+eamXi6VCNAn/4RJtdwsOSK+M62ZXl78cb7UrK7I7fDOuZFWS4p57CM cuyVA3RpuxnMPkWX0ktuPH7Jj7QivAGOkhYGCkI74rHEUqa84rO38DsxPqS4MJga
ZgS5W9RQDEmPJUCBTEfByGBLs/YFiDUrNlt53UhzSe1xIQs8CM0Vg4wtE6ipT0UL mAu0FaoRL58pHl5EJEc85fVmt864pGJ4j5PLaYUK71NgEFgfcGz5NhFTWhD1xB82
lE79DwrgI1CaKOyL8RQf43oQ3kYz+HgY3YMqTYGrpDRbJNl1oeYFsHf/v5rd+4Nb kS1dQgxC+219cYx7O3DjOce0LEF1dG9ub21pYyBDb29wZXJhdGl2ZSA8YXV0b25v
CnXGswAnQId7eFmd4cX/iQIzBBMBCAAdFiEE70ujcLPqlBi+AFx24UxUHrwFfywF bWljQHBvc3Rlby5uZXQ+iQJUBBMBCAA+AhsjBQsJCAcCBhUICQoLAgQWAgMBAh4B
AlnKafIACgkQ4UxUHrwFfyybixAAiim4L86loIMD9wfXmmrOnp7V7Z8Xuwo3hZTb AheAFiEEgvyHxRpxkC/cECz1T5DVW7JLEUcFAluivT0FCQtW2zUACgkQT5DVW7JL
0qtYXdCilkSYbnQthUiHiGaE0c3BMFBUX7yQdTIewmRc6CGkyWNNcyNC0y7HA/B7 EUeGAw/+PO2Bw+NYp9qG9g3cSCQsMDhTLmzWxOsLXlgvnfZ17q1K0jItvFGJwhQF
HiGZHlymxDTdrB39AoLv6Bg76pkNIWcUGKkNKHETZSnB/MV2fPg7eQNvLD3qhdNl 72ItINVccxlv+hErcl0VAdPNIQ1Egl9cBiFDUWnfkE6qRETBe5ZCPzrDyIO8Kwdw
ZCTXaT2y9VIPc+acE21C1WyCLtp6F/SDlLlR5F2oDSEX81jLupzBHXsHe/WVkyLV mTXKfHMmyuF7t58IzrtsxvdNVDbb9PT4uUg6ocZzmYxVnMymsOldeUrCL6b2e3Pn
yCepI/iNDbeVYVkY/ZmKoY+XW7UkT9mQboKmRNoz0aQFFsTL9Xl6Dlo6K3nbGvKV 1ciPArlJztTCrGL45eYKCRwHE0LArEk3UevW4IXSZVCpCa/JykFl90ytTwKvyis1
wyVwiipwdl2CkFDfi2qpsDUGqXSpvjgMvfaIBNreAzQgDFafqG/UWkkL3Sy7XQkn 9QgvTR2x7Zphv8kuk4pTBY3hPzocZR7MykHEJ8Ly0VyxudAnZk4mpUj/bM8HdTM/
1+4Yb5CEzz7JwpD/5ah2tE8KmN8JpxeRaVoQAZ9i7G8Wd/8XtAsifOAdLqnnUvZc OYNdwhMb5TkJFGet4q5lwa0mK9kEQRgFW+v2aq5ASp0HSNa2fmXfdQ/TaIiS2ZhJ
N7CeEcJCba0Gg03zl17bjHQIVbCfjqVGtxeSHyRdbJ6ilrdBRq0AdoCZ46JZsWIM mObl9d3m9y/Qvmd4kNmT4xD/2FgJlvMj0eo5khdhekDt/FNCMjqcjnqNNwY7YSWv
U3Nvk+Ei16Ie5vO2TOd7WDRohI/H4yFU+hHfX7+P93xYBe8md2YMPCzf/10gU+fD +V2IlGi+3om4h9n/hFBvu2rkA9pa6y7QYCz39lM9Sb+uWNcd2/zy8lD/eB5eoUXJ
MCV3M8E9nnnJF2uYyalzayqgFuun7TfRQ1rC02CWZMiaTiAvoZNrLhn7Z+Nm+pPP sYc0z/UfLe+/0o25Ba4TDzE6ZPOTpc6UoQjsDyI0slnrwWgvDQQkJ99/NeZw9aHK
b7Anb2R5w1Kb/cngTZ7NvBw5qlvA9a+dXpgSsiE7kV4Npe+zTCU0gxD+u28FX+Ad 8GlIdOjTKzPTri/Q/d7ZO+1WlawATt5zi/6tJE8WehVfK6flpZpzbTVBH0Dbqx/z
nXzO38+JAjMEEwEIAB0WIQTa+pyoTP1I9fzqzqrt6Tlin1waagUCWf3B5AAKCRDt +ddQG2GudPYA/QPGBIiPsclROy4PA4wYCv50l3gT7hyfFvhRKImJAjMEEwEIAB0W
6Tlin1waaqs/D/45TzZcqmiJMEmzvxiN6MZU2NiUEioLSzSlXk8mqw6xmpSjR7r1 IQTvS6Nws+qUGL4AXHbhTFQevAV/LAUCWcpp8gAKCRDhTFQevAV/LJuLEACKKbgv
6mdngkCn1dbvriTF4DBqSVspdEV5B5O9m/Q/RMAw8iKxF6oL/bQ8iiEQcK4GTkL4 zqWggwP3B9eaas6entXtnxe7CjeFlNvSq1hd0KKWRJhudC2FSIeIZoTRzcEwUFRf
+li5ruoNOmiboUy4Ivtx5htlogkcFFfyTw3omEjJ0OMWBSWti+hIJbvv49BuLDw6 vJB1Mh7CZFzoIaTJY01zI0LTLscD8HseIZkeXKbENN2sHf0Cgu/oGDvqmQ0hZxQY
4pNcmFW2zeT8RKaX/e56g4+aXEK3SV6Ii0XXRk23UBnlQ+EXImNMUcIkke4I1c7H qQ0ocRNlKcH8xXZ8+Dt5A28sPeqF02VkJNdpPbL1Ug9z5pwTbULVbIIu2noX9IOU
UHFL7PW9RTlZEHeAosbTL16rrz03uT6P4dGdQNnS00qMD0UZTIw7oGHhDgfnM00V uVHkXagNIRfzWMu6nMEdewd79ZWTItXIJ6kj+I0Nt5VhWRj9mYqhj5dbtSRP2ZBu
pKp4E3Mn02c77r2CMitovCdWYkITqHWuuyAjFN817FHyIPs3lxyNNC5EsRerQmg9 gqZE2jPRpAUWxMv1eXoOWjoredsa8pXDJXCKKnB2XYKQUN+LaqmwNQapdKm+OAy9
S9brNrDi56Lg1Bu9lidMfCuEWXCmJlCAmmfKH+Rs01a+LEdPaKz+1JfPkVnfJN4B 9ogE2t4DNCAMVp+ob9RaSQvdLLtdCSfX7hhvkITPPsnCkP/lqHa0TwqY3wmnF5Fp
mpxa2w7EsHifxOGcVOTIKb3ctqqHfLlkzBLIlZSThIBG0Yr+6/xjOTDO6+eXvvCW WhABn2LsbxZ3/xe0CyJ84B0uqedS9lw3sJ4RwkJtrQaDTfOXXtuMdAhVsJ+OpUa3
/BEDVZIzup1oiBD5+3Jgin+vXnwGhciqJu2qKLGy5pJIoki8l1S7bB6J71VeUuhi F5IfJF1snqKWt0FGrQB2gJnjolmxYgxTc2+T4SLXoh7m87ZM53tYNGiEj8fjIVT6
fHo4UbftBWghLgQ+mInY+vgxrE8HFt9HSUbbTwslI+Ok7zjQ4TNY0JHgf1qfClk6 Ed9fv4/3fFgF7yZ3Zgw8LN//XSBT58MwJXczwT2eeckXa5jJqXNrKqAW66ftN9FD
MOCtvgSVhxYHJXbbZrzhRgT4Ugu87QhbHcB+d4G5TljUrj4slQbREs9qnIhGBBMR WsLTYJZkyJpOIC+hk2suGftn42b6k89vsCdvZHnDUpv9yeBNns28HDmqW8D1r51e
AgAGBQJajE8cAAoJELVSdfvL6Dg86YwAnjRvy4sZj3h0mc9vxtE3SeZyoeFrAJ9M mBKyITuRXg2l77NMJTSDEP67bwVf4B2dfM7fz4kCMwQTAQgAHRYhBNr6nKhM/Uj1
2MoFJZBu0Tgu2GrGWZAW/zzGVIkCVAQTAQgAPhYhBIL8h8UacZAv3BAs9U+Q1Vuy /OrOqu3pOWKfXBpqBQJZ/cHkAAoJEO3pOWKfXBpqqz8P/jlPNlyqaIkwSbO/GI3o
SxFHBQJZseOEAhsjBQkFo5qABQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJEE+Q xlTY2JQSKgtLNKVeTyarDrGalKNHuvXqZ2eCQKfV1u+uJMXgMGpJWyl0RXkHk72b
1VuySxFHKYQP/1HyBo0KM55ywKGQvjvQzH2JO/V+yg+SYwr1S63sQNEkDF8o06FD 9D9EwDDyIrEXqgv9tDyKIRBwrgZOQvj6WLmu6g06aJuhTLgi+3HmG2WiCRwUV/JP
pJw+axCFFzmn6Kfbv6vx0J9LgEhhraFgBlSDv91ZsmMfaYxsR6/f2ru/kTmrOdww DeiYSMnQ4xYFJa2L6Eglu+/j0G4sPDrik1yYVbbN5PxEppf97nqDj5pcQrdJXoiL
TDm562y+sJGSd4b+yWa5sOdr4u4HusTmZlNbPm2s+YM2GCN4fv1JmQJ0UCuJs/Hc RddGTbdQGeVD4RciY0xRwiSR7gjVzsdQcUvs9b1FOVkQd4CixtMvXquvPTe5Po/h
FGCPNCrpMcId/0HsDt+9onPivzXzpTEx6eS2e52Fn3JJvOy00A7kxz5Lxa6dqzIu 0Z1A2dLTSowPRRlMjDugYeEOB+czTRWkqngTcyfTZzvuvYIyK2i8J1ZiQhOoda67
krdU2CFa/dsFlx3Ai3O1TQTczKYVkv9poiNI0evRudxaUzBqDrdJqtblo2q2xgUQ ICMU3zXsUfIg+zeXHI00LkSxF6tCaD1L1us2sOLnouDUG72WJ0x8K4RZcKYmUICa
DbgEH4uxY1cdHOJg98hn6Qg50hYeVZ9Qauqbxrvxi2oykitfvGWW4W6HT7CbXYSH Z8of5GzTVr4sR09orP7Ul8+RWd8k3gGanFrbDsSweJ/E4ZxU5Mgpvdy2qod8uWTM
VZxq/hUb+D25annGxoifTtnH8dkNnYZyct1rF/IVjOk1a6yfpye3GgpQ+tq0Bi6b EsiVlJOEgEbRiv7r/GM5MM7r55e+8Jb8EQNVkjO6nWiIEPn7cmCKf69efAaFyKom
dePq35jrUuTmbY1idlDhTT1AZVoEJQo0UkaZkaw2K2F+B5poGVgXYTGdCIZzgBmx 7aoosbLmkkiiSLyXVLtsHonvVV5S6GJ8ejhRt+0FaCEuBD6Yidj6+DGsTwcW30dJ
wddw48JsnvonbnOY4qobFG4xmUy4teRDUcFa5cYgqFwaXFmD8OxtkLBSLyfRzpDT RttPCyUj46TvONDhM1jQkeB/Wp8KWTow4K2+BJWHFgcldttmvOFGBPhSC7ztCFsd
5tHQFGMvAkvy21G6j6R82bCvIdPZZlRzmIkF3pEpoClcuSM4qh5MYmF0FO5zcxOo wH53gblOWNSuPiyVBtESz2qciEYEExECAAYFAlqMTxwACgkQtVJ1+8voODzpjACe
0+4KUOry1BIVmY7Pe+xk8D2IP3lTKACD9T0N+VpFageLvDEWQTUQkMJjiQJUBBMB NG/LixmPeHSZz2/G0TdJ5nKh4WsAn0zYygUlkG7ROC7YasZZkBb/PMZUiQJUBBMB
CAA+AhsjBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAFiEEgvyHxRpxkC/cECz1T5DV CAA+AhsjBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAFiEEgvyHxRpxkC/cECz1T5DV
W7JLEUcFAluivT0FCQtW2zUACgkQT5DVW7JLEUeGAw/+PO2Bw+NYp9qG9g3cSCQs W7JLEUcFAln9wZgFCQItEZQACgkQT5DVW7JLEUfA4Q/+Pa48z4VQzzhfkPM90nbS
MDhTLmzWxOsLXlgvnfZ17q1K0jItvFGJwhQF72ItINVccxlv+hErcl0VAdPNIQ1E ZQDWiZaYEyC21b9LlVjv4AKklZrYw/qqMaaOX+aaAYpOrfWUtu8McMPv3p+i5lQZ
gl9cBiFDUWnfkE6qRETBe5ZCPzrDyIO8KwdwmTXKfHMmyuF7t58IzrtsxvdNVDbb ep/yyk/IXhVVyt6omKUEWsakMSQvXQHcr9Z+lL+Tmnzsgfom5000gzSVTIAbUpHm
9PT4uUg6ocZzmYxVnMymsOldeUrCL6b2e3Pn1ciPArlJztTCrGL45eYKCRwHE0LA ryUyERB5fPhFYT5kgX2YCasZEtvU4ho1ikpVJCWIGHcXqOLJDe6JTH//rH+1IU5/
rEk3UevW4IXSZVCpCa/JykFl90ytTwKvyis19QgvTR2x7Zphv8kuk4pTBY3hPzoc GpEzW11xvyAMqzq7fMUH64zkHLAbNE1MhwXwh7ayZq+tDSpKBDNpxCYhYWm7RXYv
ZR7MykHEJ8Ly0VyxudAnZk4mpUj/bM8HdTM/OYNdwhMb5TkJFGet4q5lwa0mK9kE hBeQlFCJSRV5GSENX59ZxH7j0G4VCBTYrxgHyfYktqUbmXuAFJ9DgVQ5SHGYMyq5
QRgFW+v2aq5ASp0HSNa2fmXfdQ/TaIiS2ZhJmObl9d3m9y/Qvmd4kNmT4xD/2FgJ UgnJLucuwwEFi2XtKsV7vvq5hrE0T6Fih+/eZFHP90ClHEtzuMIj12DQ+1mMBoKt
lvMj0eo5khdhekDt/FNCMjqcjnqNNwY7YSWv+V2IlGi+3om4h9n/hFBvu2rkA9pa qGAU8eZctmLSOD4iNunHxMjYxR/Q/bSJh4vpxEUqHQzvvgfRfBguL8kWiX7luCxw
6y7QYCz39lM9Sb+uWNcd2/zy8lD/eB5eoUXJsYc0z/UfLe+/0o25Ba4TDzE6ZPOT EXpTDIvSDCI755qZeLpUI0Cf/hEm13Cw5Ir4zrZleXvxxvtSsrsjt8M65kVZLinn
pc6UoQjsDyI0slnrwWgvDQQkJ99/NeZw9aHK8GlIdOjTKzPTri/Q/d7ZO+1WlawA sIxmBLlb1FAMSY8lQIFMR8HIYEuz9gWINSs2W3ndSHNJ7XEhCzwIzRWDjC0TqKlP
Tt5zi/6tJE8WehVfK6flpZpzbTVBH0Dbqx/z+ddQG2GudPYA/QPGBIiPsclROy4P RQuUTv0PCuAjUJoo7IvxFB/jehDeRjP4eBjdgypNgaukNFsk2XWh5gWwd/+/mt37
A4wYCv50l3gT7hyfFvhRKIm0LEF1dG9ub21pYyBDb8O2cGVyYXRpdmUgPGhlbG9A g1sKdcazACdAh3t4WZ3hxf+JAlQEEwEIAD4WIQSC/IfFGnGQL9wQLPVPkNVbsksR
RwUCWbHjhAIbIwUJBaOagAULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRBPkNVb
sksRRymED/9R8gaNCjOecsChkL470Mx9iTv1fsoPkmMK9Uut7EDRJAxfKNOhQ6Sc
PmsQhRc5p+in27+r8dCfS4BIYa2hYAZUg7/dWbJjH2mMbEev39q7v5E5qzncMEw5
uetsvrCRkneG/slmubDna+LuB7rE5mZTWz5trPmDNhgjeH79SZkCdFAribPx3BRg
jzQq6THCHf9B7A7fvaJz4r8186UxMenktnudhZ9ySbzstNAO5Mc+S8WunasyLpK3
VNghWv3bBZcdwItztU0E3MymFZL/aaIjSNHr0bncWlMwag63SarW5aNqtsYFEA24
BB+LsWNXHRziYPfIZ+kIOdIWHlWfUGrqm8a78YtqMpIrX7xlluFuh0+wm12Eh1Wc
av4VG/g9uWp5xsaIn07Zx/HZDZ2GcnLdaxfyFYzpNWusn6cntxoKUPratAYum3Xj
6t+Y61Lk5m2NYnZQ4U09QGVaBCUKNFJGmZGsNithfgeaaBlYF2ExnQiGc4AZscHX
cOPCbJ76J25zmOKqGxRuMZlMuLXkQ1HBWuXGIKhcGlxZg/DsbZCwUi8n0c6Q0+bR
0BRjLwJL8ttRuo+kfNmwryHT2WZUc5iJBd6RKaApXLkjOKoeTGJhdBTuc3MTqNPu
ClDq8tQSFZmOz3vsZPA9iD95UygAg/U9DflaRWoHi7wxFkE1EJDCY7QsQXV0b25v
bWljIENvw7ZwZXJhdGl2ZSA8aGVsb0BhdXRvbm9taWMuem9uZT6JAlcEEwEIAEEC
GyMFCQtW2zUFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQSC/IfFGnGQL9wQLPVP
kNVbsksRRwUCXPu5fAIZAQAKCRBPkNVbsksRRzEXEACNKMUtuX1L+pQlHJIKKGBY
WgqLZbV+s0xUtLqMdB6YimUPtKwTKpsSfwqaN9cpOvXi+JXYbNk2k+OQ+qN2fVNa
gk8Ov15y+hFz9iarxobCJYdmHEri48IVJT/9TFiE928Hd82A6Ye79+ZjHyRT7s67
1g5XcOs88MBcOq3v4t4NpcsyRYrGlw2KZIiCUOej1UTpbD8FMmXaQVe8Dg59nero
nki/Jd80ReDIX0FnyI5JOl9iMPjHQZ4G/SJAQXkfnfM3NpnYSlSL04AJ2/ny5fL4
y+mdKJ7OWalL3a9Z2Z8VJGZgMR+HTrqsKYLYqVPqdukiQJ1It1eCECYsYN5WO1OQ
5VCIVSL+NEnwCZxEtr9a32LQyxY3C6N/iHr6Uzlt1N09eeQWORie7pjhkQOVmI37
TLzvWAMUNg+/4BCCjMoW2Rss3MfrB8QNlXX+UVzA43FyN2cDsb+ZFe97VhN9RJ1i
hJsQkTi7krgIWOF7rtTHwrM4WmdXMRHT2xmcLos3zqEvTgdkUTt+ClG+NCYCC9Sw
DGeCR5Y9OpUP15lmIMiMWftAxEhWzFUKR1cqQ+5XOtWPFQXazU+oApRRc1U0Vtgb
tJ2bhHok0Gw/PSo2rmTqfqkTWqaYC2Itxh7xXZ1V46cd1r95TVbnJ6G5YXgnKjOk
R13d9DMHjG8HwBDkDJHIV7QtQXV0b25vbWljIENvw7ZwZXJhdGl2ZSA8aGVsbG9A
YXV0b25vbWljLnpvbmU+iQJUBBMBCAA+FiEEgvyHxRpxkC/cECz1T5DVW7JLEUcF YXV0b25vbWljLnpvbmU+iQJUBBMBCAA+FiEEgvyHxRpxkC/cECz1T5DVW7JLEUcF
Alzp2D4CGyMFCQtW2zUFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQT5DVW7JL Alzp2FECGyMFCQtW2zUFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQT5DVW7JL
EUdPbA/+MnnGkOXo7iHJMPnHklJrYodnuTB2AqDTHM6M5/ugR5GxDrJIoVbNKHDN EUfakxAAh7C5tirVEy+NqmtIfpT4SZCBPyJChPhHC4KEPLiejGO0oco3g4jtyJx2
x+EFNIl5+2ddUMTVmU8UFncA73oBgtf7bOqKSnC/4+9+F+pxrgiU894WRxCQSAif ipzRM3VwsGadwAxFuxS0+3Ql1i4xVRu/bKiEMl31UlD4qthFXUc1v0Pa2r/A96UR
TZpcEMm4woef1A3a8OzHGLBr3q+n8PfDr/YSHbV7HuQBtlEbh4OncXiS70Yrcg49 2OyQqtBKUrp8D1rWJQ4ovAA4jy9fyuQ3urvH/AfQ9N+xTFXDGvQA+YdfWX1Tb66d
GU5tswODn53F3Z+ff+GzAcb1112gnu/+pwIF1N9VqmLVeE3z/6jDRzYiBT7xWLqI J+RJZeqi+ubAH7MPWfrnp7wVID7I3iUlLJ98IiVZdJ2QEtp1GW0hE/8LbpqeEj+A
vGeVuDryxObZcSPWmeALnwlJUAXuSLVDhVsDZc+odNRAIQFGT9s2KarIrfQ5CIw2 z7E5dJdeWi5BxeCp1pyZ+B4hN9WWFtKNino/dxGFXKqXosnw5q6JSMz/z+WdQapy
Yml28jTrirtYKrFmbY16iZLj7S6elPUctnCTu3rmVHhZfEQg8okxVOr4Y0n9d81K p4Wcc02n2tljwDTMClyxZngxSrzAySvCl8oIe/MrsNEsiT8K3f+30JX1ZNwvkJSn
wk44WsoDOXw42TcW+4/kOc15Uts+jCNVrj5l1PUqNW717J2RtjJf/kzV8HLdEO/W 9bdjjTOo09YTILTBEDbA1hU5n8c1ey9YEtDdt+KgsKz99K5YdpJdl6ZxG3x4B8Uu
IQkU/8JzYNbNs5HnCEGxwWj2lKZ/fsCHTYDplAzpQxMYT4lYCS1fTrXlAWXam4lb Jn+KIqXTAL2wXYd9NbWyTbXnedsn01n9wUDuytbf0jvI0jfitPZTINUdX7SqHS2L
kaSkq/4/TsEGg4dYrx+39JhpbDnv0edsxf0NFANuvkeUIsRpWAJa6czz1Cztltnk ld9bPqPlYY8JETfRK8cTlOVQt+xRK0JnfzusiN6FBhCDwaRHTgqRmQtWacW8Yr+R
fA66yPnOHWKky33LmIZUyzVU03sXNlBT+wEMsz6PECw7wVAu9KXqEryg7nrwyyVi Hj8F+Z/s6DMNocQEMaHVGTYfFog8YfdFnvN74E1z32hhmD1K6cahGIz4k9sGWb0g
ZTHlNRn6jNe+qZ+oT1gRAkUbKTI2M3J2DjV1y3o0JhtwJezC6fC0LUF1dG9ub21p PD+MfwbxK91PuxBpMomILjN1AVvhqw05onvrPclZi5ZVC74vuOS5Ag0EWbHjhAEQ
YyBDb8O2cGVyYXRpdmUgPGhlbGxvQGF1dG9ub21pYy56b25lPokCVAQTAQgAPhYh ALRFCmSZVxj09672/oWDa1o6dUJWEHo3+ZiruiUynRJljatTliRsAzmRSgXU4Rx9
BIL8h8UacZAv3BAs9U+Q1VuySxFHBQJc6dhRAhsjBQkLVts1BQsJCAcCBhUKCQgL HBB7dnZ/a+T0kBZm1/hofnFQnLZR6FqcudQuCqwxN3mqEJB/l9sHKV5ht/sqO42b
AgQWAgMBAh4BAheAAAoJEE+Q1VuySxFH2pMQAIewubYq1RMvjaprSH6U+EmQgT8i 29LOpnfCoHBdhbFbhZn5DVknKwWfYJU3gh/fibAWXyfRC1Z8E1+sYU4uVCdPJyQ0
QoT4RwuChDy4noxjtKHKN4OI7cicdoqc0TN1cLBmncAMRbsUtPt0JdYuMVUbv2yo CrLuw7rBJc9WAMedgBV75kQr9F/1wkZjvbmPvEcpAApkvsMd8ZXdKIa92Cgpdokw
hDJd9VJQ+KrYRV1HNb9D2tq/wPelEdjskKrQSlK6fA9a1iUOKLwAOI8vX8rkN7q7 +vRDd4Zm839OmuLQ0AzPB/CODOVxsV3wyfD2Ep+Erk0foNC+LV3FO5Yb4m6lQtRW
x/wH0PTfsUxVwxr0APmHX1l9U2+unSfkSWXqovrmwB+zD1n656e8FSA+yN4lJSyf S5Dptn/KOybWiWR+n3Q1VuOHlQeNWGmAnbxydRkrpXxRbyxgrVMcTurOIawYv5l/
fCIlWXSdkBLadRltIRP/C26anhI/gM+xOXSXXlouQcXgqdacmfgeITfVlhbSjYp6 OvQgwvy1m7l1NG9UOzsoTIbmH/ENX3nTt0DT5j4kQ8WHg3KgQQ5lB7mKUduiU2qX
P3cRhVyql6LJ8OauiUjM/8/lnUGqcqeFnHNNp9rZY8A0zApcsWZ4MUq8wMkrwpfK cJDGMHupIiL6rn0O73OdAUfdhraXAirQsID0ogZ5Un+iEgsIzMzSc/QR426JVnRM
CHvzK7DRLIk/Ct3/t9CV9WTcL5CUp/W3Y40zqNPWEyC0wRA2wNYVOZ/HNXsvWBLQ rQGeA++gbsO4YOSSV+2P1WccuMhEfg9zFQ9KHrT/dIRAnSkj56qICM3w0Zi1F8v8
3bfioLCs/fSuWHaSXZemcRt8eAfFLiZ/iiKl0wC9sF2HfTW1sk2153nbJ9NZ/cFA gNZKNjQsW5teeWG1SSNZKKX4kUpedUuTQMDbwzGE4kx6Sk9rS01MLFjp5CVazBCf
7srW39I7yNI34rT2UyDVHV+0qh0ti5XfWz6j5WGPCRE30SvHE5TlULfsUStCZ387 cRNl3bkk8IUAhPMltB9RulGXbjC+xtuGHkC1wopnWQJFABEBAAGJAjwEGAEIACYC
rIjehQYQg8GkR04KkZkLVmnFvGK/kR4/Bfmf7OgzDaHEBDGh1Rk2HxaIPGH3RZ7z GwwWIQSC/IfFGnGQL9wQLPVPkNVbsksRRwUCW6K9PQUJC1bbOQAKCRBPkNVbsksR
e+BNc99oYZg9SunGoRiM+JPbBlm9IDw/jH8G8SvdT7sQaTKJiC4zdQFb4asNOaJ7 R+IsEACAYYovlNtt8Av0bDaljvb9E9ZC3nYjcEZzocknCuDv+ZVlHryTM0XwtQTa
6z3JWYuWVQu+L7jkuQINBFmx44QBEAC0RQpkmVcY9Peu9v6Fg2taOnVCVhB6N/mY FnC7vrtHRi1yjhgQAhZcR4Ukc1Q4jfbW9eOGFIRLx9U9jZUgY4Mk6R7+zAw5dpSD
q7olMp0SZY2rU5YkbAM5kUoF1OEcfRwQe3Z2f2vk9JAWZtf4aH5xUJy2UehanLnU OtEoXryXnuKYhbqdvTNrNBiBCXST7RghyWzgBwFXq2LO38nvlrOKlkiJwoyDKfo9
LgqsMTd5qhCQf5fbByleYbf7KjuNm9vSzqZ3wqBwXYWxW4WZ+Q1ZJysFn2CVN4If peVWBoaIGEYc3LFMVeQf/CYZa9RsmziewjknfmUbYSajrvwxLDvLjUXF7ddzBLR7
34mwFl8n0QtWfBNfrGFOLlQnTyckNAqy7sO6wSXPVgDHnYAVe+ZEK/Rf9cJGY725 R3WMS5aIL8bbEjauwLzYWFBXROaToCHzvMlrSpUmEvpzUNofyp2lKLYUH2XWiYTi
j7xHKQAKZL7DHfGV3SiGvdgoKXaJMPr0Q3eGZvN/Tpri0NAMzwfwjgzlcbFd8Mnw N/3h6bkLlpFwNgDjiZ9FsajIfNaF33Yvhd5oNDcPxgNphhsqh4DiZ24ZV1M3vb+P
9hKfhK5NH6DQvi1dxTuWG+JupULUVkuQ6bZ/yjsm1olkfp90NVbjh5UHjVhpgJ28 rfgvy0tV4yEaVN9iXVsmrl/e/CVxgqW4qRoKHOroRp2ssNoCL6Jt2jhinsoTdaFP
cnUZK6V8UW8sYK1THE7qziGsGL+Zfzr0IML8tZu5dTRvVDs7KEyG5h/xDV9507dA VLhTRlG9sBf59gOcglkcH9RyVI+UNF0WdtNaciqCCBmat2lRide/yWAVRM7r/4EN
0+Y+JEPFh4NyoEEOZQe5ilHbolNql3CQxjB7qSIi+q59Du9znQFH3Ya2lwIq0LCA VYDnYpGlbcrORM0FzY0b4qNhlVhQ+gITJ8zSKfX2KynIZziOG4TboGB5cR6QF7nG
9KIGeVJ/ohILCMzM0nP0EeNuiVZ0TK0BngPvoG7DuGDkklftj9VnHLjIRH4PcxUP DEOSiNz8jGnBnxvFyb6z4XTpJsT/e4lcm0J1NNlVznU46EHg88s0aD4a47beMyZ1
Sh60/3SEQJ0pI+eqiAjN8NGYtRfL/IDWSjY0LFubXnlhtUkjWSil+JFKXnVLk0DA XoIO4DVYN9Qn2H771xVi6oZ0rJJ4c4FYxl/4AhF2loFrCEnlZw==
28MxhOJMekpPa0tNTCxY6eQlWswQn3ETZd25JPCFAITzJbQfUbpRl24wvsbbhh5A =jgXl
tcKKZ1kCRQARAQABiQI8BBgBCAAmAhsMFiEEgvyHxRpxkC/cECz1T5DVW7JLEUcF
Aln9wZgFCQItEZQACgkQT5DVW7JLEUfqWw//Z86vEQ66bPsv/yh+iIr07FxhrsXZ
zuRBpdqURFOGDfcz6mfs0KrHvln4vgTqrIOJt2W5tJfZKH5XjLT0q21ZkJhUsjvy
WS9SSvQocsecYsvJdR5EemqyDwJOkj+0SWt2D/uBFwy6ZPwecFh6UW5WvClrRjb1
BFKOrpqBp7HtarxH3qWBzvBFtNI0QvI6QxKOqzBlE58Ihr2e/ewC74CysfOefC6E
//UfNB76VcawU/gE76Xusxx+Bd/XebGLK1AaC4xpBPgQpDWpQTjJcoInadFHxJgq
ixTqmh83yQFAPomNdorLi7yMbWMjohl+cVcXemHXoaSMREg2FaJ/Z5mjJ5GbvOhd
ScYG6emEhnFqoS2zTUMA79ajn8IZQ47LtRSvnDuZliCEdjCPWfAeimTR27X3v4Ts
g8soHDUh5ctD/vNDbgRFeVMH9nV5RPHxJKaxVrNNX2u7Nt68Unw1Qs+6e1zCHUjj
kjzXbDfU4aE1/yiO/WaeoIhS9jzZe4ADRrQZk3qLCM/HhUPsD4LZTdOLRP8XYN+x
70+7LO1fkD+QytMnpy3szmSCDyuqjkh2KB7JrqH/pEOrSZYVKiusQoKR4WVrsisW
2k1roTsSMiHDvLQ6tUG0lXG4dgkbNoP3Bwz9aR8hk6R1Vd3vpJPFvqk3EtpGKkaJ
KDrIwzOXOcXBllWJAjwEGAEIACYCGwwWIQSC/IfFGnGQL9wQLPVPkNVbsksRRwUC
W6K9PQUJC1bbOQAKCRBPkNVbsksRR+IsEACAYYovlNtt8Av0bDaljvb9E9ZC3nYj
cEZzocknCuDv+ZVlHryTM0XwtQTaFnC7vrtHRi1yjhgQAhZcR4Ukc1Q4jfbW9eOG
FIRLx9U9jZUgY4Mk6R7+zAw5dpSDOtEoXryXnuKYhbqdvTNrNBiBCXST7RghyWzg
BwFXq2LO38nvlrOKlkiJwoyDKfo9peVWBoaIGEYc3LFMVeQf/CYZa9Rsmziewjkn
fmUbYSajrvwxLDvLjUXF7ddzBLR7R3WMS5aIL8bbEjauwLzYWFBXROaToCHzvMlr
SpUmEvpzUNofyp2lKLYUH2XWiYTiN/3h6bkLlpFwNgDjiZ9FsajIfNaF33Yvhd5o
NDcPxgNphhsqh4DiZ24ZV1M3vb+Prfgvy0tV4yEaVN9iXVsmrl/e/CVxgqW4qRoK
HOroRp2ssNoCL6Jt2jhinsoTdaFPVLhTRlG9sBf59gOcglkcH9RyVI+UNF0WdtNa
ciqCCBmat2lRide/yWAVRM7r/4ENVYDnYpGlbcrORM0FzY0b4qNhlVhQ+gITJ8zS
KfX2KynIZziOG4TboGB5cR6QF7nGDEOSiNz8jGnBnxvFyb6z4XTpJsT/e4lcm0J1
NNlVznU46EHg88s0aD4a47beMyZ1XoIO4DVYN9Qn2H771xVi6oZ0rJJ4c4FYxl/4
AhF2loFrCEnlZw==
=u0eg
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="512" height="512" viewBox="0 0 135.46667 135.46667" version="1.1" id="svg8" sodipodi:docname="logo.svg" inkscape:version="0.92.1 r15371" inkscape:export-filename="" inkscape:export-xdpi="48.000004" inkscape:export-ydpi="48.000004">
<defs id="defs2"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:zoom="0.70710678" inkscape:cx="418.13805" inkscape:cy="177.57445" inkscape:document-units="mm" inkscape:current-layer="layer2" showgrid="false" units="px" width="256px" showguides="false" inkscape:window-width="1920" inkscape:window-height="1137" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:pagecheckerboard="false" inkscape:measure-start="283.373,243.952" inkscape:measure-end="290.267,236.527">
<sodipodi:guide position="0,0" orientation="0,512" id="guide3699" inkscape:locked="false"/>
<sodipodi:guide position="135.46667,0" orientation="-512,0" id="guide3701" inkscape:locked="false"/>
<sodipodi:guide position="135.46667,135.46667" orientation="0,-512" id="guide3703" inkscape:locked="false"/>
<sodipodi:guide position="0,135.46667" orientation="512,0" id="guide3705" inkscape:locked="false"/>
</sodipodi:namedview>
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-161.53334)" style="display:inline">
<path style="fill:#ffffff;fill-opacity:1;stroke:#428f29;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" d="m 27.709937,195.15095 c -9.546573,-0.0272 -22.3392732,6.79805 -21.6317552,23.90397 1.105534,26.72889 25.4565952,29.20839 35.1916502,29.42301 1.068023,5.01357 12.521798,22.30563 21.001818,23.21667 h 37.15277 c 22.27763,-1.66785 38.9607,-75.75671 26.59321,-76.03825 -46.781583,2.47691 -49.995146,2.13838 -88.599758,0 -2.495053,-0.0266 -5.972321,-0.49474 -9.707935,-0.5054 z m 2.491319,9.45886 c 1.351378,13.69267 3.555849,21.70359 8.018216,33.94345 -11.382872,-1.50473 -21.069822,-5.22443 -22.851515,-19.10984 -0.950962,-7.4112 2.390428,-15.16769 14.833299,-14.83361 z" id="path3722" inkscape:connector-curvature="0" sodipodi:nodetypes="sscccccsccsc"/>
</g>
<g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 2" style="display:inline">
<rect style="display:inline;fill:#1d2442;fill-opacity:1;stroke:none;stroke-width:0.24757317;stroke-opacity:1" id="rect4599" width="34.762054" height="34.762054" x="87.508659" y="18.291576" transform="rotate(25.914715)" ry="5.4825778"/>
<path style="display:inline;fill:#1d2442;fill-opacity:1;stroke:none;stroke-width:0.26644793px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 79.804947,57.359056 3.241146,1.609954 V 35.255731 h -3.262698 z" id="path4525" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
</g>
<g inkscape:groupmode="layer" id="layer3" inkscape:label="Layer 3" style="display:inline">
<g style="display:inline" id="g4539">
<circle transform="rotate(-19.796137)" r="3.4745038" cy="90.077766" cx="49.064713" id="path4606" style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-opacity:1"/>
<circle transform="rotate(-19.796137)" r="3.4745038" cy="102.1049" cx="36.810425" id="path4606-3" style="fill:#ffffff6;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-opacity:1"/>
<circle transform="rotate(-19.796137)" r="3.4745038" cy="111.43928" cx="46.484283" id="path4606-1" style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-opacity:1"/>
<rect transform="rotate(26.024158)" y="18.061695" x="97.333458" height="27.261492" width="2.6726954" id="rect4629-8" style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.27444693;stroke-opacity:1"/>
<path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4514" d="m 76.558096,68.116343 c 12.97589,6.395378 13.012989,4.101862 4.890858,20.907244" style="fill:none;stroke:#ffffff;stroke-width:2.68000007;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="rss-square" class="svg-inline--fa fa-rss-square fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#ffffff" d="M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"></path></svg>

After

Width:  |  Height:  |  Size: 943 B

47
src/gdpr.md Normal file
View File

@ -0,0 +1,47 @@
---
layout: page
title: Privacy Policy
description: Privacy policy for Autonomic Co-operative Limited
meta_description: This is the privacy policy for Autonomic Co-operative Limited.
---
# Autonomic Cooperative Limited Data Protection Act 2018 (GDPR) privacy Notice.
> [The Data Protection Act 2018](https://www.gov.uk/data-protection) is the UKs implementation of the General Data Protection Regulation (GDPR).
## Summary
Our purpose is to provide secure services for socially responsible and progressive groups and individuals. We seek to minimise data collection where possible and follow best security practices.
To get in touch with Autonomic Cooperative Limited about any GPDR related issues please email [helo@autonomic.zone](helo@autonomic.zone). Our Secretary will act as contact for these matters.
## Data Protection Officer
We do not have or believe we require a Data Protection Officer, as we do not process sensitive data, nor do our core activities require large scale systemic tracking of individuals. See the [Information Commissioners Office (ICO) guidance](https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/accountability-and-governance/data-protection-officers/) on this.
## Data Collection
If you use our services, we may act as data processor for you. We provide information about how our systems and procedures allow you to use our service securely in our information security policy.
We process data to provide Internet services. We collect names, addresses, email addresses, phone numbers of our customers so we can charge them for services and communicate with them information regarding the availability and status of their services. This processing is necessary for the performance of our contracts with them.
## Logging and tracking
Our services are configured to collect statistics including IP addresses via web server log files as is standard practice. The log files are kept for 28 days or less and are then deleted. We recommend you use [Tor Browser](https://www.torproject.org/) if you require greater anonymity.
Our servers may collect web usage statistics via our private [Matamo](https://matomo.org/) analytics servers. You may opt out of Matamo tracking, the best way to do this is to set the [Do Not Track header](https://en.wikipedia.org/wiki/Do_Not_Track) in your browser or use the browser extensions [ublock origin](https://github.com/gorhill/uBlock/) and/or [Privacy Badger](https://privacybadger.org/).
Occasionally our users may run alternative analytics software. This is outside of our control.
## Data Storage
This data is processed by our staff and only stored in the EU. We do not share data with 3rd parties unless this is required for the implementation of a specific service. For example, to a Domain Name Registrar to complete the whois information for a domain name. The requirement to share with 3rd parties will be clearly communicated to you, and only done with explicit consent.
We are required under UK tax law to keep your basic personal data (name, address, contact details) for a minimum of 6 years after which time it will be destroyed.
## Incorrect Information
If at any point you believe the information we process on you is incorrect you request to see this information and even have it corrected or deleted. If you wish to raise a complaint on how we have handled your personal data, you can contact our Secretary via email on [helo@autonomic.zone](mailto:helo@autonomic.zone) who will then investigate the matter.
See also our [Website Privacy Policy](/privacy) and [Terms of Service](/terms).
## Third Party Services
We use servers hosted by [Webarchitects](https://www.webarch.net/privacy-notice), [Hetzner](https://www.hetzner.com/rechtliches/datenschutz) and [Digital Ocean](https://www.digitalocean.com/legal/gdpr/) and [Gandi](https://contract.gandi.net/v5/contracts/36637/Privacy_Policy_SAS_1.1_en.pdf) for Domain names, DNS and Email, so their Data Processing Agreements may also apply.
## Contact us
If you are not satisfied with our response or believe we are processing your personal data in a way that is not in accordance with the law you can complain to the [Information Commissioners Office (ICO)](https://ico.org.uk/).

18
src/privacy.md Normal file
View File

@ -0,0 +1,18 @@
---
layout: page
title: Website Privacy Policy
description: Privacy policy for autonomic.zone
meta_description: This is the privacy policy for the website of Autonomic co-operative.
---
# Website Privacy Policy
## The Autonomic Co-operative Limited website privacy policy
Our Privacy Notice contains information regarding our [Data Protection Act 2018 (GDPR)](https://www.gov.uk/data-protection) compliance.
This site does not set cookies.
This site is configured to collect statistics including IP addresses via web server log files as is standard practice. The log files are kept for 28 days or less and are then deleted. We recommend you use [Tor Browser](https://www.torproject.org/) if you require greater anonymity. This site remains functional without [Javascript](https://en.wikipedia.org/wiki/JavaScript) enabled.
The source code for this website can be found [here](https://git.autonomic.zone/autonomic-cooperative/autonomic.zone).

62
src/terms.md Normal file
View File

@ -0,0 +1,62 @@
---
layout: page
title: Terms of Service
description: Terms of Service for autonomic.zone
meta_description: This is the Terms of Service for Autonomic Co-operative Limited.
---
# Terms of service
This document describes what activities are allowed, under what conditions we may terminate your account, and asserts our limited liability. It applies to all interactions with Autonomic Cooperative Limited. Your use of Autonomic Cooperative Limited's services constitutes your agreement to these Terms of Service.
## Summary
If you do anything truly evil, we will terminate your account. We are not liable for any damages related to the use of these services. You agree to hold patience in your heart for the hard work we do.
## Privacy policies
We ask that you review our [Privacy Policy](/gdpr), so that you are aware of how we collect and use your information.
## Ownership of and responsibility for content
All Content, whether publicly posted or privately transmitted, is the sole responsibility of the person who originated such Content. We may not monitor or control the Content posted via the Services and we cannot take responsibility for such Content.
Any use or reliance on any Content or materials posted via the Services or obtained by you through the Services is at your own risk. You are responsible for your use of the Services, for any Content you provide, and for any consequences thereof.
### Refraining from certain activities
You may not engage in the following activities through the services provided by Autonomic Cooperative Limited:
- Harassing or abusing others by engaging in threats, stalking or sending spam. This includes usernames, aliases or using any of our resources for this purpose.
- Misuse of services by distributing viruses or malware, engaging in a denial of service attack, or attempting to gain unauthorised access to any computer system, including this one.
- Contributing to the abuse of others by distributing material where the production process created violence or sexual assault against persons.
## Account Termination
Autonomic Cooperative Limited may terminate your service at any time for any reason.
## Limitation on Liability
You agree that Autonomic Cooperative Limited is not liable to you or to any other party for any direct, indirect, incidental, special, consequential or exemplary damages, including but not limited to, damages for loss of profits, goodwill, use, data, or other intangible losses, regardless of whether we were advised of the possibility of such damage.
In the case that applicable law may not allow the limitation or exclusion of liability or incidental or consequential damages, the above limitation or exclusion may not apply to you, although our liability will be limited to the fullest extent permitted by applicable law.
### Choice of Forum and Law
You agree that these Terms of Service and your use of Autonomic Cooperative Limited is governed by the law of United Kingdom.
### Policy regarding copyright infringement - DMCA
Autonomic Cooperative Limited complies with the Digital Millennium Copyright Acts notice and take-down procedures. DMCA complaints should be addressed to:
```
Autonomic Cooperative Limited
1539 Pershore Road
Birmingham
B30 2JH
United Kingdom
```
Or via email: [helo@autonomic.zone](mailto:helo@autonomic.zone)
Please note that it is Autonomic Cooperative Limiteds policy to take reasonable steps, within our power, to terminate the accounts of users who are repeat infringers in appropriate circumstances.
### No Warranty
You understand and agree that Autonomic Cooperative Limited provides online services “as is” and without any warranty, express, implied, or statutory.
We specifically disclaim any implied warranties of title, merchant-ability, fitness for a particularly purpose and non-infringement. We make no warranty as to the reliability, accessibility, or quality of our services. You agree that the use of our services is at your sole and exclusive risk.
### Changes to this policy
We reserve the right to change this policy. If we make major changes, we will notify our users in a clear and prominent manner.