229 Commits

Author SHA1 Message Date
Jon
694b3209f2 feat(centurion): add ansible collection centurion
!1
2024-07-30 18:25:33 +09:30
Jon
4f9fc48eaa feat(centurion_erp): rename doc path
nofusscomputing/projects/centurion_erp#74 closes #18
2024-07-10 03:41:11 +09:30
Jon
2eb7870e57 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!63
2024-06-30 18:18:33 +00:00
Jon
433770ffa3 fix: build docs on api trigger
!63
2024-07-01 03:45:10 +09:30
e649d7e711 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "67ca423aaa61fc6f6901459973c12b191abc328d)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "8735f623dc5e1d9c9e46e50db03b4c41cb3d1efd)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 8735f623dc5e1d9c9e46e50db03b4c41cb3d1efd

MR !63
2024-06-30 18:03:33 +00:00
Jon
5f59921c70 Merge branch 'feat-django-itsm' into 'development'
feat: django itsm

See merge request nofusscomputing/infrastructure/website!62
2024-06-17 07:49:38 +00:00
Jon
4efb97b728 chore: update git submodules to current heads
!62 nofusscomputing/projects/django_template!27
2024-06-17 17:13:47 +09:30
Jon
20726d1712 feat(project): add django itsm docs
!62 nofusscomputing/projects/django_template!27
2024-06-17 17:08:38 +09:30
Jon
bf732b3238 feat: publish netbox collection docs
nofusscomputing/projects/ansible/collections/netbox!5
2024-04-09 16:37:53 +09:30
Jon
e415c4f112 feat(project): add docker bind
!60
2024-03-20 14:31:55 +09:30
Jon
e0ca7c7a25 fix(firewall): remove link from ansible roles
!60
2024-03-18 22:54:47 +09:30
Jon
03f88d7300 feat(firewall): fix nav
!60
2024-03-18 22:50:47 +09:30
Jon
acf5d9fe58 feat(firewall): add project to nav
!60
2024-03-18 22:44:07 +09:30
Jon
b22bde4f61 feat(firewall): update project path
!60
2024-03-16 21:33:48 +09:30
Jon
1eb98c187b Merge branch 'collection_ansible' into 'development'
feat: restructure kube role to collection

See merge request nofusscomputing/infrastructure/website!61
2024-03-13 10:57:01 +00:00
Jon
3458e89ee0 feat(kubernetes_collection): restructured from role to collection
!61 nofusscomputing/projects/ansible/kubernetes!37
2024-03-13 20:19:54 +09:30
Jon
3b8a8b8e9e fix(ci): ensure for non dev/master build is avail for pages
!60
2024-03-12 14:30:49 +09:30
Jon
b2afb094bb fix(ci): dont attempt to move sub-project docs if not exist
!60
2024-03-12 14:21:29 +09:30
Jon
deb01d8774 fix(ci): pages dep is also build
!60
2024-03-12 14:15:05 +09:30
Jon
2bcf3c99a7 fix(ci): pages only requires merge job on merge
!60
2024-03-12 14:11:05 +09:30
Jon
9533f47a3b Merge branch 'matrix-assemble' into 'development'
fix: merge docs

See merge request nofusscomputing/infrastructure/website!59
2024-02-22 03:44:38 +00:00
Jon
c15f2e0ea9 fix: merge docs
!59
2024-02-22 13:13:50 +09:30
Jon
a6bff682c2 Merge branch 'matrix-assemble' into 'development'
fix: mkdir

See merge request nofusscomputing/infrastructure/website!58
2024-02-21 12:40:57 +00:00
Jon
c59a0f6b7f fix: mkdir
!58
2024-02-21 22:10:07 +09:30
Jon
fa93149ac6 Merge branch 'matrix-assemble' into 'development'
fix: use correct path

See merge request nofusscomputing/infrastructure/website!57
2024-02-21 12:32:20 +00:00
Jon
bbccb0260a fix: prepare built site and dir structure
!57
2024-02-21 22:01:22 +09:30
Jon
80cfabbbb7 refactor: dont use stage name dirs
!57
2024-02-21 21:57:21 +09:30
Jon
99d5cd36e3 fix: no trailing slant for paths
!57
2024-02-21 21:52:10 +09:30
Jon
f5def60091 fix: use correct path
!57
2024-02-21 21:50:32 +09:30
Jon
f87051432c Merge branch 'matrix-assemble' into 'development'
fix: run the echo'ed commands

See merge request nofusscomputing/infrastructure/website!56
2024-02-21 12:18:25 +00:00
Jon
3481b1229b fix: run the echo'ed commands
!56
2024-02-21 21:47:33 +09:30
Jon
33c4f17324 Merge branch 'matrix-assemble' into 'development'
fix: ensure fetch project job creates directory

See merge request nofusscomputing/infrastructure/website!55
2024-02-21 12:10:21 +00:00
Jon
4b666a5c04 fix: ensure fetch project job creates directory
!55
2024-02-21 21:38:31 +09:30
Jon
e12b0a1ef3 Merge branch 'matrix-assemble' into 'development'
feat: Matrix assemble

See merge request nofusscomputing/infrastructure/website!54
2024-02-21 12:05:26 +00:00
Jon
7a4161e2a2 refactor(project_docs): use matrix job to assemble site
!54
2024-02-21 21:33:40 +09:30
Jon
6692e90318 Merge branch '17-php-ipam-scan-agent' into 'development'
fix(phpipam_scan_agent): use correct path when assembling site again.

See merge request nofusscomputing/infrastructure/website!53
2024-02-21 10:07:27 +00:00
Jon
57b00bc8f7 fix(phpipam_scan_agent): use correct path when assembling site again.
!53
2024-02-21 19:36:34 +09:30
Jon
185d3eec8c Merge branch '17-php-ipam-scan-agent' into 'development'
fix(phpipam_scan_agent): use correct path when assembling site

Closes #17

See merge request nofusscomputing/infrastructure/website!52
2024-02-21 09:27:16 +00:00
Jon
d42f0901ed fix(phpipam_scan_agent): use correct path when assembling site
!51
2024-02-21 18:56:21 +09:30
Jon
c0d589f70a Merge branch '17-php-ipam-scan-agent' into 'development'
feat: Add Ansible Collection phpIPAM Scan Agent for documentation build

Closes #17

See merge request nofusscomputing/infrastructure/website!51
2024-02-21 07:01:56 +00:00
Jon
649055c2e9 refactor: docker nav structure
!51
2024-02-21 16:26:31 +09:30
Jon
e3e8417130 feat(project): add phpIPAM ansible collection project to docs
!51 nofusscomputing/projects/ansible/collections/phpipam_scan_agent!1 nofusscomputing/projects/ansible/collections/phpipam_scan_agent!2 closes #17
2024-02-21 16:18:53 +09:30
Jon
1788673523 Merge branch '16-itil-runbooks' into 'development'
feat: Add project itil runbooks to website deploy

Closes #16

See merge request nofusscomputing/infrastructure/website!50
2024-02-10 05:34:01 +00:00
Jon
809b4457d9 feat(project): add itil runbooks
!50 fixes #16
2024-02-10 14:53:05 +09:30
Jon
955e30ba31 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!49
2024-02-10 05:12:53 +00:00
85de8dcd64 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "2bcc17652babd4027e7245c6367841e2580ec317)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "f5a82d3604faca56756eec91acee28ff89defd1d)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out f5a82d3604faca56756eec91acee28ff89defd1d

MR !49
2024-02-08 05:32:01 +00:00
Jon
7d7fd5b4c1 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!48
2024-02-02 13:12:17 +00:00
58130b365d chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "db172f4594391a18883b24768aae531c8245fce0)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "2bcc17652babd4027e7245c6367841e2580ec317)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 2bcc17652babd4027e7245c6367841e2580ec317

MR !48
2024-02-02 13:11:24 +00:00
Jon
2eeb1a4cee Merge branch 'mkdocs-update' into 'development'
feat: Mkdocs update

See merge request nofusscomputing/infrastructure/website!44
2024-02-02 08:20:16 +00:00
Jon
4b129fe0f5 chore: manual sub module update for ci
!44
2024-02-02 17:42:19 +09:30
Jon
844cb0cb73 chore: random change to trigger ci
!44
2024-02-02 17:41:26 +09:30
Jon
14a115d984 test: correct ignore link
!44
2024-02-02 17:41:26 +09:30
Jon
4bdf9d6f00 ci: set staging env to correct name
!44
2024-02-02 17:41:26 +09:30
Jon
fc3869798e Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!46
2024-02-02 08:10:50 +00:00
aba4b88509 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "e7af7b52366c78a8b1a61d0c613bf73b83d31551)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "db172f4594391a18883b24768aae531c8245fce0)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out db172f4594391a18883b24768aae531c8245fce0

MR !46
2024-02-02 08:10:05 +00:00
Jon
020de5681f Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!45
2024-02-02 08:07:03 +00:00
6c430c9384 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "1c1d75d04fbda95badb9996889a64f4b0638640a)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "e7af7b52366c78a8b1a61d0c613bf73b83d31551)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out e7af7b52366c78a8b1a61d0c613bf73b83d31551

MR !45
2024-02-02 07:41:27 +00:00
a72ceafd34 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "59b16501a6b6af046492174c24e1acbe7d971783)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "1c1d75d04fbda95badb9996889a64f4b0638640a)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 1c1d75d04fbda95badb9996889a64f4b0638640a

MR !45
2024-02-02 07:32:11 +00:00
Jon
f65a738621 Merge branch 'fix-nav-ansible-ee' into 'development'
fix: nav ansible EE

See merge request nofusscomputing/infrastructure/website!43
2024-01-14 19:31:29 +00:00
Jon
3d484f8dd1 fix(ansible-ee): update nav to match repo
!43 nofusscomputing/projects/ansible/execution_environment!184
2024-01-15 02:49:18 +09:30
Jon
b20906f38a Merge branch 'ansible-playbooks-sop' into 'development'
feat: document the playbook dynamic hosts selection

See merge request nofusscomputing/infrastructure/website!42
2024-01-10 06:41:34 +00:00
Jon
cd8088345e ci: fix default when should always be never
!42
2024-01-10 04:11:01 +09:30
Jon
8b61229d33 ci: only run dependent jobs of parent is successful
!42
2024-01-10 04:04:46 +09:30
Jon
f83c40ca87 fix: ensure ansible_test placeholder exists
!42
2024-01-10 04:01:46 +09:30
Jon
1eaa5c1c68 feat(ansible): update playbook requirements with awx vars
!42
2024-01-10 03:56:45 +09:30
Jon
ba00bf5ba4 Merge branch 'ansible-playbooks-sop' into 'development'
docs: Ansible playbooks sop

See merge request nofusscomputing/infrastructure/website!41
2023-12-16 12:29:08 +00:00
Jon
0e25bc5909 feat(ansible): playbook setup and setting of variables
!41 nofusscomputing/infrastructure/configuration-management/project-production!20 nofusscomputing/infrastructure/configuration-management/playbooks-production!10
2023-12-16 21:46:06 +09:30
Jon
eac92e72fb Merge branch 'fix-git-config-project' into 'development'
fix: git config project

See merge request nofusscomputing/infrastructure/website!40
2023-12-14 04:50:39 +00:00
Jon
4f320158ad fix(git_configuration): update path for docs
!40 nofusscomputing/projects/ansible/git_configuration!129
2023-12-14 14:16:10 +09:30
Jon
5dab342cdb fix(publish): correct artifacts path
!39
2023-12-01 14:41:29 +09:30
Jon
fd515ffea7 fix(publish): ensure job is tagged to select correct runner
!39
2023-12-01 14:14:23 +09:30
Jon
02b6253fb0 Merge branch 'ansible-role-homeassistant' into 'development'
feat: site navigation restructure and k3s deployment

See merge request nofusscomputing/infrastructure/website!38
2023-12-01 04:29:28 +00:00
Jon
b12c53de14 feat(ansible): document inventory_hostname requirement
!38 nofusscomputing/infrastructure/configuration-management/project-production!7
2023-11-30 15:06:17 +09:30
Jon
0303446664 feat(hosting): migrate to new hosting service
changes in config mgmt for new host.

!38 nofusscomputing/infrastructure/configuration-management/project-production!5
2023-11-26 21:26:17 +09:30
Jon
562d89540b ci: remove duplicate jobs
!38
2023-11-20 00:30:13 +09:30
Jon
500d06d4ea fix(unit_test): added an ignore for alive check for pages that are alive, but return 404
!38
2023-11-20 00:21:44 +09:30
Jon
3e5ec4159d fix: edit url
!38
2023-11-20 00:02:51 +09:30
Jon
f517e534e3 chore: update websute-template
!38 nofusscomputing/infrastructure/website-template!12
2023-11-19 23:44:22 +09:30
Jon
2abb7737fe fix(unit_test): 401|403 are valid returns for a link
!38
2023-11-19 23:33:14 +09:30
Jon
9243d1a43e fix: navigation, common
!38
2023-11-19 23:24:47 +09:30
Jon
a94aead136 feat(ansible): added further docs of inventory, specifically templates
!38 nofusscomputing/infrastructure/configuration-management/inventory-production!3
2023-11-19 23:14:13 +09:30
Jon
b52f02548b feat: add project ansible role common
!38
2023-11-16 17:19:33 +09:30
Jon
73b7858a95 feat: add project dns
!38
2023-11-16 17:16:05 +09:30
Jon
46d51faf7d docs(ansible_role): update repo layout to include playbooks as git sub-module
!38
2023-11-10 17:44:24 +09:30
Jon
d720eb238c feat(ansible_roles): added start of role standardization docs.
!38 nofusscomputing/projects/ansible/ansible-roles#22 nofusscomputing/projects/ansible/kubernetes#10 nofusscomputing/projects/ansible/homeassistant#4 nofusscomputing/projects/ansible/firewall#3 nofusscomputing/projects/ansible/git_configuration#23 nofusscomputing/projects/ansible/docker_management#8
2023-11-10 16:38:35 +09:30
Jon
8d206ab64f feat(ansible): add inventory setup
!38
2023-11-04 15:14:58 +09:30
Jon
f88bdc43fe feat(ansible): started documenting ansible
!38
2023-10-30 14:07:59 +09:30
Jon
e0936bd216 chore: updated structure
!38
2023-10-29 14:10:46 +09:30
Jon
49f28a497d feat: add projects firewall, kubernetes and homeassistant
!38
2023-10-28 17:18:33 +09:30
Jon
22801f53d2 feat(project): added project Public Playbooks
!38
2023-10-23 21:57:04 +09:30
Jon
6eef5a07e7 Merge branch 'kubernetes_monitoring' into 'development'
feat(docs): add kubernetes monitoring helm chart project

See merge request nofusscomputing/infrastructure/website!37
2023-09-27 05:33:59 +00:00
Jon
edbac20968 feat(docs): add kubernetes monitoring helm chart project
!37
2023-09-19 17:07:18 +09:30
Jon
550cc08761 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!36
2023-09-02 06:07:27 +00:00
82626a44b8 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "975de7aca210667d1e93d02a4036ca4ae70808ff)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "a5a9fa44374107657b2587ce52607d96a825be56)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out a5a9fa44374107657b2587ce52607d96a825be56

MR !36
2023-09-02 06:04:54 +00:00
Jon
ee11fd5795 Merge branch 'project-glpi' into 'development'
fix(docker_glpi): add docks to site structure

See merge request nofusscomputing/infrastructure/website!35
2023-08-30 03:08:57 +00:00
Jon
3255375325 fix(docker_glpi): add docks to site structure
!35
2023-08-30 12:35:20 +09:30
Jon
99e3b211b1 Merge branch 'project-glpi' into 'development'
feat(docker_glpi): add project docs for publishing

See merge request nofusscomputing/infrastructure/website!34
2023-08-30 02:58:58 +00:00
Jon
99ef0e92ae fix(docker_glpi): correct docs path
!33
2023-08-30 12:28:12 +09:30
Jon
23f22158a7 Merge branch 'project-glpi' into 'development'
feat(docker_glpi): add project docs for publishing

See merge request nofusscomputing/infrastructure/website!33
2023-08-30 02:50:44 +00:00
Jon
0f6bcd4701 feat(docker_glpi): add project docs for publishing
!33
2023-08-30 12:19:32 +09:30
Jon
e7c86268ba Merge branch 'ldap-self-service' into 'development'
feat(docs): add project ldap self service

See merge request nofusscomputing/infrastructure/website!32
2023-08-14 16:23:03 +00:00
Jon
6a3683b88c fix(docs): use correct ldap project path
!32
2023-08-15 01:48:35 +09:30
Jon
bffaec612c feat(docs): added project ldap self service
!32
2023-08-15 01:33:06 +09:30
Jon
78175ff62e Merge branch 'new-logo' into 'development'
feat: New logo

See merge request nofusscomputing/infrastructure/website!31
2023-08-05 04:45:00 +00:00
Jon
b6fcde0c9d feat(logo): add new logo
!31
2023-08-05 14:11:46 +09:30
Jon
45649e1ab0 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!29
2023-07-31 20:01:08 +00:00
Jon
c154e234ba Merge branch 'website-launch' into 'development'
chore: website release

See merge request nofusscomputing/infrastructure/website!30
2023-07-31 19:13:57 +00:00
Jon
cfccedde0b test(unit): ignore alive check for nofusscomputing.com
!30
2023-08-01 04:38:03 +09:30
Jon
a1a6131f95 feat(article): site updated and deployed
!30
2023-08-01 04:21:36 +09:30
142c22361b chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "ebc3d93304b2cec409dab06205bb5eee372ed597)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "975de7aca210667d1e93d02a4036ca4ae70808ff)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 975de7aca210667d1e93d02a4036ca4ae70808ff

MR !29
2023-07-04 02:05:31 +00:00
27d80c2b74 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "6a3ef23c6191883e5692e5e123e4bac05b49b7c5)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "ebc3d93304b2cec409dab06205bb5eee372ed597)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out ebc3d93304b2cec409dab06205bb5eee372ed597

MR !29
2023-06-28 04:33:35 +00:00
Jon
cdc775820f Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!28
2023-06-28 04:05:51 +00:00
b19d22b0fc chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "fd570fa3df559899fb3706c1ee46f29c33fd6520)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "6a3ef23c6191883e5692e5e123e4bac05b49b7c5)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 6a3ef23c6191883e5692e5e123e4bac05b49b7c5

MR !28
2023-06-28 03:53:39 +00:00
Jon
8a146184ee Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!27
2023-06-28 03:44:57 +00:00
7a29d02d74 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "cf33e1faf185e45bc5f432a9b6768f2f7f89b945)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "fd570fa3df559899fb3706c1ee46f29c33fd6520)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out fd570fa3df559899fb3706c1ee46f29c33fd6520

MR !27
2023-06-28 03:43:38 +00:00
Jon
ad71502d36 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!26
2023-06-28 02:00:12 +00:00
a73f9828cc chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "1a03324ecc9c7099a3f398170683e1a4cc1d882b)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "cf33e1faf185e45bc5f432a9b6768f2f7f89b945)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out cf33e1faf185e45bc5f432a9b6768f2f7f89b945

MR !26
2023-06-28 01:51:16 +00:00
Jon
bb5c50abc7 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!24
2023-06-08 05:45:00 +00:00
2763eb9c2e chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "869faedf5712227a77ca3ed537e689ab12382323)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "1a03324ecc9c7099a3f398170683e1a4cc1d882b)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 1a03324ecc9c7099a3f398170683e1a4cc1d882b

MR !24
2023-06-08 05:43:39 +00:00
Jon
af511923c6 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!23
2023-06-08 05:42:52 +00:00
da0c0f0583 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "606b19151ecc53b8841f638a30750a36ff655f47)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "869faedf5712227a77ca3ed537e689ab12382323)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 869faedf5712227a77ca3ed537e689ab12382323

MR !23
2023-06-08 05:41:03 +00:00
Jon
4bff3e78cf Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!22
2023-06-08 05:22:35 +00:00
470004b152 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "606b19151ecc53b8841f638a30750a36ff655f47)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 606b19151ecc53b8841f638a30750a36ff655f47

MR !22
2023-06-08 05:07:00 +00:00
472298bb2b chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "755fcac06e9f265789b02a88eb90df35ab1dbf07)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16

MR !22
2023-06-08 03:48:21 +00:00
Jon
47a564f1dd Merge branch 'fix-immediate' into 'development'
feat(ci): add resource groups to build jobs

See merge request nofusscomputing/infrastructure/website!21
2023-06-07 07:52:11 +00:00
Jon
452e5bf697 docs(execution_environment): addded ansible-ee docs
!21
2023-06-07 17:01:25 +09:30
Jon
5730f99080 docs(git_configuration): addded git ansible role docs
!21
2023-06-07 16:46:23 +09:30
Jon
e466b300b5 feat(ci): add resource groups to build jobs
!21
2023-06-07 16:44:50 +09:30
Jon
46f9698c87 Merge branch 'fix-immediate' into 'development'
feat(artifcts): always make available

See merge request nofusscomputing/infrastructure/website!20
2023-06-07 06:53:25 +00:00
Jon
d5b5db5e0b feat(artifcts): always make available
!19 gitlab-org/gitlab#331232 nofusscomputing/projects/gitlab-ci#34
2023-06-07 16:22:30 +09:30
Jon
cbf137dd73 Merge branch 'fix-immediate' into 'development'
feat(artifcts): always make available

See merge request nofusscomputing/infrastructure/website!19
2023-06-07 06:47:35 +00:00
Jon
07ba60e643 feat(artifcts): always make available
!19 gitlab-org/gitlab#331232 nofusscomputing/projects/gitlab-ci#34
2023-06-07 16:14:57 +09:30
Jon
8c75ba1df6 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!18
2023-06-07 06:33:06 +00:00
f5956740c0 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "e57f7f09085121373ce5ca6a4eb356cb89e53709)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "755fcac06e9f265789b02a88eb90df35ab1dbf07)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 755fcac06e9f265789b02a88eb90df35ab1dbf07

MR !18
2023-06-07 04:13:16 +00:00
33c204ab54 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "e57f7f09085121373ce5ca6a4eb356cb89e53709)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "928d625469425c23a1ef15e0e9c06bd00c12f8fe)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 928d625469425c23a1ef15e0e9c06bd00c12f8fe

MR !18
2023-06-05 19:09:09 +00:00
Jon
d25e5ffd36 Merge branch 'chore-submodule-update' into 'development'
chore(git): submdoule updated to current HEAD

See merge request nofusscomputing/infrastructure/website!17
2023-06-05 19:08:13 +00:00
Jon
b9adcabe7d chore(git): submdoule updated to current HEAD
!17
2023-06-06 04:35:30 +09:30
Jon
c959146238 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!15
2023-06-03 05:17:44 +00:00
59095d22c3 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "3e068f98c5fe8dbeabb96aaffa63c392bf83bd0f",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "6201afaf7e82411af1d0d173d54dffe1d404544a",
    "remote_name": "",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 6201afaf7e82411af1d0d173d54dffe1d404544a

MR !15
2023-06-03 05:06:00 +00:00
2a675eaf25 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "3e068f98c5fe8dbeabb96aaffa63c392bf83bd0f",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "e9713b31c8e5b30c27331eea23a690194f63394f",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out e9713b31c8e5b30c27331eea23a690194f63394f

MR !15
2023-05-31 05:19:31 +00:00
Jon
2ca3477258 Merge branch 'ci-fixes' into 'development'
ci: Ci fixes

Closes #11

See merge request nofusscomputing/infrastructure/website!14
2023-05-31 03:11:48 +00:00
Jon
4a57845c36 fix(ci): ensure jobs don't run on schedule
!14 fixes #11
2023-05-31 12:33:22 +09:30
a2bbaf019b build(version): bump version 1.0.0rc2 → 1.0.0rc3 2023-05-31 02:37:50 +00:00
Jon
5b87ceb9f2 Merge branch 'ci-fixes' into 'development'
ci: fixes

Closes #10

See merge request nofusscomputing/infrastructure/website!13
2023-05-31 02:29:35 +00:00
Jon
db4bdccdb1 chore(git): gitlab-ci updated to current HEAD
!13 nofusscomputing/projects/gitlab-ci!36 fixes #10
2023-05-31 11:53:15 +09:30
Jon
c40dc037b3 fix(ci): website.lint paths updated
!13
2023-05-31 11:39:13 +09:30
Jon
1a66a0f170 Merge branch 'ci-fixes' into 'development'
ci(chore): add nfc automation config

See merge request nofusscomputing/infrastructure/website!12
2023-05-29 03:52:27 +00:00
Jon
aec1b98e9a ci(chore): add nfc automation config
!12
2023-05-29 13:17:16 +09:30
1674df1a94 build(version): bump version 1.0.0rc1 → 1.0.0rc2 2023-05-29 03:33:26 +00:00
Jon
015df30fa6 Merge branch 'ci-fixes' into 'development'
fix(ci): get working

Closes #11

See merge request nofusscomputing/infrastructure/website!11
2023-05-29 03:27:49 +00:00
Jon
7574bb4b89 ci(automagic): use gitlab-ci project template
!11 nofusscomputing/projects/gitlab-ci#30 close #11
2023-05-29 12:49:00 +09:30
Jon
bbf0846861 feat(ci): assemble job now does check for sub-site dependencies
!11
2023-05-29 12:34:19 +09:30
Jon
5549fa8f37 refactor(assemble_site): use new job name
this change is required due to commit 0bc7255453

!11 nofusscomputing/projects/gitlab-ci!34
2023-05-29 10:35:40 +09:30
Jon
9f51803b6d Merge branch '10-fix-ci' into 'development'
fix(cz): remove 'v' suffix from tag

Closes #10

See merge request nofusscomputing/infrastructure/website!10
2023-05-28 06:34:04 +00:00
Jon
f5460bb271 chore: add todo for automagic job
!10 nofusscomputing/projects/gitlab-ci#30 #11
2023-05-28 15:45:02 +09:30
Jon
da5a5353e6 revert: "feat(ci): use automagic gitlab-ci template"
This reverts commit 266eff3766.
see nofusscomputing/projects/gitlab-ci#30 for the bug

!10 #11 nofusscomputing/projects/gitlab-ci#30
2023-05-28 15:36:07 +09:30
Jon
266eff3766 feat(ci): use automagic gitlab-ci template
!10 nofusscomputing/projects/gitlab-ci!33 #11
2023-05-28 15:30:19 +09:30
Jon
4e6013c99f chore(git): gitlab-ci updated to current HEAD
!10 nofusscomputing/projects/gitlab-ci!33
2023-05-28 15:29:24 +09:30
Jon
32ec703d72 fix(cz): remove 'v' suffix from tag
!10 fixes #10
2023-05-28 15:28:49 +09:30
Jon
e4c5780322 Merge branch 'add-project-docker-mail' into 'development'
feat: docker-mail docs to be included

See merge request nofusscomputing/infrastructure/website!9
2023-05-23 05:44:37 +00:00
Jon
35af4c7af1 chore(git): gitlab-ci updated to current HEAD
!9 nofusscomputing/projects/gitlab-ci!27
2023-05-23 15:09:31 +09:30
Jon
b5268e1863 fix(unit_test): ignore gitlab ide links for alive checks
!9
2023-05-23 13:25:18 +09:30
Jon
6ed8e5bae3 fix(ci): only deploy when assemble site success
!9
2023-05-23 13:05:29 +09:30
Jon
a86b4befcc feat(ci): enable publishing docker-mail docs
!9 nofusscomputing/projects/docker-mail!10 nofusscomputing/projects/gitlab-ci!27
2023-05-23 12:54:46 +09:30
Jon
fe6b84cf28 feat(website): enable edit button
!9
2023-05-23 12:52:36 +09:30
Jon
2505324eb7 Merge branch '3-work-from-issue' into 'development'
feat: work on article templates and config

See merge request nofusscomputing/infrastructure/website!8
2023-05-23 02:19:43 +00:00
Jon
fc74464ea8 feat(ci): add resource groups to prevent dup jobs
!8
2023-05-23 11:39:31 +09:30
Jon
1dffe52c7a feat(publish): on publish website on success
!8
2023-05-23 11:20:42 +09:30
Jon
46f8585cc3 fix(assemble_site): remove downloaded artifacts
!8
2023-05-23 11:18:22 +09:30
Jon
90a22fcc51 fix(ci): url encode artifact path for assemble
!8
2023-05-23 11:11:39 +09:30
Jon
189e7cd645 feat(build): include project gitlab-ci docs
!8  nofusscomputing/projects/gitlab-ci!26
2023-05-23 10:50:45 +09:30
Jon
8cde331079 fix(build): use correct gitlab-ci index page
!8 !8 nofusscomputing/projects/gitlab-ci!26
2023-05-23 10:45:17 +09:30
Jon
0ec5cdc9a3 feat(requirements.txt): removed as part of template
!8 nofusscomputing/projects/gitlab-ci!26 nofusscomputing/infrastructure/website-template!7
2023-05-23 10:32:46 +09:30
Jon
071c6c5179 chore: gitlab-ci update HEAD
!8 nofusscomputing/projects/gitlab-ci!26
2023-05-23 10:31:37 +09:30
Jon
4b7802e3a6 chore: website-template update HEAD
!8 nofusscomputing/infrastructure/website-template!7
2023-05-23 10:31:09 +09:30
Jon
b0fbe31cbe fix(ci): typo in includes
!8
2023-05-22 17:01:11 +09:30
Jon
a4bce7ed49 chore(git): update submodules to current HEAD
!8
2023-05-22 16:57:28 +09:30
Jon
546bc11ad2 refactor(ci): use new build job name Website.Build
!8 nofusscomputing/projects/gitlab-ci!25 nofusscomputing/ops!11
2023-05-22 16:12:27 +09:30
Jon
0b8df9edb2 chore(submodules): update to current HEADs
use dev branches

!8
2023-05-22 12:17:18 +09:30
Jon
e0de8665fe feat(md_lint_config): moved to website-template repo
!8
2023-05-22 12:16:35 +09:30
Jon
eb32851d32 fix: use relative path
!8
2023-04-30 12:03:18 +09:30
Jon
0c539a23c3 feat(publish): clean remote dir first anduse correct source
!8
2023-04-30 09:46:15 +09:30
Jon
a290aa79ba ci: fix path 2023-04-29 17:50:12 +09:30
Jon
016f566dbf ci: debugging
!8
2023-04-29 17:49:00 +09:30
Jon
29eee4b0c4 ci: fix scp command
!8
2023-04-29 17:40:29 +09:30
Jon
b63e55db0f ci(publish): fix path
!8
2023-04-29 17:35:07 +09:30
Jon
4ed51277a2 ci: now????
!8
2023-04-29 17:10:40 +09:30
Jon
84385dc389 ci: for fucks sake
!8
2023-04-29 17:03:31 +09:30
Jon
92fb084ca6 ci: fix file
!8
2023-04-29 16:54:28 +09:30
Jon
37b15f90d2 ci(publish): fix ssh must be installed to deploy
!8
2023-04-29 16:32:13 +09:30
Jon
f1eb1a8cba fix: set ssh user
!8
2023-04-29 16:22:43 +09:30
Jon
4b28e8aa64 fix: typo
!8
2023-04-29 16:14:36 +09:30
Jon
2551d764d8 fix(artifacts): fix fetching ops artifacts and allow publish
!8
2023-04-29 16:10:19 +09:30
Jon
e36d1387b6 ci: removed cross-repo build see change notes
!8
2023-04-29 15:51:02 +09:30
Jon
f75cf83e9a fix(ssh): ssh key set to file var
!8
2023-04-29 11:09:25 +09:30
20392be05a feat(operations): Pull Operations website pages job artifacts.
Pull the static pages built by the ops repo build job for inclusion in the website.

MR !8 nofusscomputing/ops#41
2022-08-29 14:28:21 +09:30
a816041cff ci(gitlab-ci): updated to latest dev
!8
2022-08-29 12:11:34 +09:30
ad67140571 fix(ci): fix pages job to run
MR !8
2022-08-29 12:06:40 +09:30
d0121f60ba fix(website-template): update module to fixed template commit
Updated to the dev commit that enables the site to build.

!8 nofusscomputing/infrastructure/website-template!2
2022-08-29 10:42:45 +09:30
47ae7aa9e1 ci(public_website): only enable manual publish on dev branch
Only master and dev branches should be able to publish website to production.

!8
2022-08-29 10:34:46 +09:30
70f0facb11 feat(website_template): Added website template as submodule
the website-template repo was added as a git submodule so that the
site could be templated easier.

!8 nofusscomputing/infrastructure/website-template!2
2022-08-29 10:29:24 +09:30
53d5d3ff62 ci(publish): add placeholder publish job
preparing for deploying the website to the public host via ssh

MR !8 #3
2022-08-25 16:01:47 +09:30
71d10e1d79 ci(pages): use the sub-pages repo for pages
when deploying to gitlab pages, use the build job that fetches all
sub-repos.

!8 #3
2022-08-25 15:27:32 +09:30
272da7e776 ci(sub-repo-pages): add placeholder sub-pages job
added the placeholder job to fetch sub-repo pages artifacts to build
entire website.

!8 #3
2022-08-25 15:26:09 +09:30
f5b317bcad ci: add prepare stage
issue #3 !8
2022-08-25 15:21:19 +09:30
Jon
3c9c819a55 Merge branch 'minor-tasks' into 'development'
chore: Minor tasks to migrate website

See merge request nofusscomputing/infrastructure/website!7
2022-01-31 04:16:42 +00:00
054b38a4a7 feat(mkdocs): enabled tabbed content
MR !7
2022-01-31 13:41:11 +09:30
765bae0e07 feat(wiki): remove wiki as it wont be used.
MR !7
2022-01-31 13:12:51 +09:30
2eef305f0e refactor: ad copy holder to article
MR !7
2022-01-31 13:06:47 +09:30
3ef36f49e8 feat(article): added microdata to the article.
MR !7
2022-01-31 13:04:14 +09:30
b9529feaba feat(article): articles must have a type
valid types are 'blog' and 'article'

MR !7
2022-01-31 13:03:32 +09:30
c2fe3bb7f0 refactor: clear up MD linting errors
MR !7
2022-01-31 11:39:08 +09:30
c19d097b28 feat(markdown_lint): allow html p in markdown
MR !7
2022-01-31 11:37:39 +09:30
228b57804e ci(markdown_lint): updated for mkdocs md files clarity.
added:
  two lines before headings
  one line after a heading
  max blank lines 2 (added due to heading rule)

This rules were added for clarity of markdown file editing.

MR !7
2022-01-31 11:26:07 +09:30
67b9379fe7 refactor(blog_post): renamed to article to reflect direction
MR !7
2022-01-31 11:08:09 +09:30
4c6e73254a chore: cleaned up old folders
MR !7
2022-01-31 10:56:13 +09:30
8b50d28aab refactor(home_page): added nfc logo
MR !7
2022-01-31 10:55:44 +09:30
185a095829 chore(syntax): remove syntax page as not required
as part of the ops manual this page will be included there.

MR !7
2022-01-31 10:51:53 +09:30
52b9466568 chore(gitignore): exclude package.json from commiting to repo
MR !7
2022-01-31 10:38:37 +09:30
927a97c913 ci(gitlab-ci): updated to new commit for markdown lint to work
markdown lint had a bug where it would not discover markdown files.
bug was fixed in commit 'f6d7ebeeb2b9d643c37ccbe6e25fa8d7e9dd970d'
gitlab-ci updated to use this commit.

MR !7
2022-01-31 10:36:36 +09:30
bbb639634b feat(vscode): extension recommendations added.
MR !7
2022-01-31 08:22:15 +09:30
0c3a878cfa fix(vscode): don't force mkdocs strict
This will enable the project to build and display the warnings to be fixed.

MR !7
2022-01-31 08:21:46 +09:30
Jon
7632a515ab Merge branch 'homepage-as-a-template' into 'development'
feat(home_page): setup homepage as a template

See merge request nofusscomputing/infrastructure/website!6
2022-01-30 03:59:00 +00:00
3e1e8886ef fix(mobile_display): added padding between sections
on a mobile display, the sections were cluttered. added some spacing to rectify.

MR !6
2022-01-30 12:39:59 +09:30
466f6e8632 feat(article): migrate mdt setup article
MR !6
2022-01-30 12:22:07 +09:30
d0719e356d fix(article): add required metadata.
MR !6
2022-01-30 11:52:10 +09:30
f14b17c3b0 feat(home_page): created template for homepage
This template created two column layout with articles and handy links.
Capability was added so that on a mobile device, the columns would drop to one only.

MR !6
2022-01-30 11:50:07 +09:30
1a6fc5a814 feat(home_page): add metadata
MR !6
2022-01-30 11:48:31 +09:30
59999e09e3 refactor(gitlab_templates): changed to use correct path
MR !6
2022-01-30 07:51:54 +09:30
109 changed files with 1638 additions and 2641 deletions

View File

@ -2,6 +2,6 @@ commitizen:
bump_message: "build(version): bump version $current_version \u2192 $new_version"
changelog_incremental: false
name: cz_conventional_commits
tag_format: v$major.$minor.$patch$prerelease
tag_format: $major.$minor.$patch$prerelease
update_changelog_on_bump: true
version: 1.0.0rc1
version: 1.0.0rc3

7
.gitignore vendored
View File

@ -5,9 +5,16 @@ aux/
# ignore dev env
dev_env
__pycache__
package*json
# ignore junit
*.junit.xml
.markdownlint-cli2.jsonc
# ignore log files
*.log
#gitlab temp files
artifacts.zip
artifacts/
public/

View File

@ -1,33 +1,245 @@
stages:
- validation
- build
- deploy
- test
- release
- publish
---
variables:
GIT_SUBMODULE_STRATEGY: recursive
MY_PROJECT_ID: "13001358"
include:
- local: .gitlab/project_docs.gitlab-ci.yml
- project: nofusscomputing/projects/gitlab-ci
ref: ce1cc017e26ff7f6cee586cc7d98e4d292275672
ref: development
file:
- conventional_commits/.gitlab-ci.yml
- mkdocs/.gitlab-ci.yml
- validation/.gitlab-ci.yml
- gitlab_release/.gitlab-ci.yml
- .gitlab-ci_common.yaml
- template/automagic.gitlab-ci.yaml
Lint Markdown:
extends: .Lint_Markdown
Get Project Documentation:
extends: .fetch_project_docs
parallel:
matrix:
- ASSEMBLE_PROJECT_NAME: centurion
ASSEMBLE_PROJECT_ID: 59504579
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/centurion
- ASSEMBLE_PROJECT_NAME: firewall
ASSEMBLE_PROJECT_ID: 51640016
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/firewall
- ASSEMBLE_PROJECT_NAME: django_template
ASSEMBLE_PROJECT_ID: 57560288
ASSEMBLE_PROJECT_PATH: projects/centurion_erp
- ASSEMBLE_PROJECT_NAME: kubernetes
ASSEMBLE_PROJECT_ID: 51640029
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/kubernetes
- ASSEMBLE_PROJECT_NAME: netbox
ASSEMBLE_PROJECT_ID: 56568566
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/netbox
- ASSEMBLE_PROJECT_NAME: phpipam_scan_agent
ASSEMBLE_PROJECT_ID: 55052132
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/phpipam_scan_agent
- ASSEMBLE_PROJECT_NAME: gitlab-ci
ASSEMBLE_PROJECT_ID: 28543717
ASSEMBLE_PROJECT_PATH: projects/gitlab-ci
- ASSEMBLE_PROJECT_NAME: operations
ASSEMBLE_PROJECT_ID: 32419575
ASSEMBLE_PROJECT_PATH: operations
- ASSEMBLE_PROJECT_NAME: git_configuration
ASSEMBLE_PROJECT_ID: 45705596
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/git_configuration
- ASSEMBLE_PROJECT_NAME: docker-bind
ASSEMBLE_PROJECT_ID: 52098058
ASSEMBLE_PROJECT_PATH: projects/docker/bind
- ASSEMBLE_PROJECT_NAME: docker-mail
ASSEMBLE_PROJECT_ID: 33611657
ASSEMBLE_PROJECT_PATH: projects/docker-mail
- ASSEMBLE_PROJECT_NAME: execution_environment
ASSEMBLE_PROJECT_ID: 45741845
ASSEMBLE_PROJECT_PATH: projects/ansible/execution_environment
- ASSEMBLE_PROJECT_NAME: ldap_self_service
ASSEMBLE_PROJECT_ID: 48321671
ASSEMBLE_PROJECT_PATH: projects/ldap_self_service
- ASSEMBLE_PROJECT_NAME: docker-glpi
ASSEMBLE_PROJECT_ID: 12928828
ASSEMBLE_PROJECT_PATH: projects/glpi
- ASSEMBLE_PROJECT_NAME: kubernetes_monitoring
ASSEMBLE_PROJECT_ID: 50510268
ASSEMBLE_PROJECT_PATH: projects/kubernetes_monitoring
- ASSEMBLE_PROJECT_NAME: ansible_playbooks
ASSEMBLE_PROJECT_ID: 46364551
ASSEMBLE_PROJECT_PATH: projects/ansible/playbooks
- ASSEMBLE_PROJECT_NAME: common
ASSEMBLE_PROJECT_ID: 52226103
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/common
- ASSEMBLE_PROJECT_NAME: homeassistant
ASSEMBLE_PROJECT_ID: 51020674
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/homeassistant
- ASSEMBLE_PROJECT_NAME: itil_runbooks
ASSEMBLE_PROJECT_ID: 54680811
ASSEMBLE_PROJECT_PATH: projects/itil/runbooks
# - ASSEMBLE_PROJECT_NAME:
# ASSEMBLE_PROJECT_ID:
# ASSEMBLE_PROJECT_PATH:
Static Pages:
Documentation.Lint:
rules:
- when: never
Documentation.Build:
rules:
- when: never
Website.Lint:
extends: .Lint_Markdown_Docs
variables:
MDLINT_PATHS: "pages/*.md pages/**/*.md pages/**/**/*.md pages/**/**/**/*.md pages/**/**/**/**/**/*.md #CHANGELOG.md !gitlab-ci !website-template"
rules:
- if: '$JOB_STOP_LINT_MARKDOWN_DOCS'
when: never
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: always
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: always
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH &&
(
$CI_PIPELINE_SOURCE == "api"
||
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md' # works
changes:
paths:
#- '{docs/*,pages/*}*.md'
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: always
- when: never
Website.Build:
extends: .MKDocs_Build
needs: [ 'Lint Markdown' ]
needs: [ 'Website.Lint' ]
resource_group: build
rules:
- if: '$JOB_STOP_MKDOCS_BUILD'
when: never
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- 'mkdocs.{yaml,yml}'
when: always
# - if: # condition_master_branch_push
# $CI_COMMIT_BRANCH == "master" &&
# $CI_PIPELINE_SOURCE == "push"
# exists:
# - 'mkdocs.{yaml,yml}'
# when: always
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH &&
(
$CI_PIPELINE_SOURCE == "api"
||
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- 'mkdocs.{yaml,yml}'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- 'mkdocs.{yaml,yml}'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: always
- when: never
Merge Project Docs:
extends: .merge_project_docs
needs:
- job: Get Project Documentation
artifacts: true
- job: Website.Build
artifacts: true
pages:
@ -35,17 +247,77 @@ pages:
variables:
GIT_STRATEGY: none
script:
- mv "$CI_PROJECT_DIR/artifacts/build/Static Pages/build" public
needs: [ 'Static Pages' ]
- |
if [ -d "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" ]; then
mv "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" public;
else
mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" public;
fi
needs:
- job: Website.Build
artifacts: true
- job: 'Merge Project Docs'
optional: true
environment:
name: staging
name: Gitlab Pages
url: $CI_PAGES_URL
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master"'
when: always
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE == "push"'
# when: on_success
# Build docs on tag so they can be downloaded from the tag job and are always available.
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: on_success
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: on_success
- when: never
@ -69,16 +341,64 @@ pages:
junit:
- "*.junit.xml"
rules:
- if: '$CI_COMMIT_BRANCH'
when: always
# - if: '$CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
# when: on_success
# Build docs on tag so they can be downloaded from the tag job and are always available.
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: on_success
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: on_success
- when: never
Unit Tests:
extends: .Pytest_template
needs: [ 'Static Pages' ]
needs: [ 'Website.Build' ]
script:
- mv "$CI_PROJECT_DIR/artifacts/build/Static Pages/build" build
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" build
- pytest --verbose --junitxml=unit_test.junit.xml --tb=line test/unit
- cp *.junit.xml "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/"
- echo "[DEBUG] python_exit[$python_exit]"
@ -92,8 +412,54 @@ Unit Tests:
# script:
# - echo "placeholder job for integration tests" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/DETEMEME.txt"
Gitlab Release:
extends:
- .gitlab_release
public_website:
stage: publish
image: alpine
variables:
GIT_STRATEGY: none
before_script:
- ls -la /html
script:
- rm -rf /html/*
- cp -r "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build"/* /html/
- ls -laR /html/
needs: [ 'Merge Project Docs', 'Unit Tests']
resource_group: production
environment:
name: production
url: https://nofusscomputing.com
artifacts:
paths:
- public
rules:
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
allow_failure: true
when: manual
- when: never
tags:
- production
- website

View File

@ -0,0 +1,162 @@
---
# Variables required:
# ASSEMBLE_PROJECT_NAME: ''
# ASSEMBLE_PROJECT_ID: ''
# ASSEMBLE_PROJECT_PATH: ''
.fetch_project_docs:
stage: chores
needs: []
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p "$CI_PROJECT_DIR/artifacts/project_docs"
script:
- echo "[DEBUG] Fetch Project ${ASSEMBLE_PROJECT_NAME}"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip artifacts.zip;
# rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/${ASSEMBLE_PROJECT_PATH}" "$CI_PROJECT_DIR/artifacts/project_docs/$(echo -n "${ASSEMBLE_PROJECT_PATH}" | sed -e "s/\//./g")/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never
.merge_project_docs:
stage: prepare
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/"
script:
- ls -l ${CI_PROJECT_DIR}/artifacts/project_docs/
- | # Merge Project docs to website
for i in `ls ${CI_PROJECT_DIR}/artifacts/project_docs/`; do
echo "Found Path - $i";
export JOIN_PROJECT_PATH=$(echo -n "${i}" | sed -e "s/\./\//g");
echo "set as project path [${JOIN_PROJECT_PATH}]";
rm -Rf $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH};
cp -rvf $CI_PROJECT_DIR/artifacts/project_docs/${i} $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH}/;
done
- | # Assemble website and project sources to build search index
echo "ToDo: build website and docs together to get the search index to add to the website";
- | # Join sitemaps together
echo "ToDo: Join all Sitemaps together into one";
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never

6
.gitmodules vendored
View File

@ -1,4 +1,8 @@
[submodule "gitlab-ci"]
path = gitlab-ci
url = https://gitlab.com/nofusscomputing/projects/gitlab-ci.git
branch = master
branch = development
[submodule "website-template"]
path = website-template
url = https://gitlab.com/nofusscomputing/infrastructure/website-template.git
branch = development

View File

@ -1,9 +0,0 @@
{
"line-length": false,
"MD007": {
"indent": 4
},
"MD033": {
"allowed_elements": [ "div", "s", "span", "u" ]
}
}

8
.nfc_automation.yaml Normal file
View File

@ -0,0 +1,8 @@
---
role_git_conf:
gitlab:
submodule_branch: "development"
default_branch: development
mr_labels: ~"type::automation" ~"impact::0" ~"priority::0"
auto_merge: true

8
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"recommendations": [
"gitlab.gitlab-workflow",
"ms-python.python",
"njpwerner.autodocstring",
"davidanson.vscode-markdownlint"
]
}

2
.vscode/tasks.json vendored
View File

@ -9,7 +9,7 @@
{
"suppressTaskName": true,
"args": [
"cd ${workspaceFolder}; . dev_env/bin/activate; pip install -r gitlab-ci/mkdocs/requirements.txt; pip install -r requirements.txt; mkdocs build --clean --strict"
"cd ${workspaceFolder}; . dev_env/bin/activate; pip install -r gitlab-ci/mkdocs/requirements.txt; pip install -r requirements.txt; mkdocs build --clean"
],
"problemMatcher": [],
"label": "MKDocs Build Static Site",

View File

@ -1,3 +1,90 @@
## 1.0.0rc3 (2023-05-31)
### Bug Fixes
- **ci**: [c40dc037](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c40dc037b3b7e0e0be97e9421c7c0097c8c494fe) - website.lint paths updated [ [!13](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/13) ]
### Continious Integration
- **chore**: [aec1b98e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/aec1b98e9a6f466d18981f84902964446ba50b88) - add nfc automation config [ [!12](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/12) ]
## 1.0.0rc2 (2023-05-29)
### Bug Fixes
- **cz**: [32ec703d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/32ec703d720c3230728cd220fe76f0efacbc5c05) - remove 'v' suffix from tag [ [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [#10](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/10) ]
- **unit_test**: [b5268e18](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b5268e18638499fa14c61066ab11e44ea346deb8) - ignore gitlab ide links for alive checks [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
- **ci**: [6ed8e5ba](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/6ed8e5bae3159ad9575f8c630bf34cf2f42214b1) - only deploy when assemble site success [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
- **assemble_site**: [46f8585c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/46f8585cc3fa1ca8cbe60762bb8f476fcb31554a) - remove downloaded artifacts [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **ci**: [90a22fcc](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/90a22fcc515383d1031fb6bba95327ba3d24e1c8) - url encode artifact path for assemble [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **build**: [8cde3310](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/8cde331079e9701962879c0d78e60bcd05938543) - use correct gitlab-ci index page [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) ]
- **ci**: [b0fbe31c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b0fbe31cbe0d0a4057c3ebc53d1c25bcdbfe96d7) - typo in includes [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [eb32851d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/eb32851d32e7e4136c114616b15a11303ec78d81) - use relative path [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [f1eb1a8c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f1eb1a8cba32d6378dd68d81e21e93e5ab740007) - set ssh user [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [4b28e8aa](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/4b28e8aa64d2be6e62cf8b88bb48953a987e05bb) - typo [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **artifacts**: [2551d764](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/2551d764d87b63248a46be1a68c4a4c193d03fe6) - fix fetching ops artifacts and allow publish [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **ssh**: [f75cf83e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f75cf83e9a819694db54fd1f384fbaddaaadfd4c) - ssh key set to file var [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **ci**: [ad671405](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/ad67140571f41eb2e01b3b7de44602401e8fc5ac) - fix pages job to run [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **website-template**: [d0121f60](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/d0121f60bae36cb1bd685d9ed393dfef3fb1acac) - update module to fixed template commit [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!2](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/2) ]
- **vscode**: [0c3a878c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0c3a878cfa35bd43cd381e89b54785b95f40d1ee) - don't force mkdocs strict [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **mobile_display**: [3e1e8886](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/3e1e8886efd50d948d4b66434063c08d6b0228d3) - added padding between sections [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
- **article**: [d0719e35](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/d0719e356d4e56db8d2b4c6191484326c9701a03) - add required metadata. [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
### Code Refactor
- **assemble_site**: [5549fa8f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/5549fa8f37f6c060dd26de446c8e56d460c71093) - use new job name [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) [!34](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/34) ]
- **ci**: [546bc11a](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/546bc11ad23e410ccc2e073d3288d0c1f875cc2c) - use new build job name `Website.Build` [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!25](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/25) [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) ]
- [2eef305f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/2eef305f0e9ffe2ededb3e19c7ce5a99238103ed) - ad copy holder to article [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- [c2fe3bb7](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c2fe3bb7f051a67c47f555c6039d421761cdadd0) - clear up MD linting errors [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **blog_post**: [67b9379f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/67b9379fe7eed288d00d8451678d338f2ad2a835) - renamed to article to reflect direction [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **home_page**: [8b50d28a](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/8b50d28aabdb1361036c137329695c29edf04f62) - added nfc logo [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **gitlab_templates**: [59999e09](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/59999e09e37450faee13387f0cc1154d8a9ee1c5) - changed to use correct path [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
### Continious Integration
- **automagic**: [7574bb4b](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/7574bb4b89fac79310fdfe21ef79e17af9dbf1f1) - use gitlab-ci project template [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) [#30](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/30) [#11](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/11) ]
- [a290aa79](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a290aa79ba0a0681182f05a21dda0344af50718d) - fix path
- [016f566d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/016f566dbf2fb2474c31fc7edae3c6c8818d218f) - debugging [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [29eee4b0](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/29eee4b0c481164c6522e943c1268964a4957a73) - fix scp command [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **publish**: [b63e55db](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b63e55db0ff81ec66b7fecade358e0430947a550) - fix path [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [4ed51277](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/4ed51277a2f9bfdb2c3077e0afc9e72b06274964) - now???? [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [84385dc3](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/84385dc3898d34ecb9e66f8bd5339d751f1b2901) - for fucks sake [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [92fb084c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/92fb084ca6cf2d4d87ea92df9a43f34ae3b80188) - fix file [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **publish**: [37b15f90](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/37b15f90d2b8d67b75034c73a4c6a1ea015553c7) - fix ssh must be installed to deploy [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- [e36d1387](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/e36d1387b64d5c705a5f53cc351cfdfde43b669f) - removed cross-repo build see change notes [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **gitlab-ci**: [a816041c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a816041cffc8f64deec087bfe354faf12cbc0260) - updated to latest dev [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **public_website**: [47ae7aa9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/47ae7aa9e1ace97ee0083229faaa5a509823ed49) - only enable manual publish on dev branch [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **publish**: [53d5d3ff](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/53d5d3ff62e3dd70a450803c93087d6018fa835e) - add placeholder publish job [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
- **pages**: [71d10e1d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/71d10e1d79e2802c43de23f9a4b93db6c307b42f) - use the sub-pages repo for pages [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
- **sub-repo-pages**: [272da7e7](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/272da7e77655eedadcd0d0737ddf20da2672d95d) - add placeholder sub-pages job [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
- [f5b317bc](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f5b317bcada125f696101b565fb94f39ce110185) - add prepare stage [ [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **markdown_lint**: [228b5780](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/228b57804efcdcbbffca5cf99a8da2d5f02ba44f) - updated for mkdocs md files clarity. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **gitlab-ci**: [927a97c9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/927a97c9136aef1aa6f0524a473fea7171df409b) - updated to new commit for markdown lint to work [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
### Features
- **ci**: [bbf08468](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/bbf084686176451db843947fb818ae9e374dad50) - assemble job now does check for sub-site dependencies [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) ]
- **ci**: [266eff37](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/266eff376668a2bf5f5fcf7926dcd7b38e476179) - use automagic gitlab-ci template [ [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [!33](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/33) [#11](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/11) ]
- **ci**: [a86b4bef](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a86b4befcc7696a00575fe8303934b5c6cd4abf8) - enable publishing docker-mail docs [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [!27](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/27) ]
- **website**: [fe6b84cf](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/fe6b84cf28f845162714569749a2ef82b95647ea) - enable edit button [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
- **ci**: [fc74464e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/fc74464ea852b9b71ceb9f11ec8cfc243d667d7c) - add resource groups to prevent dup jobs [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **publish**: [1dffe52c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/1dffe52c7a7ceb2930a7533108e44447f67ad2ae) - on publish website on success [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **build**: [189e7cd6](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/189e7cd64557471d0609dd59c95edbf14771444c) - include project gitlab-ci docs [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) ]
- **requirements.txt**: [0ec5cdc9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0ec5cdc9a33b7083e51e172b3402a9808279aa19) - removed as part of template [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **md_lint_config**: [e0de8665](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/e0de8665fe18003a504dd1ecc3e045ecc5844cd3) - moved to website-template repo [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **publish**: [0c539a23](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0c539a23c3dcd22bef702915aa70974dbf04eb0b) - clean remote dir first anduse correct source [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
- **operations**: [20392be0](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/20392be05a30f4bc9496237c0a3f71689f433f8e) - Pull Operations website pages job artifacts. [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#41](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/41) ]
- **website_template**: [70f0facb](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/70f0facb118a9e54bcf20648f69c73469483cf56) - Added website template as submodule [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!2](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/2) ]
- **mkdocs**: [054b38a4](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/054b38a4a7b62e54b582d50be64bfd25f467516b) - enabled tabbed content [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **wiki**: [765bae0e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/765bae0e0750f46b7a82fd2ff57cd75571c188b6) - remove wiki as it wont be used. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **article**: [3ef36f49](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/3ef36f49e82e1fcff6e49b25ac9dacc9f564a1ac) - added microdata to the article. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **article**: [b9529fea](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b9529feaba842ed76212b945730ac574ddcf60c8) - articles must have a type [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **markdown_lint**: [c19d097b](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c19d097b28123692610bf29857cdf1f9c4170985) - allow html p in markdown [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **vscode**: [bbb63963](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/bbb639634b166b4f36a771c13bff430d38b6953b) - extension recommendations added. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
- **article**: [466f6e86](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/466f6e8632c8392cae26f4ba0871c5fff4f2f0d6) - migrate mdt setup article [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
- **home_page**: [f14b17c3](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f14b17c3b00dde626083bcb4c5bb84ab599fdff5) - created template for homepage [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
- **home_page**: [1a6fc5a8](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/1a6fc5a814c7dc1ceb8a13c5db806a23db53073d) - add metadata [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
## v1.0.0rc1 (2022-01-29)
### Bug Fixes

View File

@ -1,125 +0,0 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
# docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/

View File

@ -1,7 +0,0 @@
# License
Copyright (C) 2021 No Fuss Computing
All Rights Reserved.
Not yet suitable for public release.

View File

@ -1,2 +0,0 @@
include versioneer.py
include tags/_version.py

View File

@ -1,128 +0,0 @@
# No Fuss Computing's Tags Plugin for MKDocs
Modified version from: [github.com/ginsburgnm/mkdocs-plugin-tags](https://github.com/ginsburgnm/mkdocs-plugin-tags)
## Previous Readme below - tags
Support for tags in the yaml-metadata in the header of markdown files.
Extracts this metadata and creates a "Tags" page which lists all tags
and all pages for each tag.
## Quick Demo
Install this plugin (it will also install mkdocs if required)
```bash
pip install mkdocs-plugin-tags
```
Create a new documentation folder:
```bash
mkdocs new demo
```
Edit the `.md` files to add initial metadata. Currently, the metadata has to be
enclosed in `---` lines, and must include a `title:` property
(otherwise the page will appear as "untitled" in the tags page). So, for example:
```bash
cd demo
cd docs
cat > index.md
---
title: Welcome
tags:
- testing
- unimportant
---
# Welcome to MkDocs
For full documentation visit [mkdocs.org](https://mkdocs.org).
^D
```
Edit `mkdocs.yml` to include this plugin:
```yaml
plugins:
- tags:
```
Run the server:
```bash
mkdocs serve --livereload
```
Visit the URL `/tags` (it should appear in the nav panel).
This is an auto-generated page which contains the tags as level 2 headers,
and under each tag, a listing of the pages which declare that tag in the
metadata section.
![example screenshot](doc/imgs/screenshot.png)
## How it works
On each build (even with `--livereload`), all the `.md` files composing the
site are scanned, their "triple-dash-delimted" yaml header is extracted and
parsed, and the list of tags is collected.
After that, a new temporal file is created (by default in `aux/tags.md`, but
this is customizable) which contains the generated tags page, in markdown
format. This file is not in the documents folder to avoid retriggering a
build, but it is added to the list of files to be converted to HTML by mkdocs.
## Customization
The layout of the tags page is a markdown file with jinja2 embedded contents.
The package provides such a template by default, with the following content:
```markdown
---
title: Tags
---
# Contents grouped by tag
{% for tag, pages in tags %}
## <span class="tag">{{tag}}</span>
{% for page in pages %}
* [{{page.title}}]({{page.filename}})
{% endfor %}
{% endfor %}
```
You can style the `h2.tag` element via CSS, if you want.
You can also provide your own markdown template, in case that you want a
different layout or metadata. The `page` object contains all the metadata
in a mkdocs page, and in addition a `.filename` attribute, which contains
the file name of the source of the page (relative to the docs folder),
which can be used to link to that page.
The full customizable options for the plugin are:
* `tags_folder`: Folder in which the auxiliar tags markdown file will be written
(`aux` by default, relative to the folder in which `mkdocs` is invoked).
It can be set to an absolute path, such as `/tmp/mysite/aux`.
The required folders are created.
* `tags_template`: path to the file which contains the markdown-jinja template
for the tags page. It is `None` by default, which means that the
package-provided template is used. It can be an absolute path,
or relative to the folder in which `mkdocs` is run.
* `css_name`: this allows you to pick what name styles the tag that appears on
the top of the page that contains a tag. This way things won't be overloaded
For example, this can be put at `mkdocs.yaml`:
```yaml
plugins:
- search
- tags:
tags_folder: /tmp/mysite/aux
tags_template: docs/theme/tags.md.template
```

View File

@ -1 +0,0 @@
mkdocs==1.2.3

View File

@ -1,27 +0,0 @@
[metadata]
name = mkdocs-plugin-tags
author = No Fuss Computing
author_email = helpdesk@nofusscomputing.com
url = https://gitlab.com/nofusscomputing/infrastructure/website
description = "Create tags in mkdocs"
long_description_content_type = text/markdown
long_description = file: README.md
license = MIT
keywords = "mkdocs python markdown tags"
classifiers =
Intended Audience :: Developers
License :: OSI Approved :: MIT License
Operating System :: OS Independent
Intended Audience :: Information Technology
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Topic :: Security :: Cryptography
[versioneer]
VCS = git
style = pep440
versionfile_source = tags/_version.py
versionfile_build = tags/_version.py
tag_prefix =
parentdir_prefix = tags-

View File

@ -1,19 +0,0 @@
"""
Setup the plugin
"""
from setuptools import setup, find_packages
setup(
version='0.0.1',
python_requires='>=3.6',
install_requires=[
'mkdocs==1.2.3',
],
packages=find_packages(exclude=['*.tests']),
package_data={'tags': ['templates/*.md.template']},
entry_points={
'mkdocs.plugins': [
'tags = tags.plugin:TagsPlugin'
]
}
)

View File

@ -1,3 +0,0 @@
from . import _version
__version__ = _version.get_versions()['version']

View File

@ -1,644 +0,0 @@
# This file helps to compute a version number in source trees obtained from
# git-archive tarball (such as those provided by githubs download-from-tag
# feature). Distribution tarballs (built by setup.py sdist) and build
# directories (produced by setup.py build) will contain a much shorter file
# that just contains the computed version number.
# This file is released into the public domain. Generated by
# versioneer-0.21 (https://github.com/python-versioneer/python-versioneer)
"""Git implementation of _version.py."""
import errno
import os
import re
import subprocess
import sys
from typing import Callable, Dict
def get_keywords():
"""Get the keywords needed to look up the version information."""
# these strings will be replaced by git during git-archive.
# setup.py/versioneer.py will grep for the variable names, so they must
# each be defined on a line of their own. _version.py will just call
# get_keywords().
git_refnames = "$Format:%d$"
git_full = "$Format:%H$"
git_date = "$Format:%ci$"
keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
return keywords
class VersioneerConfig:
"""Container for Versioneer configuration parameters."""
def get_config():
"""Create, populate and return the VersioneerConfig() object."""
# these strings are filled in when 'setup.py versioneer' creates
# _version.py
cfg = VersioneerConfig()
cfg.VCS = "git"
cfg.style = "pep440"
cfg.tag_prefix = ""
cfg.parentdir_prefix = "tags-"
cfg.versionfile_source = "tags/_version.py"
cfg.verbose = False
return cfg
class NotThisMethod(Exception):
"""Exception raised if a method is not valid for the current scenario."""
LONG_VERSION_PY: Dict[str, str] = {}
HANDLERS: Dict[str, Dict[str, Callable]] = {}
def register_vcs_handler(vcs, method): # decorator
"""Create decorator to mark a method as the handler of a VCS."""
def decorate(f):
"""Store f in HANDLERS[vcs][method]."""
if vcs not in HANDLERS:
HANDLERS[vcs] = {}
HANDLERS[vcs][method] = f
return f
return decorate
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
env=None):
"""Call the given command(s)."""
assert isinstance(commands, list)
process = None
for command in commands:
try:
dispcmd = str([command] + args)
# remember shell=False, so use git.cmd on windows, not just git
process = subprocess.Popen([command] + args, cwd=cwd, env=env,
stdout=subprocess.PIPE,
stderr=(subprocess.PIPE if hide_stderr
else None))
break
except OSError:
e = sys.exc_info()[1]
if e.errno == errno.ENOENT:
continue
if verbose:
print("unable to run %s" % dispcmd)
print(e)
return None, None
else:
if verbose:
print("unable to find command, tried %s" % (commands,))
return None, None
stdout = process.communicate()[0].strip().decode()
if process.returncode != 0:
if verbose:
print("unable to run %s (error)" % dispcmd)
print("stdout was %s" % stdout)
return None, process.returncode
return stdout, process.returncode
def versions_from_parentdir(parentdir_prefix, root, verbose):
"""Try to determine the version from the parent directory name.
Source tarballs conventionally unpack into a directory that includes both
the project name and a version string. We will also support searching up
two directory levels for an appropriately named parent directory
"""
rootdirs = []
for _ in range(3):
dirname = os.path.basename(root)
if dirname.startswith(parentdir_prefix):
return {"version": dirname[len(parentdir_prefix):],
"full-revisionid": None,
"dirty": False, "error": None, "date": None}
rootdirs.append(root)
root = os.path.dirname(root) # up a level
if verbose:
print("Tried directories %s but none started with prefix %s" %
(str(rootdirs), parentdir_prefix))
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
@register_vcs_handler("git", "get_keywords")
def git_get_keywords(versionfile_abs):
"""Extract version information from the given file."""
# the code embedded in _version.py can just fetch the value of these
# keywords. When used from setup.py, we don't want to import _version.py,
# so we do it with a regexp instead. This function is not used from
# _version.py.
keywords = {}
try:
with open(versionfile_abs, "r") as fobj:
for line in fobj:
if line.strip().startswith("git_refnames ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["refnames"] = mo.group(1)
if line.strip().startswith("git_full ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["full"] = mo.group(1)
if line.strip().startswith("git_date ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["date"] = mo.group(1)
except OSError:
pass
return keywords
@register_vcs_handler("git", "keywords")
def git_versions_from_keywords(keywords, tag_prefix, verbose):
"""Get version information from git keywords."""
if "refnames" not in keywords:
raise NotThisMethod("Short version file found")
date = keywords.get("date")
if date is not None:
# Use only the last line. Previous lines may contain GPG signature
# information.
date = date.splitlines()[-1]
# git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
# datestamp. However we prefer "%ci" (which expands to an "ISO-8601
# -like" string, which we must then edit to make compliant), because
# it's been around since git-1.5.3, and it's too difficult to
# discover which version we're using, or to work around using an
# older one.
date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
refnames = keywords["refnames"].strip()
if refnames.startswith("$Format"):
if verbose:
print("keywords are unexpanded, not using")
raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
refs = {r.strip() for r in refnames.strip("()").split(",")}
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
TAG = "tag: "
tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
if not tags:
# Either we're using git < 1.8.3, or there really are no tags. We use
# a heuristic: assume all version tags have a digit. The old git %d
# expansion behaves like git log --decorate=short and strips out the
# refs/heads/ and refs/tags/ prefixes that would let us distinguish
# between branches and tags. By ignoring refnames without digits, we
# filter out many common branch names like "release" and
# "stabilization", as well as "HEAD" and "master".
tags = {r for r in refs if re.search(r'\d', r)}
if verbose:
print("discarding '%s', no digits" % ",".join(refs - tags))
if verbose:
print("likely tags: %s" % ",".join(sorted(tags)))
for ref in sorted(tags):
# sorting will prefer e.g. "2.0" over "2.0rc1"
if ref.startswith(tag_prefix):
r = ref[len(tag_prefix):]
# Filter out refs that exactly match prefix or that don't start
# with a number once the prefix is stripped (mostly a concern
# when prefix is '')
if not re.match(r'\d', r):
continue
if verbose:
print("picking %s" % r)
return {"version": r,
"full-revisionid": keywords["full"].strip(),
"dirty": False, "error": None,
"date": date}
# no suitable tags, so version is "0+unknown", but full hex is still there
if verbose:
print("no suitable tags, using unknown + full revision id")
return {"version": "0+unknown",
"full-revisionid": keywords["full"].strip(),
"dirty": False, "error": "no suitable tags", "date": None}
@register_vcs_handler("git", "pieces_from_vcs")
def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
"""Get version from 'git describe' in the root of the source tree.
This only gets called if the git-archive 'subst' keywords were *not*
expanded, and _version.py hasn't already been rewritten with a short
version string, meaning we're inside a checked out source tree.
"""
GITS = ["git"]
TAG_PREFIX_REGEX = "*"
if sys.platform == "win32":
GITS = ["git.cmd", "git.exe"]
TAG_PREFIX_REGEX = r"\*"
_, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
hide_stderr=True)
if rc != 0:
if verbose:
print("Directory %s not under git control" % root)
raise NotThisMethod("'git rev-parse --git-dir' returned error")
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
# if there isn't one, this yields HEX[-dirty] (no NUM)
describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
"--always", "--long",
"--match",
"%s%s" % (tag_prefix, TAG_PREFIX_REGEX)],
cwd=root)
# --long was added in git-1.5.5
if describe_out is None:
raise NotThisMethod("'git describe' failed")
describe_out = describe_out.strip()
full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
if full_out is None:
raise NotThisMethod("'git rev-parse' failed")
full_out = full_out.strip()
pieces = {}
pieces["long"] = full_out
pieces["short"] = full_out[:7] # maybe improved later
pieces["error"] = None
branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
cwd=root)
# --abbrev-ref was added in git-1.6.3
if rc != 0 or branch_name is None:
raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
branch_name = branch_name.strip()
if branch_name == "HEAD":
# If we aren't exactly on a branch, pick a branch which represents
# the current commit. If all else fails, we are on a branchless
# commit.
branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
# --contains was added in git-1.5.4
if rc != 0 or branches is None:
raise NotThisMethod("'git branch --contains' returned error")
branches = branches.split("\n")
# Remove the first line if we're running detached
if "(" in branches[0]:
branches.pop(0)
# Strip off the leading "* " from the list of branches.
branches = [branch[2:] for branch in branches]
if "master" in branches:
branch_name = "master"
elif not branches:
branch_name = None
else:
# Pick the first branch that is returned. Good or bad.
branch_name = branches[0]
pieces["branch"] = branch_name
# parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
# TAG might have hyphens.
git_describe = describe_out
# look for -dirty suffix
dirty = git_describe.endswith("-dirty")
pieces["dirty"] = dirty
if dirty:
git_describe = git_describe[:git_describe.rindex("-dirty")]
# now we have TAG-NUM-gHEX or HEX
if "-" in git_describe:
# TAG-NUM-gHEX
mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
if not mo:
# unparsable. Maybe git-describe is misbehaving?
pieces["error"] = ("unable to parse git-describe output: '%s'"
% describe_out)
return pieces
# tag
full_tag = mo.group(1)
if not full_tag.startswith(tag_prefix):
if verbose:
fmt = "tag '%s' doesn't start with prefix '%s'"
print(fmt % (full_tag, tag_prefix))
pieces["error"] = ("tag '%s' doesn't start with prefix '%s'"
% (full_tag, tag_prefix))
return pieces
pieces["closest-tag"] = full_tag[len(tag_prefix):]
# distance: number of commits since tag
pieces["distance"] = int(mo.group(2))
# commit: short hex revision ID
pieces["short"] = mo.group(3)
else:
# HEX: no tags
pieces["closest-tag"] = None
count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
pieces["distance"] = int(count_out) # total number of commits
# commit date: see ISO-8601 comment in git_versions_from_keywords()
date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
# Use only the last line. Previous lines may contain GPG signature
# information.
date = date.splitlines()[-1]
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
return pieces
def plus_or_dot(pieces):
"""Return a + if we don't already have one, else return a ."""
if "+" in pieces.get("closest-tag", ""):
return "."
return "+"
def render_pep440(pieces):
"""Build up version string, with post-release "local version identifier".
Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
Exceptions:
1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
rendered += plus_or_dot(pieces)
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
else:
# exception #1
rendered = "0+untagged.%d.g%s" % (pieces["distance"],
pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
return rendered
def render_pep440_branch(pieces):
"""TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
The ".dev0" means not master branch. Note that .dev0 sorts backwards
(a feature branch will appear "older" than the master branch).
Exceptions:
1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += plus_or_dot(pieces)
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
else:
# exception #1
rendered = "0"
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += "+untagged.%d.g%s" % (pieces["distance"],
pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
return rendered
def pep440_split_post(ver):
"""Split pep440 version string at the post-release segment.
Returns the release segments before the post-release and the
post-release version number (or -1 if no post-release segment is present).
"""
vc = str.split(ver, ".post")
return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
def render_pep440_pre(pieces):
"""TAG[.postN.devDISTANCE] -- No -dirty.
Exceptions:
1: no tags. 0.post0.devDISTANCE
"""
if pieces["closest-tag"]:
if pieces["distance"]:
# update the post release segment
tag_version, post_version = pep440_split_post(pieces["closest-tag"])
rendered = tag_version
if post_version is not None:
rendered += ".post%d.dev%d" % (post_version+1, pieces["distance"])
else:
rendered += ".post0.dev%d" % (pieces["distance"])
else:
# no commits, use the tag as the version
rendered = pieces["closest-tag"]
else:
# exception #1
rendered = "0.post0.dev%d" % pieces["distance"]
return rendered
def render_pep440_post(pieces):
"""TAG[.postDISTANCE[.dev0]+gHEX] .
The ".dev0" means dirty. Note that .dev0 sorts backwards
(a dirty tree will appear "older" than the corresponding clean one),
but you shouldn't be releasing software with -dirty anyways.
Exceptions:
1: no tags. 0.postDISTANCE[.dev0]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
rendered += ".post%d" % pieces["distance"]
if pieces["dirty"]:
rendered += ".dev0"
rendered += plus_or_dot(pieces)
rendered += "g%s" % pieces["short"]
else:
# exception #1
rendered = "0.post%d" % pieces["distance"]
if pieces["dirty"]:
rendered += ".dev0"
rendered += "+g%s" % pieces["short"]
return rendered
def render_pep440_post_branch(pieces):
"""TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
The ".dev0" means not master branch.
Exceptions:
1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
rendered += ".post%d" % pieces["distance"]
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += plus_or_dot(pieces)
rendered += "g%s" % pieces["short"]
if pieces["dirty"]:
rendered += ".dirty"
else:
# exception #1
rendered = "0.post%d" % pieces["distance"]
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += "+g%s" % pieces["short"]
if pieces["dirty"]:
rendered += ".dirty"
return rendered
def render_pep440_old(pieces):
"""TAG[.postDISTANCE[.dev0]] .
The ".dev0" means dirty.
Exceptions:
1: no tags. 0.postDISTANCE[.dev0]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
rendered += ".post%d" % pieces["distance"]
if pieces["dirty"]:
rendered += ".dev0"
else:
# exception #1
rendered = "0.post%d" % pieces["distance"]
if pieces["dirty"]:
rendered += ".dev0"
return rendered
def render_git_describe(pieces):
"""TAG[-DISTANCE-gHEX][-dirty].
Like 'git describe --tags --dirty --always'.
Exceptions:
1: no tags. HEX[-dirty] (note: no 'g' prefix)
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"]:
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
else:
# exception #1
rendered = pieces["short"]
if pieces["dirty"]:
rendered += "-dirty"
return rendered
def render_git_describe_long(pieces):
"""TAG-DISTANCE-gHEX[-dirty].
Like 'git describe --tags --dirty --always -long'.
The distance/hash is unconditional.
Exceptions:
1: no tags. HEX[-dirty] (note: no 'g' prefix)
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
else:
# exception #1
rendered = pieces["short"]
if pieces["dirty"]:
rendered += "-dirty"
return rendered
def render(pieces, style):
"""Render the given version pieces into the requested style."""
if pieces["error"]:
return {"version": "unknown",
"full-revisionid": pieces.get("long"),
"dirty": None,
"error": pieces["error"],
"date": None}
if not style or style == "default":
style = "pep440" # the default
if style == "pep440":
rendered = render_pep440(pieces)
elif style == "pep440-branch":
rendered = render_pep440_branch(pieces)
elif style == "pep440-pre":
rendered = render_pep440_pre(pieces)
elif style == "pep440-post":
rendered = render_pep440_post(pieces)
elif style == "pep440-post-branch":
rendered = render_pep440_post_branch(pieces)
elif style == "pep440-old":
rendered = render_pep440_old(pieces)
elif style == "git-describe":
rendered = render_git_describe(pieces)
elif style == "git-describe-long":
rendered = render_git_describe_long(pieces)
else:
raise ValueError("unknown style '%s'" % style)
return {"version": rendered, "full-revisionid": pieces["long"],
"dirty": pieces["dirty"], "error": None,
"date": pieces.get("date")}
def get_versions():
"""Get version information or return default if unable to do so."""
# I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
# __file__, we can work backwards from there to the root. Some
# py2exe/bbfreeze/non-CPython implementations don't do __file__, in which
# case we can only use expanded keywords.
cfg = get_config()
verbose = cfg.verbose
try:
return git_versions_from_keywords(get_keywords(), cfg.tag_prefix,
verbose)
except NotThisMethod:
pass
try:
root = os.path.realpath(__file__)
# versionfile_source is the relative path from the top of the source
# tree (where the .git directory might live) to this file. Invert
# this to find the root from __file__.
for _ in cfg.versionfile_source.split('/'):
root = os.path.dirname(root)
except NameError:
return {"version": "0+unknown", "full-revisionid": None,
"dirty": None,
"error": "unable to find root of source tree",
"date": None}
try:
pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
return render(pieces, cfg.style)
except NotThisMethod:
pass
try:
if cfg.parentdir_prefix:
return versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
except NotThisMethod:
pass
return {"version": "0+unknown", "full-revisionid": None,
"dirty": None,
"error": "unable to compute version", "date": None}

View File

@ -1,151 +0,0 @@
#!/usr/bin/env python
"""
This plugin generates tags file as well as inserts markdown
at the beginning of a file that has tags
@Adopted from
JL Diaz (c) 2019
MIT License
"""
from collections import defaultdict
from pathlib import Path
from re import search, DOTALL, MULTILINE
from yaml import load, FullLoader, YAMLError
from jinja2 import Environment, FileSystemLoader
from mkdocs.structure.files import File
from mkdocs.plugins import BasePlugin
from mkdocs.config.config_options import Type
from mkdocs.__main__ import log
class TagsPlugin(BasePlugin):
"""
Creates "tags.md" file containing a list of the pages grouped by tags
It uses the info in the YAML metadata of each page, for the pages which
provide a "tags" keyword (whose value is a list of strings)
"""
config_scheme = (
('filename', Type(str, default='tags.md')),
('folder', Type(str, default='aux')),
('template', Type(str)),
('css_name', Type(str, default='.button')),
)
def __init__(self):
self.metadata = []
self.tag_dict = None
self.filename = "tags.md"
self.folder = "aux"
self.template = None
self.css_name = ".button"
self.templ = None
#pylint: disable=unused-argument
def on_page_markdown(self, markdown, page, config, files):
"""
takes markdown, page, config, and files
currently modifies the markdown to add a button to click to get related tag info
tag is customizeable by adding css that keys off the `self.css_name`
"""
page_url = page.url.split("/")
tags_link = ''
for i in range(len(page_url) - 1):
tags_link = tags_link + '../'
tags_link = tags_link + str(self.filename).strip('.md')
if tags_link[-1] != '/':
tags_link = tags_link + '/'
if 'tags' in page.meta:
swap_mark = [f"[{x}]({tags_link}#{x.lower()}){{{self.css_name}}}"
for x in page.meta['tags']]
swap_mark.append('\n')
return f'{" ".join(swap_mark)}{markdown}'
return markdown
def on_config(self, config):
"""Load config options"""
self.filename = Path(self.config.get("filename") or self.filename)
self.folder = Path(self.config.get("folder") or self.folder)
self.css_name = self.config.get("css_name")
# Make sure that the tags folder is absolute, and exists
if not self.folder.is_absolute():
self.folder = Path(config["docs_dir"]) / ".." / self.folder
if not self.folder.exists():
self.folder.mkdir(parents=True)
if self.config.get("template"):
self.template = Path(self.config.get("template"))
if self.template is None:
self.template = Path(__file__).parent.joinpath(
"templates"
).joinpath("tags.md.template")
environment = Environment(
loader=FileSystemLoader(searchpath=str(self.template.parent))
)
self.templ = environment.get_template(str(self.template.name))
def on_files(self, files, config):
"""Load files to check for tags"""
self.metadata = [
get_metadata(x.src_path, config['docs_dir'])
for x in files if x.src_path.endswith(".md")
]
# Create new file with tags
self.generate_tags_file()
# New file to add to the build
newfile = File(
path=str(self.filename),
src_dir=str(self.folder),
dest_dir=config["site_dir"],
use_directory_urls=False
)
files.append(newfile)
def generate_tags_page(self, data):
"""Generate the tags to be populated on the
mkdocs tag page"""
css_name = self.css_name
if css_name[0:1] == '.':
css_name = css_name[1:len(css_name)]
return self.templ.render(
tags=sorted(data.items(), key=lambda t: t[0].lower()),
css_name = css_name,
)
def generate_tags_file(self):
"""Generate a file to be stored on the mkdocs page"""
sorted_meta = sorted(self.metadata, key=lambda e: e.get("year", 5000) if e else 0)
self.tag_dict = defaultdict(list)
for meta in sorted_meta:
if not meta:
continue
if "title" not in meta:
meta["title"] = meta['filename'].split("/")[-1].strip('.md')
tags = meta.get("tags", [])
for tag in tags:
self.tag_dict[tag].append(meta)
with open(str(self.folder / self.filename), "w", encoding='utf-8') as fname:
fname.write(self.generate_tags_page(self.tag_dict))
# Helper functions
def get_metadata(name, path):
"""Get the metadata off of a file"""
filename = Path(path) / Path(name)
with filename.open() as fname:
match_string = search(r"\A\s*---\n.*?\n---", fname.read(), flags=DOTALL | MULTILINE)
if match_string:
try:
metadata = match_string.group(0).strip('---')
meta = load(metadata, Loader=FullLoader)
meta.update(filename=name)
return meta
except YAMLError as err:
log.error("Couldn't parse %s yaml due to %s", fname, err)
return None

View File

@ -1,6 +0,0 @@
# Contents grouped by tag
{% for tag, pages in tags %}
## <span class="{{css_name}}">{{tag}}</span>
{% for page in pages %}
* [{{page.title}}]({{page.filename}})
{% endfor %}{% endfor %}

View File

@ -1,125 +1,9 @@
site_name: No Fuss Computing
site_description: A wiki with random bits of information you may find useful.
site_url: https://nofusscomputing.com
site_author: No Fuss Computing
copyright: Copyright &copy; No Fuss Computing 2021
#site_favicon: favicon.ico
# site_dir: 'docs/static/mkdocs_build'
docs_dir: 'pages'
site_dir: build
INHERIT: website-template/mkdocs.yml
repo_name: Website
#repo_url: https://gitlab.com/nofusscomputing/infrastructure/website
repo_url: https://gitlab.com/nofusscomputing/infrastructure/website
#edit_uri: '-/blob/pages'
#edit_uri: '-/blob/master/pages/'
edit_uri: ''
edit_uri: '/-/ide/project/nofusscomputing/projects/website/edit/development/-/pages/'
theme:
name: material
logo: assets/logo.png
custom_dir: theme-overrides
icon:
repo: fontawesome/brands/gitlab # (1)!
locale: en
font: false
features:
- navigation.tracking
- navigation.tabs
- navigation.tabs.sticky
- navigation.expand
- navigation.indexes
- toc.integrate
- navigation.top
- header.autohide
- navigation.sections
palette:
- scheme: default
primary: indigo
accent: indigo
toggle:
icon: material/lightbulb-outline
name: Switch to dark mode
- scheme: slate
primary: indigo
accent: indigo
toggle:
icon: material/lightbulb
name: Switch to light mode
plugins:
- tags:
filename: tags.md
folder: pages
css_name: ".tags"
- search:
lang: en
- git-revision-date-localized:
type: iso_date
enable_creation_date: true
exclude:
- index.md
- tags.md
# - minify:
# minify_html: true
extra:
homepage: https://nofusscomputing.com
version: 1.0
social:
- link: https://hub.docker.com/u/nofusscomputing
name: DockerHub
icon: fontawesome/brands/docker
- link: https://facebook.com/NoFussComputing
name: Facebook
icon: fontawesome/brands/facebook
- link: https://gitlab.com/nofusscomputing
name: Gitlab
icon: fontawesome/brands/gitlab
- link: https://github.com/NoFussComputing
name: Github
icon: fontawesome/brands/github
# - link: https://readthedocs.org/profiles/nofusscomputing/
# nane: ReadTheDocs
# icon: fontawesome/brands/readthedocs
# link: https://
blog:
dir: articles
author: jon_nfc
author_image: https://gitlab.com/uploads/-/system/user/avatar/4125177/avatar.png
words_read_per_minute: 300
list_length: 25
extended_preview: true
extra_css:
- stylesheets/extra.css
markdown_extensions:
- def_list
- pymdownx.tasklist:
custom_checkbox: true
- meta
- attr_list
- admonition
- pymdownx.details
- pymdownx.superfences
# - pymdownx.emoji:
# emoji_index: !!python/name:materialx.emoji.twemoji
# emoji_generator: !!python/name:materialx.emoji.to_svg
# options:
# custom_icons:
# - .icons
nav:
- Home: index.md
@ -127,19 +11,111 @@ nav:
- articles/index.md
- 2023:
- articles/2023/new_website.md
- 2015:
- articles/2015/choose_internet_service.md
- 2014:
- articles/2014/mdt_setup.md
- Content Tags: tags.md
- Projects:
- projects/index.md
- Ansible Roles: projects/ansible-roles/README.md
- Ansible:
- Gitlab CI Templates: projects/gitlab-ci/README.md
- projects/ansible/index.md
- Ansible Execution Environment:
- projects/ansible/execution_environment/index.md
- Collections:
- projects/ansible/collection/index.md
- Centurion:
- projects/ansible/collection/centurion/index.md
- Firewall:
- projects/ansible/collection/firewall/index.md
- Kubernetes:
- projects/ansible/collection/kubernetes/index.md
- netbox:
- projects/ansible/collection/netbox/index.md
- phpIPAM Scan Agent:
- projects/ansible/collection/phpipam_scan_agent/index.md
- Playbooks:
- projects/ansible/playbooks/index.md
- Roles:
- projects/ansible/roles/index.md
- Common:
- projects/ansible/roles/common/index.md
- Git Configuration:
- projects/ansible/roles/git_configuration/index.md
- Home Assistant:
- projects/ansible/roles/homeassistant/index.md
- Testing:
- projects/ansible/roles/ansible_test/index.md
- Docker:
- projects/docker/index.md
- BIND DNS Server:
- projects/docker/bind/index.md
- Docker GLPI:
- projects/glpi/index.md
- Docker Mail:
- projects/docker-mail/index.md
- Centurion ERP:
- projects/centurion_erp/index.md
- Gitlab CI: projects/gitlab-ci/index.md
- ITIL:
- Runbooks:
- projects/itil/runbooks/index.md
- Kubernetes Monitoring: projects/kubernetes_monitoring/index.md
- LDAP Self Service: projects/ldap_self_service/index.md
- Python Gitlab Management: projects/python-gitlab-management/README.md
@ -147,13 +123,5 @@ nav:
- operations/index.md
- Development:
- operations/syntax.md
- Wiki:
- wiki/index.md
- Contact Us: contact.md

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,108 @@
---
title: How I use Microsoft Deployment Toolkit
description: This article is a record of how I setup my Microsoft Deployment Toolkit. There are many ways to set it up. However this is how I do it.
date: 2014-09-01
template: article.html
type: blog
author: jon
copyrightHolder: jon
about: https://en.wikipedia.org/wiki/Microsoft_Deployment_Toolkit
tags:
- Administration
- Microsoft
- Microsoft Deployment Toolkit
- Windows
---
!!! info
This information has been created as a record of how I do something, if you decide to follow anything within this set of pages and stuff up, you're on your own!!
I use Microsoft Deployment Tool Kit (MDT) to reduce the time it takes to install/update and to deploy a working Windows OS. The setup of MDT and time taken to test and get it right far outweighs deploying an OS by hand. Below you will find how I have setup my MDT structure and why. Most of my setup has been chopped and changed due to trial and error and to ease the burden.
My goals for MDT are:
- Deploy any Windows OS quickly
- Easily update Applications / Drivers / Operating System
- make deployment media that could be used by a less savvy computer user.
I currently use MDT to Deploy windows on my own network (Active Directory Domain), Stand alone machines and family and friends computers. I also use MDT to install applications and force a computer to update using my WSUS Server.
## Folder Layout
![MDT Folder Structure](images/mdtstructure.png)
## Applications
I not only use MDT to deploy applications during OS deployment but I also have a 'Post OS Install' task sequence to install applications as well.
Application folders Layout is pretty straight forward.
- Client Software Suite - Standard Suite
All Freeware applications that I install is under this structure
- Client Software Suite - Domain
Local Domain only Applications
- Server Software Suite - Domain
Software for use on domain Servers
Each suite folder is setup as follows.
| Folder | Description |
|:----|:----|
| Suite | Applications listed here are only Application Bundles. The dependent applications for these Application bundles are selected from the AppTree folder. They are visible from the deployment wizard. |
| Suite\AppTree | Applications here are 'Applications with Source files' these applications are contain the acutual installers for the application in question. They are not visible from the deployment wizard. |
| Suite\Archive | Applications here are old versions, they are visible from the deployment wizard. |
![MDT Folder Structure](images/mdtapptree.png)
**Figure 1. AppTree Folder Structure** This is where new applications are imported to they are imported as an application with source files.
![MDT Folder Structure](images/mdtapplications.png)
**Figure 2. Suite Application bundles** These applications are application bundles with the application under the app tree folder added as a dependency.
### Add New Application
To add a new application the following process is followed.
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
- Create an application Bundle under the Suite root folder and set its dependency to the application you wish to install, from the AppTree folder.
- if the application you wish to install has dependent applications, select the dependent application bundle from the suite root folder making sure it is set to install before the application that requires it does.
### Update an Application
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
- goto the application Bundle under the Suite root folder and set its dependency to the application you just added to the AppTree folder and remove the old version of that application.
- return to the AppTree folder and move the old app to the Archive directory making sure you 'uncheck' the 'hide from deployment wizard'.
### other useful info
- utilize the uninstall key, within each application it will prevent the app from trying to install again.
### Reasoning
This structure was adopted for the following reasons:
- Create Deployment media based on suites (Departments / Groups / ETC.)
- If you have mandatory applications in your config file providing you have used the Suit 'Application Bundle' you don't have to leave the GUI/Edit the config file to update the application.
- clarity
!!! attention
This post is considered an archived post.
This article was originally posted on 01 Sep 2014. It has been migrated from its original source http://nofusscomputing.com/wiki/public/help/mdt/home and http://nofusscomputing.com/wiki/public/help/mdt/applications to here.

View File

@ -1,8 +1,11 @@
---
template: blog_post.html
title: Choosing an Internet Service
description: The Internet has now become a mainstream item within the average Australian home. The Internet has become so ingrained within our daily lives that for those of us that were around when the Internet was born have actually forgotten what life was like without it. I remember when I was growing up that if we wanted to learn about something you would go to the local library or to a family/friends house to look through their Encyclopaedia Britannica which more often than not was at least five years out of date. Believe it or not that was only 15 to 20 years ago. Now if I haven't lost you already and hopefully by the end of this article I have been able to provide you with more insight on being able to choose an Internet service from an ISP with a little more of an understanding of the technology behind that Internet connection.
date: 2015-02-25
template: article.html
type: blog
author: jon
copyrightHolder: jon
tags:
- ADSL
- Archive
@ -24,15 +27,18 @@ Below I will cover a little of the technical details and hopefully bringing into
<p hidden>#more</p>
## Bandwidth
Bandwidth is the actual speed of your Internet connection and its unit of measure is bits per second. So basically if you think water pipe, only so much water will flow through a water pipe but if you increase its pressure you will receive more water. For the actual Internet connection different technology is used to essentially achieve the same
thing.
## Quota
This is how much you can download and/or upload from the Internet. Its unit of measure is bytes. Think of a water tank, larger the tank the more quota you have available. This will be set by your ISP and 9 times out of 10 will be limited. Every Time you connect to the Internet you are using this available quota.
## Theory
Now to fully understand the quota and bandwidth I will have to cover a little bit of computer theory. Computers compute information by doing mathematical equations. The only numbers a computer recognizes are Base 2. Base 2 numbering means it uses the first 2 numbers, being zero and one. In common computer terms this is called binary which is always in the computer world as a minimum 8 bits wide i.e. 01010101. Each digit of the number is a bit, four bits to a nibble and 2 nibbles to a byte. Unlike the English language; Binary is read from right to left and each one or zero, within a binary number is actually counting from 1 through to 255, which takes 8 bits of information. Binary is a notational reference system, so starting from right to left each digit represents another number, the first number being one, each number after that is double the number before it so the next number would be two, then four, eight, 16, 32, 64 finishing with the leftmost digit as 128. Confusing? Not really, when the bit is zero you don't add each notated number, you only add if the bit is one. So 0001 would be one, 0010 would be two, 0011 is three and so on.
@ -41,26 +47,32 @@ Communication between different components or computers (network or The Internet
So why use different units of measure for the same data? simply put, computers are electronic devices which communicate with an electronic signal with 1 being on and zero being off; basically the signal is either on or off. So the transmission of data is serial or singular and storage is in parallel or stored in octets which is a group of bits. Hence bits and bytes. generally you will find lowercase letters are used to represent bits and uppercase letters are used for bytes.
### Connection types
The common Internet connection types in Australia are ADSL or via the Mobile network. Very rarely used but still available if you look hard enough dial-up. and the newest and greatest is the National Broadband Network or NBN. With the exception of the NBN all of the above connection types will have a max speed. This max speed is a theoretical maximum speed and there are many factors which generally slow down your connection. All connection methods have a technological peak, which basically means there is no known way to improve that technology any further.
### Dial-Up
Dial-UpInternet was the first mainstream way to connect to the Internet. For this to happen you needed an active phone line, a computer with a MODEM (short for modulator/demodulator) and you would plug a phone cable into your computer, which would dial a number to connect to the Internet. At its technological peak the max theoretical download speed was 56kb and approx 33kb up. Dial-up modems are generally part of the computer. The downside to Dial-up is that it relies on good quality phone cables, basically if you have a bad phone line you will have unstable and slower Internet. Dial-up also suffers from signal attenuation which means the further away from the telephone exchange the lower the speed your Internet is going to be. The biggest downside to having Dial-up Internet is that you can either be connected to the Internet or on the phone, not both.
### ADSL
Asynchronous Digital Subscriber Line or ADSL is the most common Internet in Australia. This is also commonly referred to as broadband Internet, the biggest difference between ADSL and Dial-up is that it is always on. When ADSL first arrived it had a speed of 1.5mb, which was a massive increase over Dial-up. As ADSL evolved its speed increased, when this occurred its name slightly changed to suit the technological level, ADSL1, ADSL2 and finishing with ADSL2+ which has a maximum theoretical download speed of 24Mb and 2Mb Up. An ADSL connection like dial-up Internet requires a modem and suffers with the same line issues. Where ADSL is an improvement over Dial-up is that you can still make telephone calls when you are have an active Internet connection for this you will need a line filter. To utilise an ADSL connection you require an ADSL modem.
### Mobile Network
Again this method of connecting to the Internet has been around for a while and with the invention of the smartphone has become quite a common way to “surf the Web”. 4th generation or 4G being the current technology has a max theoretical speed of 50Mb. The connection speed is shared amongst all users utilizing that mobile tower to connect to the Internet, and if you dont have good mobile reception you will not have a stable Internet connection.
### NBN
The National broadband network or NBN as it is known is the new way to connect to the Internet. The NBN unlike Dial-up or ADSL does not use a phone line to connect to the Internet. The NBN uses fiber optic cable, which uses light not electricity to communicate. Fiber optic cable can be thinner than a human hair. Fiber Optic cable, or fiber networks have one purpose; transmit data, not voice or electronic signals like a copper cable Since fiber is designed for networking you require a router to connect to it. A router looks very similar to an ADSL modem. Unlike the other Internet connection methods above, communication in either direction is the same. Within Australia this is not the case, and for whatever reason you will find most NBN capable ISPs will still have packages with different upload and download speeds. Fiber networks are very mature and their speed is actual, not theoretical maximums and are capable of transmitting data at 10gbps. Using that speed for connecting to the Internet is overkill and you will find that most ISPs offer no connection speed above 100mbps at the moment.
## Choosing a suitable Internet service
Now hopefully by now I have given you a little better understanding of the connection types and terminology in relation to choosing an Internet service; believe me it is still a cumbersome task. Yes there are a lot of things to consider. From a technical standpoint the following should be taken into account:
@ -71,14 +83,17 @@ Now hopefully by now I have given you a little better understanding of the conne
- bang for buck
### Availability in Your Area
For a majority of Australians, ADSL is the best Internet service you will have available. The most annoying thing when trying to connect an ADSL service is the wait time. This wait time is due to the requirement for a technician to have to go to your local telephone exchange to actually connect you, that is if there are spare ports available in the exchange. If though, you can get the NBN, go for it. Seriously you are being foolish if you don't. Why? the NBN is an actual data network and the speed you pay for is what you get, overall the NBN is more reliable.
### What You Will be Using the Internet For?
Most website designers will aim for a page load time of within one-two seconds; Even now how website technology is becoming more media focused, I would not recommend any speed lower that ADSL2+(24mbps) or 12mbps for the NBN. Why the different speeds? Remember that ADSL is a theoretical maximum, on average. Most ADSL users will have an actual connection speed of between 8mbps-22mbps and the NBN is actual speed. Anything faster than this for just “surfing the web” is overkill, and a waste of money. Where would you require a faster connection speed? if you start to use services like netflix and/or Foxtel IPTV to stream videos. Having more than ~5 users, may also be a consideration for a speed increase. How much quota do you need? if you have had the Internet before, go look at your previous bills, most of the time you will see what you used for the billing period, use this figure as a basis to guesstimate how much quota you are going to need. If you have never had an Internet package before then as a guide I would recommend nothing less than 10GB quota per month for the average light Internet user. I can't emphasize this enough, please do your research before you take this as gospel. Most people do know someone who <s>“knows boats”</s> would be able to assist in assessing how much quota you may require.
### Bang for Buck
Read the fine print………. READ THE FINE PRINT……… oh, did I mention fine print? Every Internet package has fine print. This fine print will cover things like:
@ -101,6 +116,7 @@ Read the fine print………. READ THE FINE PRINT……… oh, did I mention fin
- your responsibilities
### Further Considerations
- "**Unlimited Packages"** Some ISPs do offer "unlimited packages". Please read the fine print so you can get the definition of unlimited as sometimes unlimited does not exactly mean unlimited. Some ISPs have been know to use peak and off-peak times, during peak you will have a quota and off peak is “unlimited”. A big consideration for unlimited or large packages with lower download speeds is calculating what you could actually download in that billing period. This is a simple task and would use the following formula.
@ -126,6 +142,7 @@ Read the fine print………. READ THE FINE PRINT……… oh, did I mention fin
There are however some ISPs who are old school. they will give you a callback after being on hold for a few minutes and if your assistance call needs to be escalated will either call you back or give a detailed handover to the next person you need to speak to. bottom line if you are not technically minded than ask around to find a good ISP who can assist you and be wary of outsourced tech support.
## Conclusion
Lets face it, The Internet has made our lives easier. You can now sit in your lounge room and read this long, very mind numbing article on how to choose a better Internet Service, do your Banking, Pay Bills, Buy Goods, <s>look at porn</s> and best of all place video calls to family and friends. What will the future hold? Who knows but given how far technology has evolved in the last 50 years, I think the next 50 will yield even more from this simple little invention courtesy of DARPA.

View File

@ -0,0 +1,29 @@
---
title: Site Refurbishment
description: it's an update.
date: 2023-08-01
template: article.html
type: blog
author: jon
copyrightHolder: jon
about: https://nofusscomputing.com
tags:
- Automation
- Website
- Update
---
It's been a while and for all intents and purposes; Prior to today you would not have been mistaken for thinking that our site was dead in the water. I could give reasons, but the reality is it's an excuse and we all know that *"they're like arseholes, everyones got one!!"* As it currently stands, I find myself with a little extra time on my hands so this site revamp is the start and first visibility of what I've been doing.
I've spent a good part of a few of a few decades working with computers. Whilst this has been an interesting journey, in the last few years I've discovered Configuration-as-Code. The concept itself wasn't exactly new to me, I just put off learning anything about it past the name. As creatures of habits, us humans, once we have found our way we tend to stick to that routine or better stated, with what we know.
Moving from the early days (norton ghost and clonezilla) with manually built images for every different type of machine. which became very monotonous to manually update the images with patches. The opportunity had presented itself resently where for the first time in over two decades, I'm required to rebuild my infrastructre from scratch. As daunting as this sounds, given the leaps and bounds that have occured in the last decade, even more in the last five years. Technologies have evolved to the point where now it takes a fraction of the time to do what used to take upwards of a week. Upgrades now are not rebuild the image from scratch, clone and redeploy. Now, I punch the keyboard and characters show on the screen, then I run a program, Ansible. It reads the jibberish (json/yaml) and presto, Bobs your uncle, a deploy has occured. Fresh deployment or updates, doesn't matter, run the same code again and Ansible ensures it's setup how it's supposed to be. Need to update a piece of software, too easy, change the version number in your config files.
Other things of note worthy mention:
- For Family and friends, free of course I host Password vault, <https://vault.nofusscomputing.com>. This enables you to install an app on your phone and within your web browser which lets you sync your passwords, identities and secrets-and using zero-trust full encryption. Best feature of all,you only have to remember your vault password, as everything else is stored in the vault.
- Helpdesk now deployed publicly, <https://helpdesk.nofusscomputing.com>. Along with automating everything else a Service Catalog is being extended to automate other tasks.
- Website updating now occurs automagically. We do this via Gitlab using CD/CI pipelines. Now I just edit a file, push the changes and the changes deploy my site on the interwebs.
- Our [projects](../../projects/index.md) from [GitHub](https://github.com/NoFussComputing) and [GitLab](https://gitlab.com/nofusscomputing) deploy their docs to our site, again automagically.

View File

@ -1,6 +1,6 @@
---
template: blog_list.html
template: article_list.html
title: No Fuss Computing Articles
---

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

BIN
pages/assets/nfc_revamp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@ -12,6 +12,7 @@ We can be found in the following places on the internet:
- [:books: Read the Docs](https://readthedocs.org/profiles/nofusscomputing/)
## Found an issue with a page on this website?
On every page of this website that you are able to edit, you will find this icon :material-pencil:. Located in the top right hand corner of the content. After clicking on this icon, you will be taken to the git repository that contains the page in question for you to edit. An understanding of Git and Gitlab is required for the use of this method.

View File

@ -1,8 +1,14 @@
---
template: home.html
title: No Fuss Computing
description: Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on.
hide:
- navigation
- toc
---
# No Fuss Computing
Home Page
<div style="background: url(assets/nfc_revamp.png) no-repeat center top; background-size: 282px 90px; width: 100%; height: 120px; display: flex;">
<span style="align-self: flex-end; width: 100%; text-align: center; color: #009900; font-weight: bold; font-size: 14pt;">Using Technology to make life easier</span>
</div>

View File

@ -1,15 +0,0 @@
---
title: Supported Markdown Syntax
tags:
- Development
- Markdown
- Website
- mkdocs
---
# Supported Markdown Syntax
!!! Notice
This page is still being constructed
_This website uses markdown documents to create the pages, please see the [reference guide](https://squidfunk.github.io/mkdocs-material/reference/) for further items that can be used._

View File

@ -0,0 +1,9 @@
---
title: Ansible Collections
description: No Fuss Computings Ansible Collections
date: 2024-02-21
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible Collection projects and the details of how to use said projects.

View File

@ -0,0 +1,510 @@
---
title: Ansible Projects
description: No Fuss Computings Ansible Projects
date: 2023-06-01
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible projects and the details of how to use said projects. Across All of our Ansible projects we standardize as much as possible.
Any playbooks and roles we create are designed with the below ansible setup in mind. Whilst there are many ways ~~to skin a cat~~ setup ansible, If you deviate from below you will be required to test to ensure that if using our playbooks/roles, that they work as intended. If you find that there is a better way of setting up Ansible, raise an issue with your proposal and we'll discuss.
- [No Fuss Computing playbooks](playbooks/index.md)
- [No Fuss Computing roles](roles/index.md)
## Inventory Setup
The Inventory should be setup under an SCM, git in this case; So that a version history is maintained. This also fosters a full audit trail as part of the complete host lifecycle. Idealy the Inventory along with directories `files` and `templates.` should be contained in it's own git repository. Using this method provides that the git history only pertain to the inventory alone, and therefore any install/configuration of a host.
!!! tip
If you must include `playbooks` and `roles` wihin your inventory repository it's a good idea that these still be their own repositories with them added to the inventory repository as a git sub-module.
Ansible inventory directory structure.
``` bash
.
├── ansible.cfg
├── files
│   ├── all
│   │   ├──
│   │   ├──
│   ├── node1
│   │   ├──
│   │   ├──
│   ├── k3s-prod
│   │   ├── Ingress-manifest-AWX.yaml
│   │   └── deployment-manifest-test_web_server.yaml
│   ├── k3s-testing
│      └── deployment-manifest-test_web_server.yaml
|
├── .inventory_root
├── inventory
│   ├── development
│   │   ├── group_vars
│   │   │   ├── all.yaml
│   │   │   ├── debian.yaml
│   │   ├── hosts.yaml
│   │   └── host_vars
│   │   ├── laptop2.yaml
│   │   ├── node1.yaml
│   │   ├── node2.yaml
│   │   ├── node3.yaml
│   │   ├── node4.yaml
│   │   └── node5.yaml
│   └── production
│   ├── group_vars
│   │   ├── all
│   │   │   ├── main.yaml
│   │   │   ├── vault.yaml
│   │   │   └── versions_software.yaml
│   │   ├── awx.yaml
│   ├── hosts.yaml
│   └── host_vars
│   ├── node1.yaml
│   ├── k3s-prod
│   │   ├── backup.yaml
│   │   ├── kubernetes.yaml
│   │   ├── main.yaml
│   │   └── vault.yaml
│   ├── k3s-testing
│      ├── main.yaml
│      └── vault.yaml
├── playbooks
│   ├── all.yaml
├── README.md
└── templates
├── hosts
   │ └── k3s-prod
    └── HelmChart-manifest-NginX-ingress.yaml
└── groups
```
| name | Type | Description |
|:---|:---:|:---|
| ansible.cfg | _file_ | Ansible configuration file applicable to this inventory |
| files | _directory_ | Contain files that a host may require. Playbook task iterates over by hostname and group name. Sub-directories for hostname / group-name |
| .inventory_root | _file_ | This file is used by `nfc_common` role to determin the root directory of the inventory. |
| inventory | _directory_ | Ansible inventory. If multiple inventories exist can use sub folders. |
| playbooks | _directory_ | Should be a git submodule. _This keeps inventory and playbooks SCM related to each only._ |
| README.md | _file_ | Inventory readme with applicable info. |
| templates | _directory_ | This directory is the same as the `files` directory except contains jinja templates. |
### Inventory
Naming of host inventory files is to use the hostname portion of the FQDN only. i.e. for a host with a FQDN of `myhostname.domain.tld` it's `inventory_hostname` would be `myhostname`. This requirement is a must as many parts of our roles and playbooks depend upon this value matching the DNS system.
#### hosts file
The hosts file `host.yaml` contains all hosts and by which group they are part of.
### Variable Files
Preference for variable files is that there is one file per subject. i.e. for the variables for a keycloak deployment, all be in one variable file, and under a directory matching the host/group name.
### Playbooks
For playbook usage in AWX / Ansible Automation platform, the following changes are required to be made to **all** playbooks:
- variable `nfc_pb_host` is used for a template survey variable for a host selector for limiting hosts when running a play.
Example implementaion
``` yaml
- name: Desktops and Sub-groups
hosts: |-
{%- if
nfc_pb_host is defined
and
nfc_pb_host in groups.desktops
-%}
{{ nfc_pb_host }}
{%- else -%}
{{ groups.desktops }}
{%- endif %}
```
!!! warning "Important"
The building of the variable is dynamic and must check if the host is part of the group the playbook is for. this ensures that the playbook will only ever run for a host that is part of that group.
- variable `nfc_pb_kubernetes_cluster_name` is used for a template survey variable for the dynamic building of the cluster group name.
Example implementaion
``` yaml
- name: Kubernetes Group and sub-groups
hosts: |-
{%- if
nfc_pb_host is defined
and
nfc_pb_host in groups.kubernetes
-%}
{{ nfc_pb_host }}
{%- elseif nfc_pb_kubernetes_cluster_name is defined -%}
kubernetes_cluster_{{ nfc_pb_kubernetes_cluster_name }}
{%- else -%}
{{ groups.kubernetes }}
{%- endif %}
```
### Templates
Templates directory contains only two sub-deirectories `groups` and `hosts` under each of these folders are folders by group/host name that contain template files. Preferernece is leaning toards not using the `.j2` extension as the IDE may loose functionality by using.
Naming of template files is in format `{item-type}-{what-uses}-{friendly name that uses underscores not hyphon}.{file_extension}`
| Item Type | what uses | Notes
|:---|:---:|:---|
| config | bind | Configuration file for bind dns server |
| dnszone | bind | a bind server DNS zone |
| `{kubernetes kind}` | manifest | A kubernetes manifest |
#### Feature gates
Templates when added to the group folder should be setup with a feature gate. This eanbles simple yaml to be defined to allow the template to deploy.
example of yaml declaration that host/group would read.
``` yaml
feature_gates:
is_prime: false
monitoring: true
operator_awx: true
operator_grafana: true
operator_prometheus: true
postgres_cluster: true
rook_ceph: true
```
Seting a feature gate on a template is as simple as enclosing the entire contents of the file with a jinja if statement. i.e. `{% if path.feature_gates.monitoring | default(false) | bool %}the content here{% endif %}`
## Playbooks
Playbooks are used for grouping of hosts and/or groups for a task or set of tasks that are required to be run. All playbooks must return artifacts that exist to serve the purpose of having information on the play that can be used in further automations.
### Artifacts
The artificates returned are set using the `ansible.builtin.set_stats` module. Prior to setting these facts with the `stats` module they must be set as facts first using the `ansible.builtin.set_fact` module. the latter enables passing of the artifacts via cli and `stats` from within AWX / Ansible Automation Platform.
!!! tip
When setting the artifacts, ensure `per_host=false` is set so that artifacts work within AWX / Ansible Automation Platform.
Common artifacts structure. **ALL** playbooks must set these variables.
``` yaml
# 'nfc_automation', dict. Global Variable, This is set from within the first playbook
# ran and updated as required with the end time updated by the last playbook.
nfc_automation:
error: 0 # Boolean, 0=no Error, 1=Error occured
time:
start: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}" # String of date time, set at time of setting 'nfc_automation'
end: 0 # String of date time, set when play finished, and updated by subsequent plays
# Determin end time of play or duration of play when used with start time, even on error.
# 'nfc_task', list. every playbook creates its own task dict to add to this list.
nfc_task:
- name: "glpi"
start: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}"
tags: "{{ ansible_run_tags }}"
```
The above must be set from within every playbook regardless of what else is in the playbooks.
example playbook to set artifacts and variables
``` yaml
---
#
# Playbook Template
#
# This playbook template is the base template for All of our playbooks.
#
# No Fuss Computing <https://nofusscomputing.gitlab.io/projects/ansible/ansible_playbooks/projects/ansible/>
#
# Requirements:
# - ansible >= 2.8
#
- name: Playbook Template
hosts: localhost
become: false
pre_tasks:
# Play and task set time
- name: Set Start Time
ansible.builtin.set_fact:
nfc_task_starttime: "{{ ('%Y-%m-%dT%H:%M:%S %z' | strftime) | string }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Setup dictionary 'nfc_automation'
- name: Set Automation Facts
ansible.builtin.set_fact:
nfc_automation: {
"time": {
"start": "{{ nfc_task_starttime | string }}",
"end": 0
}
}
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
when: nfc_automation is not defined
tags:
- always
# Setup dictionary 'nfc_task'
- name: Set Automation Facts
ansible.builtin.set_fact:
nfc_task: {
"name": "{{ ansible_play_name | lower | string }}",
"error": 0,
"roles": "{{ ansible_play_role_names | string }}",
"skip_tags": "{{ ansible_skip_tags | list }}",
"start": "{{ nfc_task_starttime | string }}",
"tags": "{{ ansible_run_tags | list }}"
}
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
- name: Block - pre_tasks
block:
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Check if error occured and fail task
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
# Don't use the 'roles' section.
roles: []
# if the included role(s) do not contain a rescue block, the playbook may stop
# executing in this section (roles) with the post_tasks not running. This will
# cause the artifacts to be incomplete. It's recommended to include your roles
# in section(s) 'pre_tasks', 'tasks' or 'post_tasks' and from within a block with
# rescue so that the playbook can complete and ensure that all artifacts are set.
tasks:
- name: Block - tasks
block:
# Check for error and fail play on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error eccured, follow error path to fail play
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Check if error occured and fail task
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
post_tasks:
- name: Tasks post_task
block:
# Check for error and fail play on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, follow error path to fail play
tags:
- always
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Task and automation end time.
- name: Fetch End time
ansible.builtin.set_fact:
nfc_task_endtime: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set task end time
- name: Set task Facts
ansible.builtin.set_fact:
nfc_tasks: "{{ nfc_tasks | default([]) + [ nfc_task | combine({
'end': nfc_task_endtime | string
}) ] }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set Automation end time.
# every playbook must set this variable so that the end time
# is equal to the fail time or the end of a group of playbooks.
- name: Set automation end time
ansible.builtin.set_fact:
nfc_automation: "{{ nfc_automation | combine({
'time': nfc_automation.time | combine({
'end': nfc_task_endtime | string
})
}) }}"
nfc_task_endtime: null
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set the artifacts as a fact for subsequent playbook useage
# Note: variable 'per_host' must be 'false' so that the artifacts
# work within AWX / Ansible Automation Platform.
- name: Create Automation Artifact
ansible.builtin.set_stats:
data:
nfc_automation: "{{ nfc_automation }}"
nfc_tasks: "{{ nfc_tasks }}"
per_host: false
tags:
- always
# Final error check to fail the entire play run on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
vars: {}
```
The above template playbook is designed for post automation should it be required to run. `nfc_automation` is for the entire play/workflow with `nfc_tasks` being a list of `nfc_task` dictionary from each playbook. `nfc_task` is there for you to add your own artifacts to and without any additional effort from you, will be added to the global artifacts.
### Playbook Variables
Within any playbook that we create any variable that is set within the playbook is to be prefixed with `nfc_pb_`. Currently we have the following variables that are reserved and set as part of how we structure our playbooks.
- `nfc_automation` Details on the play/run. see artifacts above for details.
- `nfc_pb_no_log_setup_facts` Boolean value used as a feature gate on whether to log `set_fact` tasks that are for setting up the play. i.e. artifacts. setting this value to `false` will caused the tasks to be logged.
- `nfc_tasks` List of all `nfc_task` dictionaries of the play. see artifacts above for details.
## AWX / Tower / Automation Platform
### Prime host
If you use a system like AWX / Tower / Automation Platform the inventory should be designed in a way that you have a prime host. The prime host is a single host that once it exists, it's capable of rebuilding all of the infrastructure within the inventory. Using the prime host method, you only require the variable secrets (vault encrypted) of the prime host and only those pertinent to rebuilding the prime host. This should only be the backup decryption key (vault encrypted).
!!! warning Warning
Prime Host requires that the backup decryption key be updated within the inventory whenever it changes. There is also a requirement that the vault encryption key be available and not stored on infrastructure that without or that infrastructure not existing you cant access the vault key. i.e. password manager.
## ToDo
- Explain usage of file `.inventory_root` which must exist as nfc_common _(todo: see kubernetes playbook/master)_ _may no longer be required a project structure is known along with using variable `playbook_dir`_

View File

@ -0,0 +1,77 @@
---
title: Ansible Roles
description: No Fuss Computings Ansible Roles Projects
date: 2023-11-10
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible roles and the details of how to use said projects. Across All of our Ansible roles we standardize as much as possible. This document will contain the details of said standardization.
Our roles:
- Common
- Docker Management
- Git Configuration
- [Home Assistant](homeassistant/index.md)
- SSH
## Role Requirements
This section covers what by default, be part of all ansible roles we create.
=== "ansible.builtin.set_stats"
As part of the role, setting of ansible stats with `ansible.builtin.set_stats` must be provided. This enables a single variable that can be used after the play has completed. Usage of a role that includes the usage of `ansible.builtin.set_stats` within AWX enables population of the artifacts and passing of the stats between workflows/job templates.
```yaml
- name: Stat Values
ansible.builtin.set_fact:
stat_values: |
{
"host_{{ inventory_hostname | replace('.', '_') | replace('-', '_') }}": {
"roles": {
role_name: {
"enabled": true,
"installed": false,
"empty_list": [],
"empty_dict": {}
}
},
playbooks: {
"{{ inventory_hostname }}": "here"
}
}
}
- name: Create Final Stats not Per Host
ansible.builtin.set_stats:
data: "{{ stat_values | from_yaml }}"
per_host: false
aggregate: true
- name: Clear Stat Values
ansible.builtin.set_fact:
stat_values: null
```
- `Stat Values` is only required if the variable names require expansion. _Can be omitted if no variable expansion required for variable name._
- `Create Final Stats not Per Host` sets the artifacts/stats.
- `Clear Stat Values` remove the stat fact. only required if using `Stat Values`.
!!! tip AWX Gotcha
AWX requires that `per_host` be set to `false` when setting stats for artifacts to work. Hence the structure of the artifacts above use hostname prefixed with `host_`. This method enables programatic checking if by host due to the presence of `host_` in the dictionary name.
=== "Variable naming"
- All Role Variables to be prefixed with the role name.

View File

View File

@ -1,4 +1,4 @@
# Ansible Roles
# Docker E-Mail Server
| :red_circle: This page is a placeholder for the ansible-roles repo's docs. |
|:---|

View File

View File

View File

@ -0,0 +1,5 @@
# Docker GLPI
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -5,4 +5,5 @@ tags:
---
# No Fuss Computing Projects
## Our Projects

View File

@ -0,0 +1,5 @@
# ITIL Runbooks
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -0,0 +1,5 @@
# Docker GLPI
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -7,7 +7,7 @@ Redirect 301 /wiki/public/article/150225_choose_internet_service /articles/2015/
Redirect 301 /wiki/syntax /operations/syntax
Redirect 301 /wiki/public/help/mdt/* /wiki/info/*
Redirect 301 /wiki/public/help/mdt/home /articles/2014/mdt_setup
Redirect 301 /wiki/public/help/mdt/applications /articles/2014/mdt_setup
Redirect 301 /wiki/public/help/mantis/* /wiki/info/*

View File

@ -70,3 +70,52 @@ a.tags:hover {
.mdx-author p > span {
display: block;
}
.container{
width: 100%;
}
.container .row {
width: 95%;
margin: 0 auto;
height: fit-content;
}
.container .row:after {
content: "";
display: table;
clear: both;
}
.container .column {
float: left;
width: 50%;
padding-top: 30px;
}
.container .column .mdx-author {
padding-left: 30px;
}
.container .column h2 {
margin: 0px;
text-align: center;
}
.container .column ul {
margin: 0px;
}
.container .column h3 {
margin: 0px;
}
.container .column img {
height: 22px;
}
@media screen and ( max-width: 700px ) {
.container .column {
float: none;
width: 100%;
}
}

View File

@ -1,3 +0,0 @@
# Welcome to the Wiki
## Wiki Sections

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
-----END CERTIFICATE-----

View File

@ -1,22 +0,0 @@
-----BEGIN X509 CRL-----
MIIDjzCCAXcCAQEwDQYJKoZIhvcNAQELBQAwgaoxCzAJBgNVBAYTAkFVMQswCQYD
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEOMAwGA1UECxMFRWFy
dGgxFTATBgNVBAMMDEVhcnRoX1ZQTl9DQTEoMCYGCSqGSIb3DQEJARYZaW50ZXJu
YWxAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0
aWZpY2F0ZRcNMTcwOTAzMDE0MjAwWhcNMTcxMDAzMDE0MjAwWjCBhzBBAggigeQN
UjXbIRcNMTYwNzIzMDMwMDQ3WjAmMBgGA1UdGAQRGA8yMDE2MDcyMzAzMDAwMFow
CgYDVR0VBAMKAQQwQgIJAM2h1w1EQ5qtFw0xNjA3MjMwNTU2MjRaMCYwGAYDVR0Y
BBEYDzIwMTYwNzIzMDU1NjAwWjAKBgNVHRUEAwoBBaAOMAwwCgYDVR0UBAMCAQUw
DQYJKoZIhvcNAQELBQADggIBABLLdl2PjX5MlxZ6fhkmKsU47xlpWdG4UUKc2Mcb
ioi8HJKH4RgLOhVBEmtV91RsndCNf3TMpAzDH5zySCNhIZk5ZT1m3yk2TEMse34a
qTWzfEpCNGPbhDTz2Eu553LZKg8Vem0OEKHjKp0i0vOXG7TN/9SHBs5pOUDYX3Z/
iK6Xt6wQ6Ajl4x8mfArivwmVVK0ZIQJpHSSHhv29HzzJpgu8ZuI16ooomGrnEnlF
Sv3tNo0UleARmzKd+dlTsSfPq/gmcX1J3bgTB2QqQTyhQRewn5TC74pJ5CC3wGeW
wzsI/xovSKWwgrWSKTfaKwAhnamJQ8Ya96zEgPnc+k4UJ0IMNdY47/3OlQIvtCmG
D16D6j4T9M6TbdBKSLdNTPZXXU1jXTc5qIUccBAZqJSxOHqp15JTx5x6mVqhx6AT
dmL+ydm8UjjG/1kc//qjuXkDc7WoklTPd6vGawBsezoS8T4+okrFIG9domcFVKrL
D+JyMe2ZkJpRferxdVOSh773M/mNBI430aL3TKY6oPhvwx7gmpCPX3trUv+gi/Om
9f7mHZFk/qUs3pomAffaZzeX9g3+sktMY2l3cTYqsAOZGrUDbFjks+LGbCmHhnVm
KTl7QRbEnte2Bpz4GeN0XAf9HntA2A0yfoOWgsH6FEkh8H839fBAErvzpqD0qCDV
xY2/
-----END X509 CRL-----

Binary file not shown.

View File

@ -1,26 +0,0 @@
-----BEGIN X509 CRL-----
MIIEWTCCAkECAQEwDQYJKoZIhvcNAQELBQAwgaoxCzAJBgNVBAYTAkFVMQswCQYD
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTkZD
MRQwEgYDVQQDDAtORkNfUm9vdF9DQTErMCkGCSqGSIb3DQEJARYcaGVscGRlc2tA
bm9mdXNzY29tcHV0aW5nLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0
aWZpY2F0ZRcNMTgwODA1MDEyNzAwWhcNMTgxMDA0MDEyNzAwWjCCAVAwQQIIDa1c
UsioJyoXDTE1MTAzMTA0MzkxN1owJjAYBgNVHRgEERgPMjAxNTEwMzEwNDM5MDBa
MAoGA1UdFQQDCgEEMEECCBIR9spKIlyLFw0xNjAxMDkwMDM1NTNaMCYwGAYDVR0Y
BBEYDzIwMTYwMTA5MDAzNTAwWjAKBgNVHRUEAwoBBTBBAghovaIOdTUkJhcNMTUx
MDMxMDQ0NTM0WjAmMBgGA1UdGAQRGA8yMDE1MTAzMTA0NDUwMFowCgYDVR0VBAMK
AQQwQQIIdCmC/xpJTM0XDTE1MTAzMTA0NDMxOFowJjAYBgNVHRgEERgPMjAxNTEw
MzEwNDQzMDBaMAoGA1UdFQQDCgEEMEICCQD9Keh+217BPhcNMTUxMDMxMDQzMTE1
WjAmMBgGA1UdGAQRGA8yMDE1MTAzMTA0MzEwMFowCgYDVR0VBAMKAQWgDjAMMAoG
A1UdFAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAjjuEFC9NS8IatH6V+bXVj+NuA
Y6BkDT/u4uOvKecLZjM8OuSAlj+yVPEp5d0QKFGEN/1fmkLyqRK/0vhoLNufwnzL
eM14l/aZpTudl8dVf2EeJa2i/whUP9AOf8QH4UQxtWzbmPzcrZbfJdrRe2L8g8xl
yyMi/htHszutqIP1ZuwhYFGFHJZNiUHwm/LV8Ht0ZnI05YrqsMY9VFVXOT46qbMH
CaL/jx0xd4+nrXcbTSD1aKlagkY/7nHh5JIyK5f0nWiZ6uIc1ZLrXjgvT3mG9oWC
fImXfeK/dD0Q8s67Tmcb8EyhuYPabb/h/Vw6IpUAGg5KxjW+fLfpeqS5sivDzp65
lkgsYv4PCe7C2lW/sapBVx47ISXIaNLNR0gTA8dE5mTbHIIwaa4rDL3jvtmPkNa5
qv/0HXH0oRYKjEQLFgCI77ZNU6bCXPmpCxiD+2s3+fEHxRHYjVn7Tyk0Qdeqrllu
8qKA18tP5icF0PXv7sVouXdHCBK4nLfgzHfaLr2zhVfO154evKzLDS1GmDcytCl+
MFhA1RM94xfwOxPwiHJ/e4MpdJ3BE7lxRiyVoBQiV0xwP0clhoCadBMvvDvGnkGc
AZ7UQDK5YhXh06Pv+ByX3xxE9Vp7Bo/teFxIwYPVH2BmPAowVoMzCLkj36yv1keC
laDVPqeP/31+efeFsA==
-----END X509 CRL-----

View File

@ -1,22 +0,0 @@
-----BEGIN X509 CRL-----
MIIDtzCCAZ8CAQEwDQYJKoZIhvcNAQELBQAwgdkxCzAJBgNVBAYTAkFVMRYwFAYD
VQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
VQQKEw1OZXR3b3JrZWQgV2ViMRswGQYDVQQLExJOV1cgUGVnYXN1cyBWUE4gQ0Ex
FzAVBgNVBAMTDlBlZ2FzdXMgVlBOIENBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5h
bEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRp
ZmljYXRlFw0xNTEwMjUwMDAwMDBaFw0xNTExMjMyMzU5NTlaMIGAMDoCAQoXDTE1
MTAyNTAyMDAxMVowJjAYBgNVHRgEERgPMjAxNTEwMjUwMjAwMDBaMAoGA1UdFQQD
CgEJMEICCQC1TE15xf9+yxcNMTUxMDI1MDIwMDE4WjAmMBgGA1UdGAQRGA8yMDE1
MTAyNTAyMDAwMFowCgYDVR0VBAMKAQmgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3
DQEBCwUAA4ICAQA7ZZfRgAi2b38IqxXLsINcyczWQ8/y8SKVv4xlu0SRkfWBVYF5
pqD5lIjwZNKIqIpUzq4AYqV3u7GnkPfQ7WDIMveZZwp6DL2Jc0cjz1gNsU0ezyxt
V0JQLppUbH/x3xBR/+NszvZaCVYFOyrlUFSYO06CqXWRgpnJuhk0vJQygU6C9xcO
OzM7JlgI0NT/O3IDPC4gh/TPFdKnKVfcNpFimwJ91w1eMvTkpys2BvrKk0/bAuQz
PVtCx45kqCyP8WiMb0PZmQKAOdIREHb4sGS2dPocBARYxwFYDwgQ8g3BqnHCLM87
Og1+b3QACi2PZ4e3yV8pqJhXnix97N036WkVV11J9VLdOUIPzkXsDFMmkYh4z9Vg
GOA5lzRTXYJVk7E7t4BDT7cu6y8ugW2BsLMlh0XrGTDwNhzJ8GBYWAkG2t+H+N/m
hLsBqt0tn/8XQvkize7qauado1CaouWMHWwA84ZX811vXW29m3VmYxQl5Q3oJWul
Rp1M9xISRVzpRx6GuzVPzN9LEfI4ZvSvHLUva9i6A08hj5aUYDvgtXmyaC+PaxBs
SfX06CeylzOf4hm3hubcGu+5Ynke7ZtpECSGxr5I/72oC6zukkiv9i6FXC1oGxuo
pBBjuoeG2MmO8HdDKE0T5XqkqmQv7Um4clDYRInMCACSthtW8U0ry7Wamw==
-----END X509 CRL-----

View File

@ -1,29 +0,0 @@
-----BEGIN X509 CRL-----
MIIE5zCCAs8CAQEwDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNVBAYTAkFVMQswCQYD
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldX
MRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24u
bG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdl
YiBDZXJ0aWZpY2F0ZRcNMTgwMjA1MDQ1OTAwWhcNMjAwODA1MDQ1OTAwWjCCAdgw
PwIGIBUQJxYnFw0xNTEwMjcwNzQ0NTZaMCYwGAYDVR0YBBEYDzIwMTUxMDI3MDc0
NDAwWjAKBgNVHRUEAwoBBDBBAghaYikTObwI4BcNMTUxMDI3MDcxNTAwWjAmMBgG
A1UdGAQRGA8yMDE1MTAyNzA3MTQwMFowCgYDVR0VBAMKAQQwQgIJAMXtJgEvbEgG
Fw0xNzEyMjEyMzQ2NDFaMCYwGAYDVR0YBBEYDzIwMTcxMjIxMjM0NjAwWjAKBgNV
HRUEAwoBBDBCAgkAxe0mAS9sSAcXDTE3MTIyMjAwMDUxMVowJjAYBgNVHRgEERgP
MjAxNzEyMjIwMDA1MDBaMAoGA1UdFQQDCgEEMEICCQDF7SYBL2xICBcNMTcxMjIy
MDE0OTQ2WjAmMBgGA1UdGAQRGA8yMDE3MTIyMjAxNDkwMFowCgYDVR0VBAMKAQQw
QgIJAMXtJgEvbEgKFw0xODAxMDUwNTA3MzlaMCYwGAYDVR0YBBEYDzIwMTgwMTA1
MDUwNzAwWjAKBgNVHRUEAwoBBDBCAgkA1bayDE6HOc0XDTE1MTAyNzA3MTAwNlow
JjAYBgNVHRgEERgPMjAxNTEwMjcwNzEwMDBaMAoGA1UdFQQDCgEEoA4wDDAKBgNV
HRQEAwIBCzANBgkqhkiG9w0BAQsFAAOCAgEAJbVR23uwFuOi4fCQHn/0gLm24PjI
xkXeim/Vep9vc3LCH1+r73O3Pf5kWKBmklul9MpywDAyPiV5wU6k2x8EMSKLEe+n
IRE+32JKPSGx2nluSn2IUonQKF+ZtG0hW367+D3HShdinzNuUbqfGGlAjZwmgKem
zydh7VSkvBxQersvXknPvoIjbTOfw0l10icE4WwbY5PtHdz+SYUH86UrVHPH5MG3
tJEMnmZfbyGAs6vYm/NDD4cF4tIF4ziId7nmPBUf7dnFlw75xRUjyem397AnUOez
zS+K/j9u3V/um8jfaKkdXFfT8DOaiFv9YBsdwOTsgDFgKTalgWHbibOH2wk/ZrM6
k+hfpgoE5/CtZyKKD/s5SuYcBYEfYY1M2g/QzU7RpScjPz+yvIBoOhitk+urHBBq
Cx3iM9HW1vNq8trJomeFkqGFSiN+Uv4hq51BThljLxaMoga2tE4hdeO3kIr2Ntv/
acoTKbljxX2YxCvkZXombmX2wecORO3uS+TNKolgzU7FE8vRI6E7yC+jjdDpksYL
wVL7pa0kL2YtagpmOLFCeSlQ/iWlQMUSqBLbpyEWX/JvgVghUWcwn0n65UEr+zyQ
LzhaXpc2MNVRoskN1ONSCCJW34x2IBzG6+Pk/dKKKAna4340zG5txyKKl5jLkh5/
YJP4oXLy576q/30=
-----END X509 CRL-----

View File

@ -1,29 +0,0 @@
-----BEGIN X509 CRL-----
MIIFDDCCAvQCAQEwDQYJKoZIhvcNAQEFBQAwgdYxCzAJBgNVBAYTAkFVMRYwFAYD
VQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
VQQKEw1OZXR3b3JrZWQgV2ViMRMwEQYDVQQLEwpOV1cgVlBOIENBMRMwEQYDVQQD
EwpOV1cgVlBOIENBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBu
ZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmlj
YXRlFw0xNTA2MDUxMDU3MDBaFw0xNTA3MDUxMDU3MDBaMIIB1zBAAghGwdK73FPg
2hcNMTMxMjIzMDgzMjI5WjAlMAkGA1UdFQQCCgAwGAYDVR0YBBEYDzIwMTQwMjAx
MjM1NTUwWjBAAghL9H8/00JjmxcNMTMxMjI0MDA0NjQ5WjAlMAkGA1UdFQQCCgAw
GAYDVR0YBBEYDzIwMTQwMjAxMjM1NTM1WjBCAgkAgqnPP+Wf1YkXDTE1MDIwNzAx
MDgyNlowJjAKBgNVHRUEAwoBBDAYBgNVHRgEERgPMjAxNTAyMDcwMTA4MDBaMEIC
CQCF4C80Bu+WxhcNMTUwMjA3MDEwODAyWjAmMAoGA1UdFQQDCgEEMBgGA1UdGAQR
GA8yMDE1MDIwNzAxMDcwMFowQgIJAIdWbI4ErRreFw0xNTAyMDcwMTA3MDdaMCYw
CgYDVR0VBAMKAQQwGAYDVR0YBBEYDzIwMTUwMjA3MDEwNjAwWjBBAgkAtUQpLTey
hp8XDTEzMTIyNDAwNDUwNlowJTAJBgNVHRUEAgoAMBgGA1UdGAQRGA8yMDE0MDIw
MTIzNTU1MFowQgIJAMpeaX2ilH7BFw0xNTAyMDcwMTA2NTNaMCYwCgYDVR0VBAMK
AQQwGAYDVR0YBBEYDzIwMTUwMjA3MDEwNjAwWqAOMAwwCgYDVR0UBAMCAQ8wDQYJ
KoZIhvcNAQEFBQADggIBABUTNIxIswUIcEKCDyF4rQFtB9YLKv4jX5JuR3WAdh+k
R3cTDeDut34tvN9WMj9ukqXYcBMceqlVSjGEw2S5yCF9GFfZuwkBKoGw+yqX9obz
11GM4+mOGeJzPsWLEMhFjcl53OWIVhkcyko6uVPrQ88JlTJWrligBE8CYsIcDpdu
9RyPuo2lzvQ0/cS6FkENnVlp0ILFIV9YExdb/ot486XRmk4EjTwqawea58BwY4+k
0g9okPIilDzE7nScvBIW3S1WRY2WCRrLccfJ3x0oCPDbVYxseKJ/SPCmar8KvM5A
y7hAhOpQ4nZGATYXcvRyA0pPagKafIWpXpoQiu7kMn38Dlmaeqp3qL7sfLUjj/QJ
UVovISWkIQx9RTwx8CixCABJnLXYeiiXycsPc4rvcoxNqU9FdDwlK+kfU8tQkCm6
QJI4o5vH4s1cVFcjBnhJWRmK3gARKltKkgkGVxFHedZJ3CziwGHPFA0gySZEzPNt
jC1g6auCROVTFQKoQ+nxreIF76ia0siWlYCyS022f4mOaBaR9lzSuNUH5YnF3h8u
ZO+lwLpGQ6NPocg3kEOHrlQklw4KMx3ZJha7G2nz5DWTMt4jTFGKU0iLabYkU+HR
IgKOdOCqWWCdFuXxOlneCIkagWZXWpPXBHMSBw8IPIyp9ts2o8dzGclErBWh96bz
-----END X509 CRL-----

View File

@ -1,32 +0,0 @@
-----BEGIN X509 CRL-----
MIIFmzCCA4MCAQEwDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNVBAYTAkFVMQswCQYD
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldX
MRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24u
bG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdl
YiBDZXJ0aWZpY2F0ZRcNMTgwODA1MDEyODAwWhcNMTgxMDA0MDEyODAwWjCCAoww
PwIGIBUQJxYnFw0xNTEwMjcwNzQ0NTZaMCYwGAYDVR0YBBEYDzIwMTUxMDI3MDc0
NDAwWjAKBgNVHRUEAwoBBDBBAghaYikTObwI4BcNMTUxMDI3MDcxNTAwWjAmMBgG
A1UdGAQRGA8yMDE1MTAyNzA3MTQwMFowCgYDVR0VBAMKAQQwQgIJAMXtJgEvbEgG
Fw0xNzEyMjEyMzQ2NDFaMCYwGAYDVR0YBBEYDzIwMTcxMjIxMjM0NjAwWjAKBgNV
HRUEAwoBBDBCAgkAxe0mAS9sSAcXDTE3MTIyMjAwMDUxMVowJjAYBgNVHRgEERgP
MjAxNzEyMjIwMDA1MDBaMAoGA1UdFQQDCgEEMEICCQDF7SYBL2xICBcNMTgwNDA0
MDExMTExWjAmMBgGA1UdGAQRGA8yMDE4MDQwNDAxMTEwMFowCgYDVR0VBAMKAQQw
NgIJAMXtJgEvbEgJFw0xODA0MDMwNzU4MDdaMBowGAYDVR0YBBEYDzIwMTgwNDAz
MDc1ODAwWjBCAgkAxe0mAS9sSAoXDTE4MDEwNTA1MDczOVowJjAYBgNVHRgEERgP
MjAxODAxMDUwNTA3MDBaMAoGA1UdFQQDCgEEMDYCCQDF7SYBL2xIDRcNMTgwNDA0
MDA1ODM4WjAaMBgGA1UdGAQRGA8yMDE4MDQwNDAwNTgwMFowQgIJAMXtJgEvbEgO
Fw0xODA0MDQwMTExMDBaMCYwGAYDVR0YBBEYDzIwMTgwNDA0MDExMDAwWjAKBgNV
HRUEAwoBBDBCAgkA1bayDE6HOc0XDTE1MTAyNzA3MTAwNlowJjAYBgNVHRgEERgP
MjAxNTEwMjcwNzEwMDBaMAoGA1UdFQQDCgEEoA4wDDAKBgNVHRQEAwIBDzANBgkq
hkiG9w0BAQsFAAOCAgEAqAPkorhG9ASJ85EebuhVSCQ2FVtceMvbzF7TW9cNcifk
pgsfHZOSHWXprmDmDv1KVbjeTIyYUufycyfF4u9g6DMGdH6N8ScV+PItUcyTAy21
ZqHxdJxdYtaxcJlkHnrAhOLs4KhwTUAkdivZZUZKnFQHntmZA+hIkvDiVZQ3IP05
frf+1UzOZX3MftQLGQtUZ5fM2JHzPwO07eUNjiD3nwcX/N8YcyrxHaZG7aTYUEEq
7QIw10ghRrUCZw8TnL5grQYJdmsA8aI152tI+eevjgdECSbt+6uQpnPa/Z0pyRug
ahtY0EJUrw/2VPvm4T8aHVTe/E/EkWccyiJFBs9Qe6VOs/uWx572O8q9eOzYOZoY
m2YmrDlvqBD5km45JrDfjS1mRRPAHeRyt5JIB9Jf2zFBJUU5SHB+KZP02NvoxEOK
/sRPKKZP/54dRhAgCUhAjw9knLjChWlL4RpLn6Vf08saL08Tfh5hbWMsnCGjesyf
Cf3aqisHc/5dxCqfKKtn/RjGrXSHsh/y+TtvYP9ssVQdCFc3qvVpxwhex1fms4Mp
THCm2JQlZMaMALPgoeaVyTX3K47/oBQaMh7DcN4Eq9j89OpUNHwhXU1bD5CWM2UY
BUu5+2wIAj/3Ifuo4JTcOnhCBwuF2sSATiRV7Y3QjgKRmqhuzMBUNRKw3Cc2Z48=
-----END X509 CRL-----

View File

@ -1,19 +0,0 @@
-----BEGIN X509 CRL-----
MIIC/TCB5gIBATANBgkqhkiG9w0BAQsFADCBozELMAkGA1UEBhMCQVUxCzAJBgNV
BAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMRAwDgYDVQQLEwdQZWdh
c3VzMRcwFQYDVQQDDA5QZWdhc3VzX1ZQTl9DQTEoMCYGCSqGSIb3DQEJARYZaW50
ZXJuYWxAbmV0d29ya2Vkd2ViLmNvbTEXMBUGA1UEDQwOUGVnYXN1c19WUE5fQ0EX
DTE1MTAzMTA1MTEwMFoXDTE1MTEzMDA1MTEwMFqgDjAMMAoGA1UdFAQDAgECMA0G
CSqGSIb3DQEBCwUAA4ICAQCxo2KoBQ+1IP+ZuiqG78QhjVRLepmxiHzGUw6gkzIz
kkCyNSc/V0ZfdaRtWYZ23A7WjNSvdQuwhKp5Nq8SlCVcH0ymb0nvifT4w7TOQxFf
0FpK76hYD1Ozx71/prI9q1QyRjD9yqMmxYObAQphrGJVZ8ljpKUYLOvxg6NMO8Ns
ZYLlryLYf0+MdID2WejW9KFgBSg/bi49UHxJw4hGnXx98IAVSbnqYmxejiEjwbLQ
5C8cgozEn9RUMSdWzL9d2IUOt9ppKfy7VgOH/2io0IMb28RxD/b3RdCCNNelSKFE
DJrSuOwhvP32u71CYN/6GEcg3yHif5d88yKnmPkC/iwr79oLe0dQh0SRsO037sUE
G53sA+9N69EtwqwXjPFjruns3ngtJye76gJksceI9JJB9Q5qfShCSqVviX5iCcMU
tNv5mYtS6yOIjUgPpvBOSuUPwsiegGE6Zgvz2EMgutaxnDdgbkvO/8gEy154kft0
1l8W+/ueUEAZPTifoSMWr8Up6PFKAdCO46XSvWEuQ1NcZeWvq1EioBT1U2M65hB3
bKtRFWUkCxQJWxye/eLw+SGGGwVpXy3P7sueUWiXFSmtAbfXuWej9LlMju5FUKXY
34K6RlI/GkPhwfWN5SAfYnX3qOF3IUiTAxchCQZ2Z6JR1dIEShHX4Ur4FdW45lXM
aw==
-----END X509 CRL-----

View File

@ -1,44 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrTCCBZWgAwIBAgIJAIF057Inea3QMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQ4wDAYDVQQLEwVFYXJ0aDEVMBMGA1UEAwwMRWFy
dGhfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3ZWIu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3H82oeWzt5ZBoyelJhBjp8WrjE5yrR9+
/xn118D/WXGeLMPixXmjNe9Ik0tg824DBoc3/ZHOtt8Knk32LZZhF5BF1B5H8Xgg
zx46e23tufVzUWPt+tZjV35//T/PikYUZUdCTYbYZFOuR0VwOiJBtCu0TEwQDaLe
bT9YJmAiSACKRUAT5WJwmP8mxuwW0qL5gns3Sfldq1Fvqjwa/WZQfI1uvV0GeHdd
EWiH5sTe6wtIHjXUwV/YvCsDcqk3e/Jl77QgiYwduovx/jKRCNtpBVH9yA5wsdRk
cPhAEdF8SK/8Ti/8SOChYePmIlIpbqZSO5lxyGJB+JP6Lq5gFSLX2xkTx7Z+GrlG
hiq7++PyI5S9wOsxzb+yggiX9O09n8L39cQ8t6F48AXEZpdE8jdp+jbrLUhFJ33N
HFShms92VGmEL/Hp+o4jzLkKjj8JiZtQVEfTQWiCpU2Iy8SE2soFzx2XrGS4QNkG
5Qes39dfJtPzzugXgO9LjeRECfH1o5j5gr8MfV7S0Pa9KiamTRM+qCjyLM6FgboY
XtqvGNhjZPspZCL2BePNvXMOuWQY80W2NYwpcmtQWd9NXRTOMCkBSYbaTX2gny0j
sAG8OlKz/oNjEFhuS9DYhaB2d9i/7Ye8zFGNxhX/zSXrwSFYB7ew9unACk+UMW4m
7oX3ZkaBx50CAwEAAaOCAcwwggHIMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FHofT+JsVUY8oAVJR3ijj0MxpFq8MIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQwYDVR0fBDwwOjA4oDagNIYyaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML0VhcnRoX1ZQTl9DQS5jcmww
SQYIKwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0
aW5nLmNvbS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
CSqGSIb3DQEBCwUAA4ICAQA/Esj2AP0oM51YYuPhE1Mmknkx6Xxnn49lZim9BJEr
PMe5+M1wxlXnMklHl0AEyf59W1V6PCvlONonsOOZg/Dncm5w4AYdjeUSUxGMr6lw
kVViKkPApv1NBzw3kmJDL0CazTR3K+nl4mB9BTbOSnvGX7QUcZZ92mDxqBAiTaRb
rk8OzDW4+Lla51hSsBYuQrmRtx1jT/OZxLL6HDfM53HTLMvbFMndC2pnZL78owtp
q/V9zyyWC2fjDFGeMAv/7/0BuwfP3Ovir5OIv7C8YMrfcshgZhdt5E4mKX02TENT
x0tfNV/T/TeQGjdX85L4uYnViAA+rAlVRjE8Y0rZInnhDahI5ptpUUjSUvF0D3k1
ZTXvCqvev4As7k0ci4mCO15LQLcQWOrirzARSR4l1OFWmlxd3zy8CBgjN8RgV0r+
qPp1DWO/5hqKgVoBUKKAWX7cVu1FZYlxjiKqYsZHkwq5vy7ibHCSipufCWCVdU1X
dkhXhbEaS4FIA1epQNhH+GPyMxVU5uTTieSx0uvEbKvJ9UmLIGQLxBsWSgfmUKjc
xST6RlvTmKywV3ansfmYw84IxSZylpm8gT8+r5iod7lHXre1f+hESmE4lQvQ51eM
f3RjNf5W+uGtaPTGzZRN+b//kGs1pmn6Mtyr94DQCHp3LJCAVoHpFqy8PqjdlLNo
Yg==
-----END CERTIFICATE-----

View File

@ -1,35 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIGFjCCBP6gAwIBAgIIB+I42RMLhBgwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
dCBDQTEUMBIGA1UEAxMLTldXIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDAwMDAwWhcNMTgxMjIyMjM1OTU5
WjCB2DELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
BAcTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNV
BAsTC05XVyBSb290IENBMRQwEgYDVQQDEwtORkMgUm9vdCBDQTExMC8GCSqGSIb3
DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UE
DRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBALrz75sW0VR2qqi6UAtk2z/0GpLxlPsgGawLePfNZXvdYHcB
1JzPpAyCZ+PF4VIHz17tmdQFyN+msd2W6Op8SI5CW3MDHwA5HoAGcm6vx+xp95UX
96+fbqthL3UPNuOOW3EWXEb3DsF2wtrNXdhq4nyOMGrioe0fQvo8ij7Qg/eiFJSu
Sg3zPssa5AjsJ3P4px9kQusm2tkN9oH/1AZmE3CJXkVzqzEPbmnUzt/LD2I4Hd86
KweNsSiBeZwrxWN7nQUla+rWE7Al+orLLnQbj14uz5Oeh+y2VnVmXxec23mebUcl
Pxy9GhxnKMF2wp6//nJs/soJKt/KEdWaMU4oW1m/rkJejjVQSvBvO89hL+4hi1iK
aoxXRnNnX6V5naXPAjlOXzDqZSnmDPk31gWL7uy7eeNY/+dCYKNk/ikstGAhfn0y
k70tUAguBf3zAewRL8JM05+HrYGdhCv/qFb+VrZEf0BgnSvq4XpVszNYJY+JePbW
smOw0/569aptCHaGtpuuvDO5F5GmtvN10NWYXRJx98txAT4SnfDHuxp/kbqlgXQF
Q+I38vVYRWfDOoakxZYESvGNlXZ12aY9RiMKp4191Los9yH16TXoERvg8Q1a1QEQ
l+fwM1iTg3RJ1WowCm6QvsU5NqVjrx0GzXCTxkd9OCjyiVwl64X9sDjYZhe3AgMB
AAGjgeEwgd4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwQAYDVR0f
BDkwNzA1oDOgMYYvaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05X
V1Jvb3RDQS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzAChitodHRwOi8v
bm9mdXNzY29tcHV0aW5nLmNvbS9DQS9OV1dSb290Q0EuY3J0MB0GA1UdDgQWBBR6
prE+wkxZU+lAqwU04QYbfTVQxjARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcN
AQEFBQADggEBABV0Uw7kioLo/bUf9Bkcjq08v6zAvnjfp22u+P3USDWvjdlyBM1F
J39TOf2tAvZJ+33HzDanNL1oDw57IVw7QqIasLJRINa3gojUml6SaOT/DF0HpcJO
LN1e1x3oaQHHw5cljCFue4PRdja2z7EgsPY2qZdIdnN5CuaUI29qke8MD4cX0Ezu
KtCzkL8TWsc+QKZYodNjSwviOBIEOar1ayGAGfarqszDKHk3jG8W390BJBVtpUgL
zOyyv4SmKu+Zu090nAB91ThYYA3vnPV3Ar+tAKl0taSWNQh55jrwSA9BhrFGaRxb
huJWadC1O7ILrs72kIExzELUSDcqOhc1Nuk=
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
-----END CERTIFICATE-----

View File

@ -1,29 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIE3TCCA8WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCB2DELMAkGA1UEBhMCQVUx
FjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAcTDU5vdCBTcGVjaWZpZWQx
FjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNVBAsTC05XVyBSb290IENBMRQw
EgYDVQQDEwtOV1cgUm9vdCBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9j
a3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBD
ZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwNTA1MDBaFw0yMzEyMjMwNTA1MDBaMIHYMQsw
CQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90
IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldX
IFJvb3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJq
b25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3
b3JrZWQgV2ViIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE6IZ8ylVsQ45HEI8svadYbKay
Vj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Emt0yMbMbxCj7NW7jM3UeTNP4+
0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6TzbtxLKfvyOIPczDbDBBtfAicw70
71ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpucQy4D+iGMDDfNfltcjd+NA5Y7
YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0A736zo+kiP/SbryqYVUgJZoC
aJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4GvMIGsMA8GA1UdEwEB/wQFMAMB
Af8wDgYDVR0PAQH/BAQDAgEGMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9ub2Z1
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9OV1dSb290Q0EuY3JsMEcGCCsGAQUFBwEB
BDswOTA3BggrBgEFBQcwAoYraHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0Ev
TldXUm9vdENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAL1+9V99RaFuqyzb20E9/
DKoByMK2Q+1Mepw7CdbEQbnOtj4CiWnNA4Nw2rMOcV1dsd0WoExlW/bBHXWqS33x
x/XCODiJtmVMDqPU01DSQy74y7cQxOh2qetvsDfbdVHQryeMSZbEvvlranXkmZOB
/VgrXbrFBC8rJ5LxY+GdC93qUpyhZ/ON9iWMzq5b1nkqLSy4b8OR+gHINBWAu4Rj
fByKj3QerFf+272ADRndJXZRf376TY5DSFdolyvPVO9/S+ussnlpZP10dtlLsJ5H
rEfq+VCmSwC2YTkJNUTQvq2iOlgAQUl5UDkd2LvthO3NsZaRgVObLudfRQzV5UHO
Pg==
-----END CERTIFICATE-----

View File

@ -1,35 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIGADCCBOigAwIBAgIJAOdfyaftuP41MA0GCSqGSIb3DQEBBQUAMIHYMQswCQYD
VQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90IFNw
ZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldXIFJv
b3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJqb25h
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTEzMTIyMzAwMDAwMFoXDTE4MTIyMjIzNTk1
OVowgdYxCzAJBgNVBAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
VQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRMwEQYD
VQQLEwpOV1cgVlBOIENBMRMwEQYDVQQDEwpOV1cgVlBOIENBMTEwLwYJKoZIhvcN
AQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQN
ExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEAwZz2VgcS6fxoPnwUV3RjCUQbtSsZA9tFN9OuB60lQ82g70py
lBiX1oM46tCMADtogri4N1QVNvqpn2ibpfmSof4+0u5OLU0TD8t50MaVit2r74g0
lHFxPungIFaXcaONQzdXkyvUOkuOQyLZWsOZT7rvt23ojZWeHyqZYeLjHRLeM8Pd
Hht+S/07PMiEirt5ah61qEr5tm1Q15BS9RMMhqyd0tDacX4mn/cKPwiTx8gwVh2I
hw+sEco6pZezmPO6pZjYboz1SviWGNVlHa08+hn+MvbSBqiUVy4Ebvg0YBiobudH
6mW86n6k0Fbhl/Nx80J6w6kY12GKoOmLWH3F4xW7+t12knGc/pBwA6A0bjS0VxUN
OXxHhvA7BF04QtG80l4HfZqMKVZzotj2pL7WG64DGARMjRO4U5+o7Slry0R+iI47
wsvkGvkq5MMdB7AEeSFH4+ykowyYAmL1lqjW+3W7NKAWIvRmGn6Z4pbKvvo0nS7J
dMcrpu57MBwJ88ExnLhLfgq0K+8hBBf8OKuYferXMRZmrcQGZIG46rxYkS4fTxiP
kk0o6VOqg3YcgH5euLk83v0xPy4pb1YE3s1bfe23bq5NEpEOJynqMCk0T8dUGybG
SbuxfXAEZuVxr33WcmlSokDz9H/fk30I6Rnb3mV5C8ab8LUtuXt55333musCAwEA
AaOBzDCByTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA/BgNVHR8E
ODA2MDSgMqAwhi5odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldX
VlBOQ0EuY3JsMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAoYqaHR0cDovL25v
ZnVzc2NvbXB1dGluZy5jb20vQ0EvTldXVlBOQ0EuY3J0MB0GA1UdDgQWBBS6auHS
OpuvAE/jfGPgdfc3+cLFGDANBgkqhkiG9w0BAQUFAAOCAQEAt+TemCvfM7MwTQ9G
EroZKi5Pr40UEvs0J+jZ8N/NtpOStZUDeH3gUjWZhr+iMKJVu/GtAX/IWP6IBbBo
wH8xJCuWoZV6H2MdKc8YEoaEiwZ9N3THrYqOrqDO7nw3ORNZ4O+sEd3u/IRa63Ha
uXmBMEdn+Llinpn6IKJMBCP1nYDfQ4A57O5G+KgBw0Hpx1BZQaluKFW1phTx2feZ
lbaXY2TzWtCtdUciMiFbaeTvBLzKpThdOXwrzmw06Y4ZfR2Lp8JIlb6NO6mQzooV
liiufiQGSjvl+y+jPe6ml/f6uFYVBenP1MhLneCZQC+xvReXpG1L0MCMwqz4Ixhe
y2LnYw==
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHpzCCBY+gAwIBAgIINsj7HlzAfYswDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNV
BAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEM
MAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJ
ARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZ
TmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTAeFw0xNTEwMjcwMDAwMDBaFw0yMDEw
MjYyMzU5NTlaMIGjMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcT
Ak5BMQwwCgYDVQQKEwNOV1cxEDAOBgNVBAsTB1BlZ2FzdXMxFzAVBgNVBAMMDlBl
Z2FzdXNfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3
ZWIuY29tMRcwFQYDVQQNDA5QZWdhc3VzX1ZQTl9DQTCCAiIwDQYJKoZIhvcNAQEB
BQADggIPADCCAgoCggIBAMjkj6nShoH9YfKCa8MbQFV0dqkoHuuv11W7IcvL4isR
NrLshe8zlB3v9cGsaWot9zu+tbcX71SW+2vdlCTuNerdlOQIiMntjkbHPG8iwjZu
WHpu/DqZv9BJjfIuCWWb3eTw6DuvQTo3Lwauh7z/Vp8IKPmoloAVnj8rZizVqWxV
cJwPD3vKJAKtbtZkfC7dgWFPRWTtX26DVV/EmhICinE/KmkfckLxKdkpuyejiHz8
uduweS9Wfj21mgsWKeSYkzONGr04YmYxCLWGqyqwQ+ZsNRJWdRFBHKwKwH3k01I8
Ce6/tpNZYQLYykUHTCpjHW4UuvkXFo2SK9ilJ5bUze5qedYrFMXsGJoWgw+xCYtZ
QkFQmFNXFk1oplVwK/8Jnn3mfEpsbtQBW4RAyOTETRlWpe+n+/BgZNPdncODXWN0
Gvtg4guxftdNesXd+6e4R7tC2GX8sqxOzNji64KxAoiMPK0qwhyFKegD7iuMC/LC
D2KhFNxjRHkJIe1MfvPAZPygiQYPbNatVLzRSaS8Uj132IUfqqCPyrKNg/rJb6Yh
Ovlf/jEMUaEzH9xUmlOEiKf2yyXrw6vTWhtkYCNCyronLblFc+NiwSzCxcINMlX+
hj8zg49wQC/80QjwdHbz2KP9sLzFtuURFjRdpfYFaiI7iWapo+eHYq6OKq4nH1Z1
AgMBAAGjggHOMIIByjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRBbMbXhzlI
dbRsB2xNIPbP2kCbETCB4gYDVR0jBIHaMIHXgBRI6WaWbdVLxOTffYdPlqd7zAw+
7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlggYgFRAn
FiYwDgYDVR0PAQH/BAQDAgEGMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9ub2Z1
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9QZWdhc3VzX1ZQTl9DQS5jcmwwSQYIKwYB
BQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNv
bS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3
DQEBCwUAA4ICAQCGuevjkXLiEC03sX0Iu1oV8IgrRv76agQseJs/s+xBJ2NznjT8
xsZX7QmpAJ1tdOtiwQwggF04KHj6rlt0PbA2MHjz1uB148pep8DpF/z+iCW8exA8
iIBjRK9A339Q8gM8jJRBoz6I3Ipwkx+06+DWs73fwW2Y1PgHg445GB1ToN3cKS54
YomZUA1yagdBiDXriPReFQPBTk18dyA8ZIoVse1J4HgGr5i+5for6IK1C7w2UoTh
55sEP44VskYpAZCaCd531OVgruw+SixhOJbHS/j/smN1WinLEptBKi7LY+nLJtiE
BEDiexeXwlfZWBTSs34yDIn8JBtOLYd1Ur/kB/j4Wbs7xT9RJ1VhTDFZcOB3rREj
comhcuWsbQegdt9M0DWZdriZzgzGQBm5dqFnp6FAG4tOjAGr24TP6tsq9sbS1Eyk
5snwE70mTQ9bCDFU4Re+bVfAIFDfY9HF822ZgMdy1BQw/S5a2YoRMZtYaZFGYidp
VNk/ICnl6ELlg6ZlPAiAn2PaBICTtzlt/TpznAFEvxlvc7tsc0HsDKVT0n+T8wv3
yp0rbgrQrJlI+Z9nl+g3ZHDc9mQXbcIWBkUFUoIsTUwdGExXypWDIlQ86pqyLFnl
42BzmL9mpf862aHybxCBOEre2uBUhFGWTTjNm7kjItM5SGQGUq7EAd1p6w==
-----END CERTIFICATE-----

View File

@ -1,44 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrzCCBZegAwIBAgIGIBUQJxYmMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYDVQQG
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
BgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEW
ImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5l
dHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjUxMDI2
MjM1OTU5WjCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA02H9hDzxurJHbnr0DAyep771WN5S
gVBwaCsmNxLvqVloARGduXj08kzpf3FwUFCgIPdLVac1cvbpm0D48p1+9k4vwYiT
BlCtc0FOzZ/hU/V1qG7G4diWaXCWl1PzgkpmUOWhSsM6DHQPvTtn7JtStMWOppCO
n9l/JtBAuJh8r/q/srus6HxbJ5Za6cOjy5iVlaa2bMBBT0hCKZhZ6lnj877J9adR
VEa9gwN1oAus1qPkw7jUnXdjmxcN2X77JMJu6Mn7FMMcp+Ogn4qkS4trxXNaMlgC
Ob5NJcqBY5s7GmetvixbZsHak+3BCg4p3e1dhbZtEokca3alXODIZSNnXIYoVLTj
5yD06k948W1LhpMpVMwh7sEfA8DV+G7Z5+qZ8/S9JjQSZEe6T0YiqjWvkSIL3jE5
wC4uQ8ZGq4xCv6agPbsmuGGUX2/D9n2mvqBn6FQNgZsTT3XcXWaN21inWUGZovKw
vCkjSUc9Rl0V16MJue898f0RXE1GBszkn/LN9EH/9BGe5+mMLY6AHrNOeJ+xgg45
JgdiAIrgMuuKfviPhiJQabj3C5PB2qTnYHxuQPPHhxbAiklZgh5ALbEytH9G92sM
zG3UWuCTl6zQ0cxYDN3YLY9FLZ+a+5R2rb5BlF7vbVO+h4UswjTk+dSvE6TP92Kf
wE1a2w0CgEKLcV0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
BBYEFEjpZpZt1UvE5N99h0+Wp3vMDD7tMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE
5N99h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkEx
CzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UE
AwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29k
QG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlm
aWNhdGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQYwQgYDVR0fBDswOTA3oDWgM4Yx
aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05XV19Sb290X0NBLmNy
bDBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21w
dXRpbmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCAAcw
DQYJKoZIhvcNAQELBQADggIBAEp6g8NTXc89vngaI6Hu3FcLcsYwfcC3UvqUPCXS
W7qqc8GqR0p+n6FZWrMyAGVSjT/CXPZH6GZoTgkJK9g46YcWc1LhUIwnzj7dl3Gb
FAU1VRnc2PNYI2VxUbDLjAzxDPO5q93L1F/N4JYgamCCRDYqcUcg9uUrDxS9fz0G
JZaKDtmxelAb/TOo9jfRYzXmdCdzaZUi838UwfLYDoovBn+CTpWeKg+qs36ViK4H
qMRaHbPBAappJoxzWOQq9CBv9HGZ7GYpMrtE9Cwg0RyJyH6CHDTum6A3O9oa7Buu
zh36WAl1tXbJ/waW5RkS7/SIosWzi+SbASEeOY3X5jnvjFkSVZlQbNDfOzQkDAMW
3JXfBBWG0fCXFSBJxPpVUV4dSkhZFyFZUDmKTnbqyM10DFEh+MFpEIOShXDoqbdx
1hvaBlBzgbi46xQPRptdsw+Eo6LiYSBUJIuSB7WBzNxpcIqZDiNZgXC4useuBdOm
QEGT3KPPpRfhneEz5f7v4e8YGHbbkvv/F7OcHXNX3tQ8T7u7d8cCsiGDoFtpEISQ
qs68fxeGNUdnA13INl5G5iGkXlVLh+hiTdlObFO2lqHXzv8RL3+ZtSkzbsVEC1CK
p4AlmeUn6vRoUvLtrm5REF7GVKB1NjyKJV8JP+DGyoiR9JUVmsqvFj5eCejANGEs
Nwdl
-----END CERTIFICATE-----

View File

@ -1,29 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIE3TCCA8WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCB2DELMAkGA1UEBhMCQVUx
FjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAcTDU5vdCBTcGVjaWZpZWQx
FjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNVBAsTC05XVyBSb290IENBMRQw
EgYDVQQDEwtOV1cgUm9vdCBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9j
a3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBD
ZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwNTA1MDBaFw0yMzEyMjMwNTA1MDBaMIHYMQsw
CQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90
IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldX
IFJvb3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJq
b25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3
b3JrZWQgV2ViIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE6IZ8ylVsQ45HEI8svadYbKay
Vj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Emt0yMbMbxCj7NW7jM3UeTNP4+
0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6TzbtxLKfvyOIPczDbDBBtfAicw70
71ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpucQy4D+iGMDDfNfltcjd+NA5Y7
YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0A736zo+kiP/SbryqYVUgJZoC
aJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4GvMIGsMA8GA1UdEwEB/wQFMAMB
Af8wDgYDVR0PAQH/BAQDAgEGMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9ub2Z1
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9OV1dSb290Q0EuY3JsMEcGCCsGAQUFBwEB
BDswOTA3BggrBgEFBQcwAoYraHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0Ev
TldXUm9vdENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAL1+9V99RaFuqyzb20E9/
DKoByMK2Q+1Mepw7CdbEQbnOtj4CiWnNA4Nw2rMOcV1dsd0WoExlW/bBHXWqS33x
x/XCODiJtmVMDqPU01DSQy74y7cQxOh2qetvsDfbdVHQryeMSZbEvvlranXkmZOB
/VgrXbrFBC8rJ5LxY+GdC93qUpyhZ/ON9iWMzq5b1nkqLSy4b8OR+gHINBWAu4Rj
fByKj3QerFf+272ADRndJXZRf376TY5DSFdolyvPVO9/S+ussnlpZP10dtlLsJ5H
rEfq+VCmSwC2YTkJNUTQvq2iOlgAQUl5UDkd2LvthO3NsZaRgVObLudfRQzV5UHO
Pg==
-----END CERTIFICATE-----

View File

@ -1,127 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHDTCCBPWgAwIBAgIJAMTrJAQHdlFyMA0GCSqGSIb3DQEBCwUAMIGqMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05GQzEUMBIGA1UEAwwLTkZDX1Jvb3RfQ0ExKzApBgkqhkiG9w0B
CQEWHGhlbHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xIjAgBgNVBA0TGU5ldHdv
cmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTYwMTA5MDAzNjAwWhcNMTgwMTA5MDAz
NjAwWjCBxjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEM
MAoGA1UEChMDTkZDMRAwDgYDVQQLEwdXZWJzaXRlMRwwGgYDVQQDExNub2Z1c3Nj
b21wdXRpbmcuY29tMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21w
dXRpbmcuY29tMTIwMAYDVQQNEylObyBGdXNzIENvbXB1dGluZyBXZWJzaXRlIFNT
TCBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAw
LqkN8ck9UoYApC1yNYXmq3kydkb8JwmbzbEZ7H6ZBffVzx6D7lBiyLwzS5nClYpM
F89q/D9q0x2k0oVckpNA8CqDjH69CojBtCAbTDM/tHBjrKir3pyg66rgCn5PIAJF
TEWTilLyDxXewiD6rNoxYChVvQYWjV3eV2IcnmwU6Yv9s5HvNzu2iMbJTxfFyeE0
vgkRLBkqTBpYiTnc4m9OgPYJB7f4drQ0cibZ7ySDBlDvQM792PLtBokTAikQ+Uu6
UkOpBVaeP/mnbF3WogL3ntjcXpX4JieMG2YAaKb3RynqZeX+oUvgz9K5hOjDgpGp
hswm8w677iAah1kaSYkCAwEAAaOCAhYwggISMAkGA1UdEwQCMAAwHQYDVR0OBBYE
FPOkMiFouKGtFmcsI4HvmWydR/hEMIHlBgNVHSMEgd0wgdqAFMcOta68Bn/QtEwc
LCCyoJvOSmSNoYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCCQDF7SYBL2xH+zALBgNVHQ8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
OgYDVR0RBDMwMYIaZGVwbG95Lm5vZnVzc2NvbXB1dGluZy5jb22CE25vZnVzc2Nv
bXB1dGluZy5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL25vZnVzc2NvbXB1
dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJBggrBgEFBQcBAQQ9MDsw
OQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL05GQ19S
b290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcNAQELBQADggIB
AEC5mlLoGmAvFEf6dQ0yR+W/YPrW2qmZfIEtcfGq0u4Ik0W2pgBbHiXI4hhXLx3F
fMxwzFI69ab2qWhl37VrwViLtPDLp7f3nJbN+cURJfbYTXbt5ktqxAq5JpUO8caL
hJpJLuslcKCzb9Vpw6FbojLhWu44v0gcYiPemROrwbcTtaDo1qRHpxHN6am/GnY6
+hZBtQV0STRHw+BESVAyjmuurMBGCTKIZ5SZ2oGkqWrGoNgRsIN1e1nE5rsJDHG0
7mPMRfSa7Ll3B5tYXZ7M3H2MWDWtOg2AKrB6U1WoA7cEuHg8lV8PFpIvfjkqu6DJ
wx4X1NUBi8D5x/VCGpopvyZBSFkqeQTEZ+vQ3NfC1pOw6f8iwhdJGBqQeCY8AWFU
XKljEjSm8zleCsSLa24tOL+1WvcAZqjtoeN/E2VYMmHi2UdyIFFiZz3P2M5hL/dp
PgokHF0d/LuoEmdFv9ki5fj61VrldUsX8eg0CKgd+BiwobjlJFmPRKJX2d9ZE+rU
rJT8uHehioXmW1NK43QiBCgd3H54IpDl9HByNpF343sjvGX0Y0a+6D6pa1BJhVPw
9vLCeSKSUuI6XDtLGhGpkc5c4m6pChITzjCPQld/LvbxnQ6mhTtylBy8edixDRld
0bPU2pK43UcWEWQwOQG53Te5XVBmQ312WRuwp7U8Sfi0
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIHrzCCBZegAwIBAgIGIBUQJxYmMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYDVQQG
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
BgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEW
ImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5l
dHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjUxMDI2
MjM1OTU5WjCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA02H9hDzxurJHbnr0DAyep771WN5S
gVBwaCsmNxLvqVloARGduXj08kzpf3FwUFCgIPdLVac1cvbpm0D48p1+9k4vwYiT
BlCtc0FOzZ/hU/V1qG7G4diWaXCWl1PzgkpmUOWhSsM6DHQPvTtn7JtStMWOppCO
n9l/JtBAuJh8r/q/srus6HxbJ5Za6cOjy5iVlaa2bMBBT0hCKZhZ6lnj877J9adR
VEa9gwN1oAus1qPkw7jUnXdjmxcN2X77JMJu6Mn7FMMcp+Ogn4qkS4trxXNaMlgC
Ob5NJcqBY5s7GmetvixbZsHak+3BCg4p3e1dhbZtEokca3alXODIZSNnXIYoVLTj
5yD06k948W1LhpMpVMwh7sEfA8DV+G7Z5+qZ8/S9JjQSZEe6T0YiqjWvkSIL3jE5
wC4uQ8ZGq4xCv6agPbsmuGGUX2/D9n2mvqBn6FQNgZsTT3XcXWaN21inWUGZovKw
vCkjSUc9Rl0V16MJue898f0RXE1GBszkn/LN9EH/9BGe5+mMLY6AHrNOeJ+xgg45
JgdiAIrgMuuKfviPhiJQabj3C5PB2qTnYHxuQPPHhxbAiklZgh5ALbEytH9G92sM
zG3UWuCTl6zQ0cxYDN3YLY9FLZ+a+5R2rb5BlF7vbVO+h4UswjTk+dSvE6TP92Kf
wE1a2w0CgEKLcV0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
BBYEFEjpZpZt1UvE5N99h0+Wp3vMDD7tMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE
5N99h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkEx
CzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UE
AwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29k
QG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlm
aWNhdGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQYwQgYDVR0fBDswOTA3oDWgM4Yx
aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05XV19Sb290X0NBLmNy
bDBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21w
dXRpbmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCAAcw
DQYJKoZIhvcNAQELBQADggIBAEp6g8NTXc89vngaI6Hu3FcLcsYwfcC3UvqUPCXS
W7qqc8GqR0p+n6FZWrMyAGVSjT/CXPZH6GZoTgkJK9g46YcWc1LhUIwnzj7dl3Gb
FAU1VRnc2PNYI2VxUbDLjAzxDPO5q93L1F/N4JYgamCCRDYqcUcg9uUrDxS9fz0G
JZaKDtmxelAb/TOo9jfRYzXmdCdzaZUi838UwfLYDoovBn+CTpWeKg+qs36ViK4H
qMRaHbPBAappJoxzWOQq9CBv9HGZ7GYpMrtE9Cwg0RyJyH6CHDTum6A3O9oa7Buu
zh36WAl1tXbJ/waW5RkS7/SIosWzi+SbASEeOY3X5jnvjFkSVZlQbNDfOzQkDAMW
3JXfBBWG0fCXFSBJxPpVUV4dSkhZFyFZUDmKTnbqyM10DFEh+MFpEIOShXDoqbdx
1hvaBlBzgbi46xQPRptdsw+Eo6LiYSBUJIuSB7WBzNxpcIqZDiNZgXC4useuBdOm
QEGT3KPPpRfhneEz5f7v4e8YGHbbkvv/F7OcHXNX3tQ8T7u7d8cCsiGDoFtpEISQ
qs68fxeGNUdnA13INl5G5iGkXlVLh+hiTdlObFO2lqHXzv8RL3+ZtSkzbsVEC1CK
p4AlmeUn6vRoUvLtrm5REF7GVKB1NjyKJV8JP+DGyoiR9JUVmsqvFj5eCejANGEs
Nwdl
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
-----END CERTIFICATE-----

View File

@ -1,35 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIGFjCCBP6gAwIBAgIIB+I42RMLhBgwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
dCBDQTEUMBIGA1UEAxMLTldXIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDAwMDAwWhcNMTgxMjIyMjM1OTU5
WjCB2DELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
BAcTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNV
BAsTC05XVyBSb290IENBMRQwEgYDVQQDEwtORkMgUm9vdCBDQTExMC8GCSqGSIb3
DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UE
DRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBALrz75sW0VR2qqi6UAtk2z/0GpLxlPsgGawLePfNZXvdYHcB
1JzPpAyCZ+PF4VIHz17tmdQFyN+msd2W6Op8SI5CW3MDHwA5HoAGcm6vx+xp95UX
96+fbqthL3UPNuOOW3EWXEb3DsF2wtrNXdhq4nyOMGrioe0fQvo8ij7Qg/eiFJSu
Sg3zPssa5AjsJ3P4px9kQusm2tkN9oH/1AZmE3CJXkVzqzEPbmnUzt/LD2I4Hd86
KweNsSiBeZwrxWN7nQUla+rWE7Al+orLLnQbj14uz5Oeh+y2VnVmXxec23mebUcl
Pxy9GhxnKMF2wp6//nJs/soJKt/KEdWaMU4oW1m/rkJejjVQSvBvO89hL+4hi1iK
aoxXRnNnX6V5naXPAjlOXzDqZSnmDPk31gWL7uy7eeNY/+dCYKNk/ikstGAhfn0y
k70tUAguBf3zAewRL8JM05+HrYGdhCv/qFb+VrZEf0BgnSvq4XpVszNYJY+JePbW
smOw0/569aptCHaGtpuuvDO5F5GmtvN10NWYXRJx98txAT4SnfDHuxp/kbqlgXQF
Q+I38vVYRWfDOoakxZYESvGNlXZ12aY9RiMKp4191Los9yH16TXoERvg8Q1a1QEQ
l+fwM1iTg3RJ1WowCm6QvsU5NqVjrx0GzXCTxkd9OCjyiVwl64X9sDjYZhe3AgMB
AAGjgeEwgd4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwQAYDVR0f
BDkwNzA1oDOgMYYvaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05X
V1Jvb3RDQS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzAChitodHRwOi8v
bm9mdXNzY29tcHV0aW5nLmNvbS9DQS9OV1dSb290Q0EuY3J0MB0GA1UdDgQWBBR6
prE+wkxZU+lAqwU04QYbfTVQxjARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcN
AQEFBQADggEBABV0Uw7kioLo/bUf9Bkcjq08v6zAvnjfp22u+P3USDWvjdlyBM1F
J39TOf2tAvZJ+33HzDanNL1oDw57IVw7QqIasLJRINa3gojUml6SaOT/DF0HpcJO
LN1e1x3oaQHHw5cljCFue4PRdja2z7EgsPY2qZdIdnN5CuaUI29qke8MD4cX0Ezu
KtCzkL8TWsc+QKZYodNjSwviOBIEOar1ayGAGfarqszDKHk3jG8W390BJBVtpUgL
zOyyv4SmKu+Zu090nAB91ThYYA3vnPV3Ar+tAKl0taSWNQh55jrwSA9BhrFGaRxb
huJWadC1O7ILrs72kIExzELUSDcqOhc1Nuk=
-----END CERTIFICATE-----

View File

@ -1,47 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIIWjCCBkKgAwIBAgIGIBUQJxYoMA0GCSqGSIb3DQEBCwUAMIGqMQswCQYDVQQG
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
BgNVBAsTA05GQzEUMBIGA1UEAwwLTkZDX1Jvb3RfQ0ExKzApBgkqhkiG9w0BCQEW
HGhlbHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDU0NjAwWhcNMTYxMDI2MDU0NjAw
WjCB3zELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoG
A1UEChMDTkZDMRwwGgYDVQQLExNTb2Z0d2FyZS1EZXBhcnRtZW50MSQwIgYDVQQD
ExtEZXZlbG9wZXItam9uYXRob24ubG9ja3dvb2QxKzApBgkqhkiG9w0BCQEWHGhl
bHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xNzA1BgNVBA0TLkNlcnRpZmljYXRl
IHVzZWQgYnkgZGV2ZWxvcGVyIGZvciBORkMgU29mdHdhcmUwggIiMA0GCSqGSIb3
DQEBAQUAA4ICDwAwggIKAoICAQCwEhy6BgG/XCGu1REUIhSHh95flBwiyBxf9yaF
KTkkGSY70AfMOvPtzfrf6qdHRySJWhMToVWh/X2gbjuPZUbPQJHEhpk1C154yDVD
g6t4Q0pyULBSHxdKxanNm0O6CfrXoDR9EmR6c+Ymy6+aD/KYQork/UKfZRzHPBwV
klNiEHE2C7lGScjlW0k9DNChdeO2O7Y5XYMY47NFKDsdMxIankmpiTzGiBGrulQq
RwuhJy8r5u26UzBJRQBxfm4Q9jT273ZVKK9cu3+zbb3s0ye4XvOM8zkgz24kXbiF
r7RvC4B5GxHoaBDXDUigKqv8g8XkLS+Rs2Ja+6KDZh6XPtvEZYQ48TsTqKmUH1++
Tmyri3yg2WLYxOpzs8Qllp/O/1nH47U+2JkOxAI4HwleIg71mb+uF/jVBz/CweQF
LPPDo0k5NfYtMvWR+Veq+P9q2UGs6jgGmAghndQZfe01VxHkiaqwOraeTHn/JfXh
FlZIfalTap/lDK7aCJA0U0mJP554Vms2KgQK1YksojCxuXShR5A6VLK8CtSWXOh0
Iwje5oPPNm2DYgRjbSPl4Q509EOCOMlC6ykUt04cuB1pgYrlXNnv3+oNzcpfOhhT
JOsX1rTxYYhZ+EmmQvOUEPWHPPClRqHOPN7PsaxI4EEFCIKfdEVWOEE1KJ8RmBmk
6VAoHwIDAQABo4ICTTCCAkkwCQYDVR0TBAIwADAdBgNVHQ4EFgQU9ihwzGTLPCqA
4CbMavWmtVLwHlowgeIGA1UdIwSB2jCB14AUxw61rrwGf9C0TBwsILKgm85KZI2h
gbakgbMwgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkEx
DDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9D
QTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2Vi
LmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZYIGIBUQJxYn
MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6
Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL0NSTC9ORkNfUm9vdF9DQS5jcmwwSQYI
KwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5n
LmNvbS9DQS9ORkNfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgQQMD4GCWCG
SAGG+EIBAwQxFi9VUkk6aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JM
L05GQ0NBLmNybDA+BglghkgBhvhCAQQEMRYvVVJJOmh0dHA6Ly9ub2Z1c3Njb21w
dXRpbmcuY29tL0NBL0NSTC9ORkNDQS5jcmwwDQYJKoZIhvcNAQELBQADggIBAETg
cMO9sC4hm6RIAdcKWlSAPD7+u5I+cxY0k7TRljSxGMu8WbzQU39wkEqK5PCgT0qm
Up0qFdc3osO19UfXJj67jI6450dB1LDHGa9ymuaXkTVEOUGeYPJ/a5UpJKN+PJPy
liPG3BP+6EvILMm0qd5EIvrmeAJtNtWEi6Y2Kkb8QAliSlovtsjHmbW0Mz1AzeQm
l9V/xOXbdQnp7A15T41XUoR5V6AJ9yraCMafFL/GaE2IXkIoUEpVb55hobsdAkwt
yjEZBxyv6A81t3v0HEpkEmyn6anmjCi3sLCKWzK0dTLL+8OyxUYXgmFxRHMyXu90
ZrtGDInxl/MlSE3/3T8xINiaxhiZSrf5XZqPteRUCKCDPiEdYv19SbsypReguuLA
w5B2l0I/2KH2BMYOMy6170MPDiEbbFugDifwokmuGLHQqiz99AVFVwCMu/ThO1Hj
rm27HS8bYOMzyTiil+pEyhPpoP23P0aHCyESTsXcgfMBZkeTyWxvdj8dCCaJTGiF
GJ6mELEoOnNhLqVhouGzMOZMS0w5vBG/gSQGb76inVqxMFByWKvVzyBm62JJ9P7D
AI8aN2WjZ9c0Z0czEz/SKPISxQjGrdoeQvvmn3Qyg4TS7aWt4RVJh67m042pWPdO
0+2unR8IoW1J6AeQn7Nuz0PyEx+eCZqBp3tsH8zX
-----END CERTIFICATE-----

View File

@ -1,44 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrTCCBZWgAwIBAgIJAIF057Inea3QMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQ4wDAYDVQQLEwVFYXJ0aDEVMBMGA1UEAwwMRWFy
dGhfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3ZWIu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3H82oeWzt5ZBoyelJhBjp8WrjE5yrR9+
/xn118D/WXGeLMPixXmjNe9Ik0tg824DBoc3/ZHOtt8Knk32LZZhF5BF1B5H8Xgg
zx46e23tufVzUWPt+tZjV35//T/PikYUZUdCTYbYZFOuR0VwOiJBtCu0TEwQDaLe
bT9YJmAiSACKRUAT5WJwmP8mxuwW0qL5gns3Sfldq1Fvqjwa/WZQfI1uvV0GeHdd
EWiH5sTe6wtIHjXUwV/YvCsDcqk3e/Jl77QgiYwduovx/jKRCNtpBVH9yA5wsdRk
cPhAEdF8SK/8Ti/8SOChYePmIlIpbqZSO5lxyGJB+JP6Lq5gFSLX2xkTx7Z+GrlG
hiq7++PyI5S9wOsxzb+yggiX9O09n8L39cQ8t6F48AXEZpdE8jdp+jbrLUhFJ33N
HFShms92VGmEL/Hp+o4jzLkKjj8JiZtQVEfTQWiCpU2Iy8SE2soFzx2XrGS4QNkG
5Qes39dfJtPzzugXgO9LjeRECfH1o5j5gr8MfV7S0Pa9KiamTRM+qCjyLM6FgboY
XtqvGNhjZPspZCL2BePNvXMOuWQY80W2NYwpcmtQWd9NXRTOMCkBSYbaTX2gny0j
sAG8OlKz/oNjEFhuS9DYhaB2d9i/7Ye8zFGNxhX/zSXrwSFYB7ew9unACk+UMW4m
7oX3ZkaBx50CAwEAAaOCAcwwggHIMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FHofT+JsVUY8oAVJR3ijj0MxpFq8MIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQwYDVR0fBDwwOjA4oDagNIYyaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML0VhcnRoX1ZQTl9DQS5jcmww
SQYIKwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0
aW5nLmNvbS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
CSqGSIb3DQEBCwUAA4ICAQA/Esj2AP0oM51YYuPhE1Mmknkx6Xxnn49lZim9BJEr
PMe5+M1wxlXnMklHl0AEyf59W1V6PCvlONonsOOZg/Dncm5w4AYdjeUSUxGMr6lw
kVViKkPApv1NBzw3kmJDL0CazTR3K+nl4mB9BTbOSnvGX7QUcZZ92mDxqBAiTaRb
rk8OzDW4+Lla51hSsBYuQrmRtx1jT/OZxLL6HDfM53HTLMvbFMndC2pnZL78owtp
q/V9zyyWC2fjDFGeMAv/7/0BuwfP3Ovir5OIv7C8YMrfcshgZhdt5E4mKX02TENT
x0tfNV/T/TeQGjdX85L4uYnViAA+rAlVRjE8Y0rZInnhDahI5ptpUUjSUvF0D3k1
ZTXvCqvev4As7k0ci4mCO15LQLcQWOrirzARSR4l1OFWmlxd3zy8CBgjN8RgV0r+
qPp1DWO/5hqKgVoBUKKAWX7cVu1FZYlxjiKqYsZHkwq5vy7ibHCSipufCWCVdU1X
dkhXhbEaS4FIA1epQNhH+GPyMxVU5uTTieSx0uvEbKvJ9UmLIGQLxBsWSgfmUKjc
xST6RlvTmKywV3ansfmYw84IxSZylpm8gT8+r5iod7lHXre1f+hESmE4lQvQ51eM
f3RjNf5W+uGtaPTGzZRN+b//kGs1pmn6Mtyr94DQCHp3LJCAVoHpFqy8PqjdlLNo
Yg==
-----END CERTIFICATE-----

View File

@ -1,34 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIF5DCCA8ygAwIBAgIIB+I42RMLhBkwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
dCBDQTEUMBIGA1UEAxMLTkZDIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDUyNzAwWhcNMTQxMjIzMDUyNzAw
WjCB4zELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
BAcTDU5vdCBTcGVjaWZpZWQxGjAYBgNVBAoTEU5vIEZ1c3MgQ29tcHV0aW5nMQ8w
DQYDVQQLEwZORkMgQ0ExHDAaBgNVBAMTE25vZnVzc2NvbXB1dGluZy5jb20xMTAv
BgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20x
JjAkBgNVBA0THU5vIEZ1c3MgQ29tcHV0aW5nIENlcnRpZmljYXRlMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE
6IZ8ylVsQ45HEI8svadYbKayVj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Em
t0yMbMbxCj7NW7jM3UeTNP4+0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6Tzbt
xLKfvyOIPczDbDBBtfAicw7071ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpuc
Qy4D+iGMDDfNfltcjd+NA5Y7YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0
A736zo+kiP/SbryqYVUgJZoCaJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4Gk
MIGhMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMDwGA1UdHwQ1MDMwMaAv
oC2GK2h0dHA6Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL0NSTC9ORkNDQS5jcmww
QwYIKwYBBQUHAQEENzA1MDMGCCsGAQUFBzAChidodHRwOi8vbm9mdXNzY29tcHV0
aW5nLmNvbS9DQS9ORkNDQS5jcnQwDQYJKoZIhvcNAQEFBQADggIBAF4LBlQsLtH5
uLoe2L5Kbs7QFkBa6Wc6i654yVSVty/pUMp8RDOrrortBruSEQ+bZhX8AfPoMtKD
ZKIut9RojJTBuHpDzDZNgNcQdaw/Fx9FAe692OI6maX3bB3On4O5FMiCLegE3i85
8sIVF86MicQlyKHDajIpUedBHVuWhIpNDhmBMS6JMIaYP7ix6L/fLPBsum6QkJCX
C8QKE0msm9ki3vF/LrM3PwaUvNJ4tQgjBBWsbmLPf8vcLLHaarjksB7ZQdIgXiHj
oD41uc28ORi1/xL+AyTYU1q1qVGyfodwttWZ2bFKqdSRf+5YkFfqOjrby67CvCOo
YJRjJIIT+1Hug3af7gRNljuoATwPCbeb0uCMvUgR24b8k8UVC2cYXgdN4Qriiq9W
9c7gODRmPOt1MqJsR/tsawWpLC9BuIhp915LGc1tZ1fX+toBfyqfQKDKNjazDVPi
jFc6U2c/+FOQhyCqVrqATyLeR7RvJTmmNiHCCg5aJdzqo0SstWte3fJ7AWgY/OhO
TMZG689C6ZWEQjJBrfm3OfuJFYEePg+gJOnswIM/VSd4QVUBlWt8Q/VlnTkzOF38
LeISdO5yJeyXZft2/t4zTR+o6dETzvZYeCSiH74GEnusZ5KVZSe+0lBDIbStvu/A
wpcM0mL7IYln8Iyb1Una2R+xS/PIgJO9
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
-----END CERTIFICATE-----

View File

@ -1,40 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHBDCCBOygAwIBAgIJALVEKS03soafMA0GCSqGSIb3DQEBBQUAMIHWMQswCQYD
VQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90IFNw
ZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjETMBEGA1UECxMKTldXIFZQ
TiBDQTETMBEGA1UEAxMKTldXIFZQTiBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRo
b24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2Vk
IFdlYiBDZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwMDAwMDBaFw0xODEyMjIyMzU5NTla
MIHiMQswCQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UE
BxMNTm90IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjETMBEGA1UE
CxMKTldXIFZQTiBDQTEfMB0GA1UEAxMWdnBuLm5ldHdvcmtlZHdlYi5sb2NhbDEx
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBAKE3y+wq5woYZr0rDBXxzJz4dGFPAeQdC7Hg
PwUEIvTk6FooNLdnDyf52KQPCsa4HmuM3PbR3oz0Hwn0PL7bNaSzmccAcSQejuij
WQHSGvOiYDLKrjNmwGAyVflQDcN7q5hm27A4Ltio+DBqLZkE6MCg958ThysHaHiR
dIMiYDeDba9lUv5H4Zaud+8eEAwDa5VJUxr4D+Wbzikc4vsCZFBwdByInWdpGMMC
Hyz3dQJmlW988rq3inB7LkMBCn/TOlG/RZb9b2pyoow8A+YiL0tWSa57WqELgSlC
YPx66bjZa03Nm8VzDPePgh8zFPlKBp9iXHDYQ+NH4GgPror/Cx0ASMcDl+6Bu4Kg
F4pHvOopAplKPPNC8AFBxTjyBzPpK6x5hLRiPGOuu8259QmG7QTya9fBlzF3/uky
b+g7CjZ0tSycZdf2wA599p4/ossQab01cnLapqSyx7N2EZNAtWpsNdq0SGaiIvjh
xLMmSLlaht5GV7qSRQ2ho+/Rn6JWSnrmVbA39olIqhwwQM+TZVnekKXAQwARDWLF
XNBWwueJnU/OivVOkJbHtiCHtq2bJIcQd0ZOix9SWsiXvCNZBxzZS2t4R4m5re5W
FkwYxCz+C3NFdCzEF2inaXjRWckMq72HZYHuZUOE7tYRKYZ4pl0d7ejl0zgm2cee
Hb2RyuixAgMBAAGjgcYwgcMwDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBaAwPwYD
VR0fBDgwNjA0oDKgMIYuaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JM
L05XV1ZQTkNBLmNybDBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAKGKmh0dHA6
Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL05XV1ZQTkNBLmNydDAdBgNVHQ4EFgQU
lFo7HaYd3NgW2Z8m3bU2UE/ufk4wDQYJKoZIhvcNAQEFBQADggIBAIEWGvihO55D
qusXDmFPNPqd1HQ3pj+MSuxiuWG8DKW5f0Px6Wvhc1jKevPIu7ng1B2COfGcmjDD
Os1YKr+r/T7FS+gzT4yDe7kwsehAF/+TrtbIF9cBv3zKqhnlVLHTYgn0td1fZFxT
/Q+yfie+fSzOl9Xt149F7HWvikLlqaKDyjTpCnz0q5Mnr2MZvjxgSGEybxS/RvI5
j4NY8z1d/JSI5eMeegi4ZKkGTiO6BqLCRvtL4LAFq4WbmrgxMmteBshACtxAy4fq
Uofzjx6ZmHic2npRIaTCVHG+WP0bmoDHQEYiwuZLIqFLLMsJ5fa8ovWcyH7EWpfJ
8vX053lctyH8ui1ONL+vfjX6WPjBcAfZsuso8TurckzftPDJXPbz1ScpFaaIbfiA
F2c2DQwfhF8HU/bnaSKvsb5dqnQqiZxiaWmevs7ZPoj9TCKSIbgund7eLLwRlZno
ZY9/Bf292Bn/8vn+utZcx83S9h0VJHZnJgvYqpKdvo/7YEN2yd05SMeXtxHugUfh
kzNRXp5yTGfj8NNEJp0ksSPy+Z+5OPgzQzw+VSdXuFI8Tjrjjmbf3hAAi8cCI42O
MbsoDUZr9tauqg2jTjNnX728FrkIPWfOTp1yWRnSd2/PA+aPIJNSSd5Q3tzWZZ7r
B062YXDRqRM8GzHVoEmSwxQJWNZw9UTJ
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIHpzCCBY+gAwIBAgIINsj7HlzAfYswDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNV
BAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEM
MAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJ
ARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZ
TmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTAeFw0xNTEwMjcwMDAwMDBaFw0yMDEw
MjYyMzU5NTlaMIGjMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcT
Ak5BMQwwCgYDVQQKEwNOV1cxEDAOBgNVBAsTB1BlZ2FzdXMxFzAVBgNVBAMMDlBl
Z2FzdXNfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3
ZWIuY29tMRcwFQYDVQQNDA5QZWdhc3VzX1ZQTl9DQTCCAiIwDQYJKoZIhvcNAQEB
BQADggIPADCCAgoCggIBAMjkj6nShoH9YfKCa8MbQFV0dqkoHuuv11W7IcvL4isR
NrLshe8zlB3v9cGsaWot9zu+tbcX71SW+2vdlCTuNerdlOQIiMntjkbHPG8iwjZu
WHpu/DqZv9BJjfIuCWWb3eTw6DuvQTo3Lwauh7z/Vp8IKPmoloAVnj8rZizVqWxV
cJwPD3vKJAKtbtZkfC7dgWFPRWTtX26DVV/EmhICinE/KmkfckLxKdkpuyejiHz8
uduweS9Wfj21mgsWKeSYkzONGr04YmYxCLWGqyqwQ+ZsNRJWdRFBHKwKwH3k01I8
Ce6/tpNZYQLYykUHTCpjHW4UuvkXFo2SK9ilJ5bUze5qedYrFMXsGJoWgw+xCYtZ
QkFQmFNXFk1oplVwK/8Jnn3mfEpsbtQBW4RAyOTETRlWpe+n+/BgZNPdncODXWN0
Gvtg4guxftdNesXd+6e4R7tC2GX8sqxOzNji64KxAoiMPK0qwhyFKegD7iuMC/LC
D2KhFNxjRHkJIe1MfvPAZPygiQYPbNatVLzRSaS8Uj132IUfqqCPyrKNg/rJb6Yh
Ovlf/jEMUaEzH9xUmlOEiKf2yyXrw6vTWhtkYCNCyronLblFc+NiwSzCxcINMlX+
hj8zg49wQC/80QjwdHbz2KP9sLzFtuURFjRdpfYFaiI7iWapo+eHYq6OKq4nH1Z1
AgMBAAGjggHOMIIByjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRBbMbXhzlI
dbRsB2xNIPbP2kCbETCB4gYDVR0jBIHaMIHXgBRI6WaWbdVLxOTffYdPlqd7zAw+
7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlggYgFRAn
FiYwDgYDVR0PAQH/BAQDAgEGMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9ub2Z1
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9QZWdhc3VzX1ZQTl9DQS5jcmwwSQYIKwYB
BQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNv
bS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3
DQEBCwUAA4ICAQCGuevjkXLiEC03sX0Iu1oV8IgrRv76agQseJs/s+xBJ2NznjT8
xsZX7QmpAJ1tdOtiwQwggF04KHj6rlt0PbA2MHjz1uB148pep8DpF/z+iCW8exA8
iIBjRK9A339Q8gM8jJRBoz6I3Ipwkx+06+DWs73fwW2Y1PgHg445GB1ToN3cKS54
YomZUA1yagdBiDXriPReFQPBTk18dyA8ZIoVse1J4HgGr5i+5for6IK1C7w2UoTh
55sEP44VskYpAZCaCd531OVgruw+SixhOJbHS/j/smN1WinLEptBKi7LY+nLJtiE
BEDiexeXwlfZWBTSs34yDIn8JBtOLYd1Ur/kB/j4Wbs7xT9RJ1VhTDFZcOB3rREj
comhcuWsbQegdt9M0DWZdriZzgzGQBm5dqFnp6FAG4tOjAGr24TP6tsq9sbS1Eyk
5snwE70mTQ9bCDFU4Re+bVfAIFDfY9HF822ZgMdy1BQw/S5a2YoRMZtYaZFGYidp
VNk/ICnl6ELlg6ZlPAiAn2PaBICTtzlt/TpznAFEvxlvc7tsc0HsDKVT0n+T8wv3
yp0rbgrQrJlI+Z9nl+g3ZHDc9mQXbcIWBkUFUoIsTUwdGExXypWDIlQ86pqyLFnl
42BzmL9mpf862aHybxCBOEre2uBUhFGWTTjNm7kjItM5SGQGUq7EAd1p6w==
-----END CERTIFICATE-----

View File

@ -1,52 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home [No Fuss Computing]</title>
<meta name="robots" content="index,follow"/>
<meta name="description" content="Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on."/>
<meta property="og:locale" content="en_US"/>
<meta property="og:type" content="website"/>
<meta property="og:title" content="Home [No Fuss Computing]"/>
<meta property="og:description" content="Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on."/>
<meta property="og:url" content="http://nofusscomputing.com/"/>
<meta property="og:site_name" content="No Fuss Computing"/>
<meta property="og:image" content="images/nfc_header.png"/>
<link rel="canonical" href="http://nofusscomputing.com/"/>
<style type="text/css">
.StatusMessage {
font-size: 36px;
color: #FF0000;
}
</style>
</head>
<body>
<div align="center">
<p><img src="images/nfc_header.png" width="300" height="100"></p>
<br>
<p>View us at other locations</p>
<p>
<a href="https://hub.docker.com/u/nofusscomputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/docker.svg" width="40" height="40" style="background: #2496ED;"> - Docker Hub</a><br>
<a href="https://github.com/NoFussComputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/github.svg" width="40" height="40" style="background: #FFFFFF;"> - GitHub</a><br>
<a href="https://gitlab.com/nofusscomputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/gitlab.svg" width="40" height="40" style="background: #FCA121;"> - Gitlab</a><br>
<a href="https://www.facebook.com/NoFussComputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/facebook.svg" width="40" height="40" style="background: #1877F2;"> - FaceBook</a><br>
<a href="https://readthedocs.org/profiles/nofusscomputing/" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/readthedocs.svg" width="40" height="40" style="background: #8CA1AF;"> - Read the Docs</a><br>
</p>
<br>
<br>
<p>&copy; 2007-2021</p>
</div>
</body>
</html>

View File

@ -1,7 +0,0 @@
mkdocs-minify-plugin==0.5.0
mkdocs-material-extensions==1.0.3
wheel
mkdocs-material==8.1.7
./custom-plugins/mkdocs-plugin-tags
mkdocs-git-revision-date-localized-plugin==0.11.1
pymdown-extensions==9.1

View File

@ -89,18 +89,22 @@ class Data:
url = link.get_attribute('href')
link = self.parse_url(url)
if 'gitlab.com/-/ide/project' not in url: # ignore gitlab ide links
hyperlink_source_file = {'name': source_file, 'location': link_location}
if 'nofusscomputing.com' not in url: # ignore gitlab ide links
if link['url_id'] in data['hyperlinks']:
link = self.parse_url(url)
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
hyperlink_source_file = {'name': source_file, 'location': link_location}
else:
if link['url_id'] in data['hyperlinks']:
link['source_files'] = [ hyperlink_source_file ]
data['hyperlinks'][link['url_id']] = link
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
else:
link['source_files'] = [ hyperlink_source_file ]
data['hyperlinks'][link['url_id']] = link
events = [self.process_browser_log_entry(entry) for entry in self.driver.get_log('performance')]

View File

@ -13,7 +13,11 @@ class Test:
def setup_method(self):
pass
self.ignore_url_alive_check = {
'gitlab.com': [
'nofusscomputing/infrastructure/website/-/new/development'
]
}
@pytest.mark.parametrize(
@ -36,12 +40,29 @@ class Test:
packages.urllib3.disable_warnings(category=InsecureRequestWarning)
request = get(data['url'], verify=False)
skip_test = False
print(str(data) + str(request.status_code))
assert request.status_code == 200, (
f"Hyperlink [{data['url_id']}] to location [{data['url']}] failed,"
f"with status [{request.status_code}].")
if data['domain'] in self.ignore_url_alive_check:
if data['request_path'] in self.ignore_url_alive_check[data['domain']]:
skip_test = True
if not skip_test:
assert (
request.status_code == 200
or
request.status_code == 401
or
request.status_code == 403
), (
f"Hyperlink [{data['url_id']}] to location [{data['url']}] failed,"
f"with status [{request.status_code}].")
else:
assert True
@pytest.mark.parametrize(

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/></svg>

Before

Width:  |  Height:  |  Size: 663 B

View File

@ -1,31 +0,0 @@
{% extends "base.html" %}
{% block content %}
{{ page.content }}
{% set blog_posts = [] %}
{% for page in nav.pages %}
{% if page.url.startswith(config.extra.blog.dir) and page.meta.date is defined %}
<!-- or "" suppresses "None" output-->
{{ blog_posts.append( page ) or "" }}
{% endif %}
{% endfor %}
{% for page in (blog_posts|sort(attribute="meta.date", reverse=True))[:config.extra.blog.list_length] %}
<h2><a href="{{ page.url|url }}">{{ page.title }}</a></h2>
<hr>
{% include "partials/blog_metadata.html" %}
<p>
{{ page.meta.description }}
</p>
<!-- Use a hidden p tag to provide a preview -->
{% if config.extra.blog.extended_preview %}
<a href="{{ page.url|url }}#more">
<span class="twemoji">
{% include ".icons/octicons/arrow-right-24.svg" %}
</span>
Continue reading
<hr>
</a>
{% endif %}
{% endfor %}
{% endblock %}

View File

@ -1,8 +0,0 @@
{% extends "base.html" %}
{% block content %}
<h1>{{ page.title }}</h1>
{% include "partials/blog_metadata.html" %}
<hr>
{{ page.content }}
{% endblock %}

Some files were not shown because too many files have changed in this diff Show More