From d768aaf10d57317e3523be668a157c449c19b2cc Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 16 Mar 2024 10:39:17 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- premium/authelia/23.5.5/.helmignore | 30 + premium/authelia/23.5.5/CHANGELOG.md | 17 + premium/authelia/23.5.5/Chart.yaml | 54 + premium/authelia/23.5.5/LICENSE | 106 + premium/authelia/23.5.5/README.md | 28 + premium/authelia/23.5.5/app-changelog.md | 9 + premium/authelia/23.5.5/app-readme.md | 8 + .../authelia/23.5.5/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes .../authelia/23.5.5/charts/redis-13.0.3.tgz | Bin 0 -> 106633 bytes premium/authelia/23.5.5/ix_values.yaml | 582 +++ premium/authelia/23.5.5/questions.yaml | 4323 +++++++++++++++++ premium/authelia/23.5.5/templates/NOTES.txt | 1 + .../authelia/23.5.5/templates/_configmap.tpl | 376 ++ .../authelia/23.5.5/templates/_secrets.tpl | 53 + premium/authelia/23.5.5/templates/common.yaml | 77 + premium/authelia/23.5.5/values.yaml | 0 premium/authelia/item.yaml | 4 + premium/blocky/14.3.5/.helmignore | 30 + premium/blocky/14.3.5/CHANGELOG.md | 17 + premium/blocky/14.3.5/Chart.yaml | 47 + premium/blocky/14.3.5/LICENSE | 106 + premium/blocky/14.3.5/README.md | 28 + premium/blocky/14.3.5/app-changelog.md | 9 + premium/blocky/14.3.5/app-readme.md | 8 + .../blocky/14.3.5/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes premium/blocky/14.3.5/charts/redis-13.0.3.tgz | Bin 0 -> 106633 bytes premium/blocky/14.3.5/dashboard.json | 1939 ++++++++ premium/blocky/14.3.5/dashboardpsql.json | 874 ++++ premium/blocky/14.3.5/ix_values.yaml | 380 ++ premium/blocky/14.3.5/questions.yaml | 3780 ++++++++++++++ premium/blocky/14.3.5/templates/NOTES.txt | 1 + .../blocky/14.3.5/templates/_blockyConfig.tpl | 231 + .../blocky/14.3.5/templates/_k8sgateway.tpl | 90 + premium/blocky/14.3.5/templates/common.yaml | 106 + premium/blocky/14.3.5/values.yaml | 0 premium/blocky/item.yaml | 4 + premium/clusterissuer/7.5.3/.helmignore | 30 + premium/clusterissuer/7.5.3/CHANGELOG.md | 17 + premium/clusterissuer/7.5.3/Chart.yaml | 37 + premium/clusterissuer/7.5.3/README.md | 28 + premium/clusterissuer/7.5.3/app-changelog.md | 9 + premium/clusterissuer/7.5.3/app-readme.md | 8 + .../7.5.3/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes premium/clusterissuer/7.5.3/ix_values.yaml | 104 + premium/clusterissuer/7.5.3/questions.yaml | 446 ++ .../clusterissuer/7.5.3/templates/NOTES.txt | 1 + .../7.5.3/templates/clusterissuer/_ACME.tpl | 128 + .../7.5.3/templates/clusterissuer/_CA.tpl | 54 + .../clusterissuer/_clusterCertificates.tpl | 34 + .../templates/clusterissuer/_selfSigned.tpl | 14 + .../clusterissuer/7.5.3/templates/common.yaml | 16 + premium/clusterissuer/7.5.3/values.yaml | 0 premium/clusterissuer/item.yaml | 4 + premium/grafana/14.6.3/.helmignore | 30 + premium/grafana/14.6.3/CHANGELOG.md | 17 + premium/grafana/14.6.3/Chart.yaml | 41 + premium/grafana/14.6.3/README.md | 28 + premium/grafana/14.6.3/app-changelog.md | 9 + premium/grafana/14.6.3/app-readme.md | 8 + .../grafana/14.6.3/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes premium/grafana/14.6.3/ix_values.yaml | 346 ++ premium/grafana/14.6.3/questions.yaml | 2916 +++++++++++ premium/grafana/14.6.3/templates/NOTES.txt | 1 + premium/grafana/14.6.3/templates/common.yaml | 1 + premium/grafana/14.6.3/values.yaml | 0 premium/grafana/item.yaml | 4 + premium/metallb-config/6.5.3/.helmignore | 30 + premium/metallb-config/6.5.3/CHANGELOG.md | 17 + premium/metallb-config/6.5.3/Chart.yaml | 38 + premium/metallb-config/6.5.3/README.md | 28 + premium/metallb-config/6.5.3/app-changelog.md | 9 + premium/metallb-config/6.5.3/app-readme.md | 8 + .../6.5.3/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes premium/metallb-config/6.5.3/ix_values.yaml | 73 + premium/metallb-config/6.5.3/questions.yaml | 368 ++ .../metallb-config/6.5.3/templates/NOTES.txt | 1 + .../6.5.3/templates/_bgpadvertisement.tpl | 33 + .../6.5.3/templates/_community.tpl | 16 + .../6.5.3/templates/_ipaddresspool.tpl | 17 + .../6.5.3/templates/_l2advertisement.tpl | 22 + .../metallb-config/6.5.3/templates/_peers.tpl | 51 + .../6.5.3/templates/common.yaml | 21 + premium/metallb-config/6.5.3/values.yaml | 0 premium/metallb-config/item.yaml | 4 + premium/nextcloud/29.5.6/.helmignore | 30 + premium/nextcloud/29.5.6/CHANGELOG.md | 17 + premium/nextcloud/29.5.6/Chart.yaml | 53 + premium/nextcloud/29.5.6/LICENSE | 106 + premium/nextcloud/29.5.6/README.md | 28 + premium/nextcloud/29.5.6/app-changelog.md | 9 + premium/nextcloud/29.5.6/app-readme.md | 8 + .../nextcloud/29.5.6/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes .../nextcloud/29.5.6/charts/redis-13.0.3.tgz | Bin 0 -> 106633 bytes premium/nextcloud/29.5.6/ix_values.yaml | 516 ++ premium/nextcloud/29.5.6/questions.yaml | 4144 ++++++++++++++++ premium/nextcloud/29.5.6/templates/NOTES.txt | 1 + .../nextcloud/29.5.6/templates/_configmap.tpl | 443 ++ .../nextcloud/29.5.6/templates/_cronjobs.tpl | 34 + .../29.5.6/templates/_ingressInjector.tpl | 23 + .../nextcloud/29.5.6/templates/_initPerms.tpl | 29 + .../29.5.6/templates/_validation.tpl | 42 + .../29.5.6/templates/_waitNextcloud.tpl | 25 + .../nextcloud/29.5.6/templates/common.yaml | 92 + premium/nextcloud/29.5.6/values.yaml | 0 premium/nextcloud/item.yaml | 4 + premium/prometheus/17.9.3/.helmignore | 30 + premium/prometheus/17.9.3/CHANGELOG.md | 17 + premium/prometheus/17.9.3/Chart.yaml | 46 + premium/prometheus/17.9.3/README.md | 28 + premium/prometheus/17.9.3/app-changelog.md | 9 + premium/prometheus/17.9.3/app-readme.md | 8 + .../17.9.3/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes .../charts/kube-prometheus-stack-56.21.0.tgz | Bin 0 -> 518196 bytes premium/prometheus/17.9.3/ix_values.yaml | 1260 +++++ premium/prometheus/17.9.3/questions.yaml | 1808 +++++++ premium/prometheus/17.9.3/templates/NOTES.txt | 1 + .../prometheus/17.9.3/templates/_helpers.tpl | 210 + .../templates/alertmanager/_alertmanager.tpl | 174 + .../templates/alertmanager/secrets.yaml | 13 + .../alertmanager/serviceaccount.yaml | 12 + .../alertmanager/servicemonitor.yaml | 26 + .../prometheus/17.9.3/templates/common.yaml | 13 + .../prometheus/_additionalPrometheusRules.tpl | 15 + .../prometheus/_additionalScrapeJobs.tpl | 13 + .../templates/prometheus/_prometheus.tpl | 366 ++ .../templates/prometheus/_servicemonitor.tpl | 29 + .../templates/prometheus/clusterrole.yaml | 41 + .../prometheus/clusterrolebinding.yaml | 15 + .../templates/prometheus/serviceaccount.yaml | 12 + premium/prometheus/17.9.3/values.yaml | 0 premium/prometheus/item.yaml | 4 + premium/traefik/26.7.4/.helmignore | 30 + premium/traefik/26.7.4/CHANGELOG.md | 17 + premium/traefik/26.7.4/Chart.yaml | 39 + premium/traefik/26.7.4/README.md | 28 + premium/traefik/26.7.4/app-changelog.md | 9 + premium/traefik/26.7.4/app-readme.md | 8 + .../traefik/26.7.4/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes .../traefik.containo.us_ingressroutes.yaml | 275 ++ .../traefik.containo.us_ingressroutetcps.yaml | 218 + .../traefik.containo.us_ingressrouteudps.yaml | 105 + .../crds/traefik.containo.us_middlewares.yaml | 924 ++++ .../traefik.containo.us_middlewaretcps.yaml | 72 + ...traefik.containo.us_serverstransports.yaml | 128 + .../crds/traefik.containo.us_tlsoptions.yaml | 113 + .../crds/traefik.containo.us_tlsstores.yaml | 99 + .../traefik.containo.us_traefikservices.yaml | 402 ++ .../26.7.4/crds/traefik.io_ingressroutes.yaml | 275 ++ .../crds/traefik.io_ingressroutetcps.yaml | 218 + .../crds/traefik.io_ingressrouteudps.yaml | 105 + .../26.7.4/crds/traefik.io_middlewares.yaml | 924 ++++ .../crds/traefik.io_middlewaretcps.yaml | 72 + .../crds/traefik.io_serverstransports.yaml | 128 + .../crds/traefik.io_serverstransporttcps.yaml | 122 + .../26.7.4/crds/traefik.io_tlsoptions.yaml | 113 + .../26.7.4/crds/traefik.io_tlsstores.yaml | 99 + .../crds/traefik.io_traefikservices.yaml | 402 ++ premium/traefik/26.7.4/dashboard.json | 1568 ++++++ premium/traefik/26.7.4/ix_values.yaml | 498 ++ premium/traefik/26.7.4/questions.yaml | 3434 +++++++++++++ premium/traefik/26.7.4/templates/NOTES.txt | 1 + premium/traefik/26.7.4/templates/_args.tpl | 198 + premium/traefik/26.7.4/templates/_helpers.tpl | 22 + .../26.7.4/templates/_ingressclass.tpl | 24 + .../26.7.4/templates/_ingressroute.tpl | 34 + .../traefik/26.7.4/templates/_portalhook.tpl | 24 + .../traefik/26.7.4/templates/_tlsoptions.tpl | 13 + .../traefik/26.7.4/templates/_tlsstore.tpl | 26 + premium/traefik/26.7.4/templates/common.yaml | 24 + .../templates/middlewares/addPrefix.yaml | 12 + .../middlewares/basic-middleware.yaml | 57 + .../templates/middlewares/basicauth.yaml | 30 + .../26.7.4/templates/middlewares/bouncer.yaml | 112 + .../templates/middlewares/buffering.yaml | 26 + .../26.7.4/templates/middlewares/chain.yaml | 21 + .../middlewares/customFrameOptionsValue.yaml | 12 + .../middlewares/customRequestHeaders.yaml | 15 + .../middlewares/customResponseHeaders.yaml | 15 + .../templates/middlewares/forwardauth.yaml | 29 + .../templates/middlewares/geoblock.yaml | 29 + .../templates/middlewares/ipwhitelist.yaml | 27 + .../templates/middlewares/modsecurity.yaml | 14 + .../templates/middlewares/ratelimit.yaml | 13 + .../26.7.4/templates/middlewares/real-ip.yaml | 15 + .../templates/middlewares/redirectScheme.yaml | 13 + .../templates/middlewares/redirectregex.yaml | 14 + .../middlewares/rewriteResponseHeaders.yaml | 17 + .../middlewares/stripPrefixRegex.yaml | 14 + .../templates/middlewares/tc-chains.yaml | 24 + .../templates/middlewares/tc-headers.yaml | 59 + .../templates/middlewares/tc-nextcloud.yaml | 20 + .../templates/middlewares/theme-park.yaml | 20 + premium/traefik/26.7.4/values.yaml | 0 premium/traefik/item.yaml | 4 + premium/vaultwarden/26.5.3/.helmignore | 30 + premium/vaultwarden/26.5.3/CHANGELOG.md | 17 + premium/vaultwarden/26.5.3/Chart.yaml | 41 + premium/vaultwarden/26.5.3/README.md | 28 + premium/vaultwarden/26.5.3/app-changelog.md | 9 + premium/vaultwarden/26.5.3/app-readme.md | 8 + .../26.5.3/charts/common-20.0.9.tgz | Bin 0 -> 101329 bytes premium/vaultwarden/26.5.3/ix_values.yaml | 152 + premium/vaultwarden/26.5.3/questions.yaml | 3599 ++++++++++++++ .../vaultwarden/26.5.3/templates/NOTES.txt | 1 + .../26.5.3/templates/_configmap.tpl | 111 + .../vaultwarden/26.5.3/templates/_secrets.tpl | 37 + .../26.5.3/templates/_validate.tpl | 17 + .../vaultwarden/26.5.3/templates/common.yaml | 17 + premium/vaultwarden/26.5.3/values.yaml | 0 premium/vaultwarden/item.yaml | 4 + system/cert-manager/4.5.4/app-changelog.md | 9 - system/cloudnative-pg/6.6.3/app-changelog.md | 9 - .../1.5.3/app-changelog.md | 9 - system/kubeapps/2.7.3/app-changelog.md | 9 - .../4.5.3/app-changelog.md | 9 - system/metallb/14.5.3/app-changelog.md | 9 - system/openebs/3.5.4/app-changelog.md | 9 - .../6.7.3/app-changelog.md | 9 - system/traefik-crds/0.1.3/app-changelog.md | 9 - system/velero/4.5.3/app-changelog.md | 9 - 220 files changed, 43613 insertions(+), 90 deletions(-) create mode 100644 premium/authelia/23.5.5/.helmignore create mode 100644 premium/authelia/23.5.5/CHANGELOG.md create mode 100644 premium/authelia/23.5.5/Chart.yaml create mode 100644 premium/authelia/23.5.5/LICENSE create mode 100644 premium/authelia/23.5.5/README.md create mode 100644 premium/authelia/23.5.5/app-changelog.md create mode 100644 premium/authelia/23.5.5/app-readme.md create mode 100644 premium/authelia/23.5.5/charts/common-20.0.9.tgz create mode 100644 premium/authelia/23.5.5/charts/redis-13.0.3.tgz create mode 100644 premium/authelia/23.5.5/ix_values.yaml create mode 100755 premium/authelia/23.5.5/questions.yaml create mode 100644 premium/authelia/23.5.5/templates/NOTES.txt create mode 100644 premium/authelia/23.5.5/templates/_configmap.tpl create mode 100644 premium/authelia/23.5.5/templates/_secrets.tpl create mode 100644 premium/authelia/23.5.5/templates/common.yaml create mode 100644 premium/authelia/23.5.5/values.yaml create mode 100644 premium/authelia/item.yaml create mode 100644 premium/blocky/14.3.5/.helmignore create mode 100644 premium/blocky/14.3.5/CHANGELOG.md create mode 100644 premium/blocky/14.3.5/Chart.yaml create mode 100644 premium/blocky/14.3.5/LICENSE create mode 100644 premium/blocky/14.3.5/README.md create mode 100644 premium/blocky/14.3.5/app-changelog.md create mode 100644 premium/blocky/14.3.5/app-readme.md create mode 100644 premium/blocky/14.3.5/charts/common-20.0.9.tgz create mode 100644 premium/blocky/14.3.5/charts/redis-13.0.3.tgz create mode 100644 premium/blocky/14.3.5/dashboard.json create mode 100644 premium/blocky/14.3.5/dashboardpsql.json create mode 100644 premium/blocky/14.3.5/ix_values.yaml create mode 100755 premium/blocky/14.3.5/questions.yaml create mode 100644 premium/blocky/14.3.5/templates/NOTES.txt create mode 100644 premium/blocky/14.3.5/templates/_blockyConfig.tpl create mode 100644 premium/blocky/14.3.5/templates/_k8sgateway.tpl create mode 100644 premium/blocky/14.3.5/templates/common.yaml create mode 100644 premium/blocky/14.3.5/values.yaml create mode 100644 premium/blocky/item.yaml create mode 100644 premium/clusterissuer/7.5.3/.helmignore create mode 100644 premium/clusterissuer/7.5.3/CHANGELOG.md create mode 100644 premium/clusterissuer/7.5.3/Chart.yaml create mode 100644 premium/clusterissuer/7.5.3/README.md create mode 100644 premium/clusterissuer/7.5.3/app-changelog.md create mode 100644 premium/clusterissuer/7.5.3/app-readme.md create mode 100644 premium/clusterissuer/7.5.3/charts/common-20.0.9.tgz create mode 100644 premium/clusterissuer/7.5.3/ix_values.yaml create mode 100755 premium/clusterissuer/7.5.3/questions.yaml create mode 100644 premium/clusterissuer/7.5.3/templates/NOTES.txt create mode 100644 premium/clusterissuer/7.5.3/templates/clusterissuer/_ACME.tpl create mode 100644 premium/clusterissuer/7.5.3/templates/clusterissuer/_CA.tpl create mode 100644 premium/clusterissuer/7.5.3/templates/clusterissuer/_clusterCertificates.tpl create mode 100644 premium/clusterissuer/7.5.3/templates/clusterissuer/_selfSigned.tpl create mode 100644 premium/clusterissuer/7.5.3/templates/common.yaml create mode 100644 premium/clusterissuer/7.5.3/values.yaml create mode 100644 premium/clusterissuer/item.yaml create mode 100644 premium/grafana/14.6.3/.helmignore create mode 100644 premium/grafana/14.6.3/CHANGELOG.md create mode 100644 premium/grafana/14.6.3/Chart.yaml create mode 100644 premium/grafana/14.6.3/README.md create mode 100644 premium/grafana/14.6.3/app-changelog.md create mode 100644 premium/grafana/14.6.3/app-readme.md create mode 100644 premium/grafana/14.6.3/charts/common-20.0.9.tgz create mode 100644 premium/grafana/14.6.3/ix_values.yaml create mode 100755 premium/grafana/14.6.3/questions.yaml create mode 100644 premium/grafana/14.6.3/templates/NOTES.txt create mode 100644 premium/grafana/14.6.3/templates/common.yaml create mode 100644 premium/grafana/14.6.3/values.yaml create mode 100644 premium/grafana/item.yaml create mode 100644 premium/metallb-config/6.5.3/.helmignore create mode 100644 premium/metallb-config/6.5.3/CHANGELOG.md create mode 100644 premium/metallb-config/6.5.3/Chart.yaml create mode 100644 premium/metallb-config/6.5.3/README.md create mode 100644 premium/metallb-config/6.5.3/app-changelog.md create mode 100644 premium/metallb-config/6.5.3/app-readme.md create mode 100644 premium/metallb-config/6.5.3/charts/common-20.0.9.tgz create mode 100644 premium/metallb-config/6.5.3/ix_values.yaml create mode 100755 premium/metallb-config/6.5.3/questions.yaml create mode 100644 premium/metallb-config/6.5.3/templates/NOTES.txt create mode 100644 premium/metallb-config/6.5.3/templates/_bgpadvertisement.tpl create mode 100644 premium/metallb-config/6.5.3/templates/_community.tpl create mode 100644 premium/metallb-config/6.5.3/templates/_ipaddresspool.tpl create mode 100644 premium/metallb-config/6.5.3/templates/_l2advertisement.tpl create mode 100644 premium/metallb-config/6.5.3/templates/_peers.tpl create mode 100644 premium/metallb-config/6.5.3/templates/common.yaml create mode 100644 premium/metallb-config/6.5.3/values.yaml create mode 100644 premium/metallb-config/item.yaml create mode 100644 premium/nextcloud/29.5.6/.helmignore create mode 100644 premium/nextcloud/29.5.6/CHANGELOG.md create mode 100644 premium/nextcloud/29.5.6/Chart.yaml create mode 100644 premium/nextcloud/29.5.6/LICENSE create mode 100644 premium/nextcloud/29.5.6/README.md create mode 100644 premium/nextcloud/29.5.6/app-changelog.md create mode 100644 premium/nextcloud/29.5.6/app-readme.md create mode 100644 premium/nextcloud/29.5.6/charts/common-20.0.9.tgz create mode 100644 premium/nextcloud/29.5.6/charts/redis-13.0.3.tgz create mode 100644 premium/nextcloud/29.5.6/ix_values.yaml create mode 100755 premium/nextcloud/29.5.6/questions.yaml create mode 100644 premium/nextcloud/29.5.6/templates/NOTES.txt create mode 100644 premium/nextcloud/29.5.6/templates/_configmap.tpl create mode 100644 premium/nextcloud/29.5.6/templates/_cronjobs.tpl create mode 100644 premium/nextcloud/29.5.6/templates/_ingressInjector.tpl create mode 100644 premium/nextcloud/29.5.6/templates/_initPerms.tpl create mode 100644 premium/nextcloud/29.5.6/templates/_validation.tpl create mode 100644 premium/nextcloud/29.5.6/templates/_waitNextcloud.tpl create mode 100644 premium/nextcloud/29.5.6/templates/common.yaml create mode 100644 premium/nextcloud/29.5.6/values.yaml create mode 100644 premium/nextcloud/item.yaml create mode 100644 premium/prometheus/17.9.3/.helmignore create mode 100644 premium/prometheus/17.9.3/CHANGELOG.md create mode 100644 premium/prometheus/17.9.3/Chart.yaml create mode 100644 premium/prometheus/17.9.3/README.md create mode 100644 premium/prometheus/17.9.3/app-changelog.md create mode 100644 premium/prometheus/17.9.3/app-readme.md create mode 100644 premium/prometheus/17.9.3/charts/common-20.0.9.tgz create mode 100644 premium/prometheus/17.9.3/charts/kube-prometheus-stack-56.21.0.tgz create mode 100644 premium/prometheus/17.9.3/ix_values.yaml create mode 100755 premium/prometheus/17.9.3/questions.yaml create mode 100644 premium/prometheus/17.9.3/templates/NOTES.txt create mode 100644 premium/prometheus/17.9.3/templates/_helpers.tpl create mode 100644 premium/prometheus/17.9.3/templates/alertmanager/_alertmanager.tpl create mode 100644 premium/prometheus/17.9.3/templates/alertmanager/secrets.yaml create mode 100644 premium/prometheus/17.9.3/templates/alertmanager/serviceaccount.yaml create mode 100644 premium/prometheus/17.9.3/templates/alertmanager/servicemonitor.yaml create mode 100644 premium/prometheus/17.9.3/templates/common.yaml create mode 100644 premium/prometheus/17.9.3/templates/prometheus/_additionalPrometheusRules.tpl create mode 100644 premium/prometheus/17.9.3/templates/prometheus/_additionalScrapeJobs.tpl create mode 100644 premium/prometheus/17.9.3/templates/prometheus/_prometheus.tpl create mode 100644 premium/prometheus/17.9.3/templates/prometheus/_servicemonitor.tpl create mode 100644 premium/prometheus/17.9.3/templates/prometheus/clusterrole.yaml create mode 100644 premium/prometheus/17.9.3/templates/prometheus/clusterrolebinding.yaml create mode 100644 premium/prometheus/17.9.3/templates/prometheus/serviceaccount.yaml create mode 100644 premium/prometheus/17.9.3/values.yaml create mode 100644 premium/prometheus/item.yaml create mode 100644 premium/traefik/26.7.4/.helmignore create mode 100644 premium/traefik/26.7.4/CHANGELOG.md create mode 100644 premium/traefik/26.7.4/Chart.yaml create mode 100644 premium/traefik/26.7.4/README.md create mode 100644 premium/traefik/26.7.4/app-changelog.md create mode 100644 premium/traefik/26.7.4/app-readme.md create mode 100644 premium/traefik/26.7.4/charts/common-20.0.9.tgz create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutes.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutetcps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_ingressrouteudps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_middlewares.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_middlewaretcps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_serverstransports.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_tlsoptions.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_tlsstores.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.containo.us_traefikservices.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_ingressroutes.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_ingressroutetcps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_ingressrouteudps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_middlewares.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_middlewaretcps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_serverstransports.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_serverstransporttcps.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_tlsoptions.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_tlsstores.yaml create mode 100644 premium/traefik/26.7.4/crds/traefik.io_traefikservices.yaml create mode 100644 premium/traefik/26.7.4/dashboard.json create mode 100644 premium/traefik/26.7.4/ix_values.yaml create mode 100755 premium/traefik/26.7.4/questions.yaml create mode 100644 premium/traefik/26.7.4/templates/NOTES.txt create mode 100644 premium/traefik/26.7.4/templates/_args.tpl create mode 100644 premium/traefik/26.7.4/templates/_helpers.tpl create mode 100644 premium/traefik/26.7.4/templates/_ingressclass.tpl create mode 100644 premium/traefik/26.7.4/templates/_ingressroute.tpl create mode 100644 premium/traefik/26.7.4/templates/_portalhook.tpl create mode 100644 premium/traefik/26.7.4/templates/_tlsoptions.tpl create mode 100644 premium/traefik/26.7.4/templates/_tlsstore.tpl create mode 100644 premium/traefik/26.7.4/templates/common.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/addPrefix.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/basic-middleware.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/basicauth.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/bouncer.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/buffering.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/chain.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/customFrameOptionsValue.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/customRequestHeaders.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/customResponseHeaders.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/forwardauth.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/geoblock.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/ipwhitelist.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/modsecurity.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/ratelimit.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/real-ip.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/redirectScheme.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/redirectregex.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/rewriteResponseHeaders.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/stripPrefixRegex.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/tc-chains.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/tc-headers.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/tc-nextcloud.yaml create mode 100644 premium/traefik/26.7.4/templates/middlewares/theme-park.yaml create mode 100644 premium/traefik/26.7.4/values.yaml create mode 100644 premium/traefik/item.yaml create mode 100644 premium/vaultwarden/26.5.3/.helmignore create mode 100644 premium/vaultwarden/26.5.3/CHANGELOG.md create mode 100644 premium/vaultwarden/26.5.3/Chart.yaml create mode 100644 premium/vaultwarden/26.5.3/README.md create mode 100644 premium/vaultwarden/26.5.3/app-changelog.md create mode 100644 premium/vaultwarden/26.5.3/app-readme.md create mode 100644 premium/vaultwarden/26.5.3/charts/common-20.0.9.tgz create mode 100644 premium/vaultwarden/26.5.3/ix_values.yaml create mode 100755 premium/vaultwarden/26.5.3/questions.yaml create mode 100644 premium/vaultwarden/26.5.3/templates/NOTES.txt create mode 100644 premium/vaultwarden/26.5.3/templates/_configmap.tpl create mode 100644 premium/vaultwarden/26.5.3/templates/_secrets.tpl create mode 100644 premium/vaultwarden/26.5.3/templates/_validate.tpl create mode 100644 premium/vaultwarden/26.5.3/templates/common.yaml create mode 100644 premium/vaultwarden/26.5.3/values.yaml create mode 100644 premium/vaultwarden/item.yaml delete mode 100644 system/cert-manager/4.5.4/app-changelog.md delete mode 100644 system/cloudnative-pg/6.6.3/app-changelog.md delete mode 100644 system/grafana-agent-operator/1.5.3/app-changelog.md delete mode 100644 system/kubeapps/2.7.3/app-changelog.md delete mode 100644 system/kubernetes-reflector/4.5.3/app-changelog.md delete mode 100644 system/metallb/14.5.3/app-changelog.md delete mode 100644 system/openebs/3.5.4/app-changelog.md delete mode 100644 system/prometheus-operator/6.7.3/app-changelog.md delete mode 100644 system/traefik-crds/0.1.3/app-changelog.md delete mode 100644 system/velero/4.5.3/app-changelog.md diff --git a/premium/authelia/23.5.5/.helmignore b/premium/authelia/23.5.5/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/authelia/23.5.5/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/authelia/23.5.5/CHANGELOG.md b/premium/authelia/23.5.5/CHANGELOG.md new file mode 100644 index 00000000000..ea73fe1338a --- /dev/null +++ b/premium/authelia/23.5.5/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [authelia-23.5.5](https://github.com/truecharts/charts/compare/authelia-23.5.4...authelia-23.5.5) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/authelia/23.5.5/Chart.yaml b/premium/authelia/23.5.5/Chart.yaml new file mode 100644 index 00000000000..5fb8313fba8 --- /dev/null +++ b/premium/authelia/23.5.5/Chart.yaml @@ -0,0 +1,54 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: security + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 4.37.5 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 13.0.3 + repository: oci://tccr.io/truecharts + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Authelia is a Single Sign-On Multi-Factor portal for web apps +home: https://truecharts.org/charts/premium/authelia +icon: https://truecharts.org/img/hotlink-ok/chart-icons/authelia.png +keywords: + - authelia + - authentication + - login + - SSO + - Authentication + - Security + - Two-Factor + - U2F + - YubiKey + - Push Notifications + - LDAP +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: authelia +sources: + - https://github.com/authelia/chartrepo + - https://github.com/authelia/authelia + - https://github.com/truecharts/charts/tree/master/charts/premium/authelia + - https://ghcr.io/authelia/authelia +type: application +version: 23.5.5 diff --git a/premium/authelia/23.5.5/LICENSE b/premium/authelia/23.5.5/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/premium/authelia/23.5.5/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/premium/authelia/23.5.5/README.md b/premium/authelia/23.5.5/README.md new file mode 100644 index 00000000000..593f83f638f --- /dev/null +++ b/premium/authelia/23.5.5/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/authelia) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/authelia/23.5.5/app-changelog.md b/premium/authelia/23.5.5/app-changelog.md new file mode 100644 index 00000000000..e65960170d6 --- /dev/null +++ b/premium/authelia/23.5.5/app-changelog.md @@ -0,0 +1,9 @@ + + +## [authelia-23.5.5](https://github.com/truecharts/charts/compare/authelia-23.5.4...authelia-23.5.5) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/authelia/23.5.5/app-readme.md b/premium/authelia/23.5.5/app-readme.md new file mode 100644 index 00000000000..df11980d22e --- /dev/null +++ b/premium/authelia/23.5.5/app-readme.md @@ -0,0 +1,8 @@ +Authelia is a Single Sign-On Multi-Factor portal for web apps + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/authelia](https://truecharts.org/charts/premium/authelia) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/authelia/23.5.5/charts/common-20.0.9.tgz b/premium/authelia/23.5.5/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/authelia/23.5.5/charts/redis-13.0.3.tgz b/premium/authelia/23.5.5/charts/redis-13.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f04b6a89dbf1fec429f40b3f84e283fe39267c6f GIT binary patch literal 106633 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 z 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 VeEqSn{{{d6|NmLUX@CGU4FHbDjwk>C literal 0 HcmV?d00001 diff --git a/premium/authelia/23.5.5/ix_values.yaml b/premium/authelia/23.5.5/ix_values.yaml new file mode 100644 index 00000000000..6079b4463f3 --- /dev/null +++ b/premium/authelia/23.5.5/ix_values.yaml @@ -0,0 +1,582 @@ +image: + repository: ghcr.io/authelia/authelia + pullPolicy: IfNotPresent + tag: 4.37.5@sha256:25fc5423238b6f3a1fc967fda3f6a9212846aeb4a720327ef61c8ccff52dbbe2 +manifestManager: + enabled: true +workload: + main: + replicas: 2 + strategy: RollingUpdate + podSpec: + containers: + main: + command: + - authelia + args: + - --config=/configuration.yaml + envFrom: + - configMapRef: + name: authelia-paths + probes: + liveness: + type: http + path: "/api/health" + readiness: + type: http + path: "/api/health" + startup: + type: http + path: "/api/health" +service: + main: + ports: + main: + port: 9091 + targetPort: 9091 +persistence: + config: + enabled: true + mountPath: "/config" +cnpg: + main: + enabled: true + user: authelia + database: authelia +# Enabled redis +# ... for more options see https://github.com/tccr.io/truecharts/charts/tree/master/tccr.io/truecharts/redis +redis: + enabled: true +domain: example.com +## +## Server Configuration +## +server: + ## + ## Port sets the configured port for the daemon, service, and the probes. + ## Default is 9091 and should not need to be changed. + ## + port: 9091 + ## Buffers usually should be configured to be the same value. + ## Explanation at https://www.authelia.com/docs/configuration/server.html + ## Read buffer size adjusts the server's max incoming request size in bytes. + ## Write buffer size does the same for outgoing responses. + read_buffer_size: 4096 + write_buffer_size: 4096 + ## Set the single level path Authelia listens on. + ## Must be alphanumeric chars and should not contain any slashes. + path: "" +log: + ## Level of verbosity for logs: info, debug, trace. + level: trace + ## Format the logs are written as: json, text. + format: text + ## TODO: Statefulness check should check if this is set, and the configMap should enable it. + ## File path where the logs will be written. If not set logs are written to stdout. + # file_path: /config/authelia.log +## Default redirection URL +## +## If user tries to authenticate without any referer, Authelia does not know where to redirect the user to at the end +## of the authentication process. This parameter allows you to specify the default redirection URL Authelia will use +## in such a case. +## +## Note: this parameter is optional. If not provided, user won't be redirected upon successful authentication. +## Default is https://www. (value at the top of the values.yaml). +default_redirection_url: "" +# default_redirection_url: https://example.com + +theme: light +## +## TOTP Configuration +## +## Parameters used for TOTP generation +totp: + ## The issuer name displayed in the Authenticator application of your choice + ## See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names + ## Defaults to . + issuer: "" + ## The period in seconds a one-time password is current for. Changing this will require all users to register + ## their TOTP applications again. Warning: before changing period read the docs link below. + period: 30 + ## The skew controls number of one-time passwords either side of the current one that are valid. + ## Warning: before changing skew read the docs link below. + ## See: https://www.authelia.com/docs/configuration/one-time-password.html#period-and-skew to read the documentation. + skew: 1 +## +## Password Policy Config +## +## Parameters used for Password Policies +password_policy: + ## See: https://www.authelia.com/configuration/security/password-policy/ + standard: + enabled: false + min_length: 8 + max_length: 0 + require_uppercase: false + require_lowercase: false + require_number: false + require_special: false + zxcvbn: + ## See https://www.authelia.com/configuration/security/password-policy/#zxcvbn for more info + enabled: false + min_score: 3 +## +## Duo Push API Configuration +## +## Parameters used to contact the Duo API. Those are generated when you protect an application of type +## "Partner Auth API" in the management panel. +duo_api: + enabled: false + hostname: api-123456789.example.com + integration_key: ABCDEF + plain_api_key: "" +## NTP settings +ntp: + address: "time.cloudflare.com:123" + version: 4 + max_desync: 3s + disable_startup_check: false + disable_failure: true +## +## Authentication Backend Provider Configuration +## +## Used for verifying user passwords and retrieve information such as email address and groups users belong to. +## +## The available providers are: `file`, `ldap`. You must use one and only one of these providers. +authentication_backend: + ## Disable both the HTML element and the API for reset password functionality + disable_reset_password: false + ## The amount of time to wait before we refresh data from the authentication backend. Uses duration notation. + ## To disable this feature set it to 'disable', this will slightly reduce security because for Authelia, users will + ## always belong to groups they belonged to at the time of login even if they have been removed from them in LDAP. + ## To force update on every request you can set this to '0' or 'always', this will increase processor demand. + ## See the below documentation for more information. + ## Duration Notation docs: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Refresh Interval docs: https://www.authelia.com/docs/configuration/authentication/ldap.html#refresh-interval + refresh_interval: 5m + ## LDAP backend configuration. + ## + ## This backend allows Authelia to be scaled to more + ## than one instance and therefore is recommended for + ## production. + ldap: + ## Enable LDAP Backend. + enabled: false + ## The LDAP implementation, this affects elements like the attribute utilised for resetting a password. + ## Acceptable options are as follows: + ## - 'activedirectory' - For Microsoft Active Directory. + ## - 'custom' - For custom specifications of attributes and filters. + ## This currently defaults to 'custom' to maintain existing behaviour. + ## + ## Depending on the option here certain other values in this section have a default value, notably all of the + ## attribute mappings have a default value that this config overrides, you can read more about these default values + ## at https://www.authelia.com/docs/configuration/authentication/ldap.html#defaults + implementation: activedirectory + ## The url to the ldap server. Format: ://
[:]. + ## Scheme can be ldap or ldaps in the format (port optional). + url: ldap://openldap.default.svc.cluster.local + ## Connection Timeout. + timeout: 5s + ## Use StartTLS with the LDAP connection. + start_tls: false + tls: + ## Server Name for certificate validation (in case it's not set correctly in the URL). + server_name: "" + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + ## Minimum TLS version for either Secure LDAP or LDAP StartTLS. + minimum_version: TLS1.2 + ## The base dn for every LDAP query. + base_dn: DC=example,DC=com + ## The attribute holding the username of the user. This attribute is used to populate the username in the session + ## information. It was introduced due to #561 to handle case insensitive search queries. For you information, + ## Microsoft Active Directory usually uses 'sAMAccountName' and OpenLDAP usually uses 'uid'. Beware that this + ## attribute holds the unique identifiers for the users binding the user and the configuration stored in database. + ## Therefore only single value attributes are allowed and the value must never be changed once attributed to a user + ## otherwise it would break the configuration for that user. Technically, non-unique attributes like 'mail' can also + ## be used but we don't recommend using them, we instead advise to use the attributes mentioned above + ## (sAMAccountName and uid) to follow https://www.ietf.org/rfc/rfc2307.txt. + username_attribute: "uid" + ## An additional dn to define the scope to all users. + additional_users_dn: OU=Users + ## The users filter used in search queries to find the user profile based on input filled in login form. + ## Various placeholders are available in the user filter: + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username_attribute} is a mandatory placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## + ## Recommended settings are as follows: + ## - Microsoft Active Directory: (&({username_attribute}={input})(objectCategory=person)(objectClass=user)) + ## - OpenLDAP: + ## - (&({username_attribute}={input})(objectClass=person)) + ## - (&({username_attribute}={input})(objectClass=inetOrgPerson)) + ## + ## To allow sign in both with username and email, one can use a filter like + ## (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) + users_filter: "" + ## An additional dn to define the scope of groups. + additional_groups_dn: OU=Groups + ## The groups filter used in search queries to find the groups of the user. + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username} is a placeholder replace by the username stored in LDAP (based on `username_attribute`). + ## - {dn} is a matcher replaced by the user distinguished name, aka, user DN. + ## - {username_attribute} is a placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## - DON'T USE - {1} is an alias for {username} supported for backward compatibility but it will be deprecated in + ## later version, so please don't use it. + ## + ## If your groups use the `groupOfUniqueNames` structure use this instead: + ## (&(uniquemember={dn})(objectclass=groupOfUniqueNames)) + groups_filter: "" + ## The attribute holding the name of the group + group_name_attribute: "cn" + ## The attribute holding the mail address of the user. If multiple email addresses are defined for a user, only the + ## first one returned by the LDAP server is used. + mail_attribute: "mail" + ## The attribute holding the display name of the user. This will be used to greet an authenticated user. + display_name_attribute: "displayname" + ## The username of the admin user. + user: CN=admin,DC=example,DC=com + plain_password: "" + ## + ## File (Authentication Provider) + ## + ## With this backend, the users database is stored in a file which is updated when users reset their passwords. + ## Therefore, this backend is meant to be used in a dev environment and not in production since it prevents Authelia + ## to be scaled to more than one instance. The options under 'password' have sane defaults, and as it has security + ## implications it is highly recommended you leave the default values. Before considering changing these settings + ## please read the docs page below: + ## https://www.authelia.com/docs/configuration/authentication/file.html#password-hash-algorithm-tuning + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + file: + enabled: true + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + key_length: 32 + salt_length: 16 + memory: 1024 + parallelism: 8 +## +## Access Control Configuration +## +## Access control is a list of rules defining the authorizations applied for one resource to users or group of users. +## +## If 'access_control' is not defined, ACL rules are disabled and the 'bypass' rule is applied, i.e., access is allowed +## to anyone. Otherwise restrictions follow the rules defined. +## +## Note: One can use the wildcard * to match any subdomain. +## It must stand at the beginning of the pattern. (example: *.mydomain.com) +## +## Note: You must put patterns containing wildcards between simple quotes for the YAML to be syntactically correct. +## +## Definition: A 'rule' is an object with the following keys: 'domain', 'subject', 'policy' and 'resources'. +## +## - 'domain' defines which domain or set of domains the rule applies to. +## +## - 'subject' defines the subject to apply authorizations to. This parameter is optional and matching any user if not +## provided. If provided, the parameter represents either a user or a group. It should be of the form +## 'user:' or 'group:'. +## +## - 'policy' is the policy to apply to resources. It must be either 'bypass', 'one_factor', 'two_factor' or 'deny'. +## +## - 'resources' is a list of regular expressions that matches a set of resources to apply the policy to. This parameter +## is optional and matches any resource if not provided. +## +## Note: the order of the rules is important. The first policy matching (domain, resource, subject) applies. +access_control: + ## Default policy can either be 'bypass', 'one_factor', 'two_factor' or 'deny'. It is the policy applied to any + ## resource if there is no policy to be applied to the user. + default_policy: deny + networks_access_control: [] + # networks_access_control: + # - name: private + # networks: + # - 10.0.0.0/8 + # - 172.16.0.0/12 + # - 192.168.0.0/16 + # - name: vpn + # networks: + # - 10.9.0.0/16 + + rules: [] + # rules: + # - domain: public.example.com + # policy: bypass + # - domain: "*.example.com" + # policy: bypass + # methods: + # - OPTIONS + # - domain: secure.example.com + # policy: one_factor + # networks: + # - private + # - vpn + # - 192.168.1.0/24 + # - 10.0.0.1 + # - domain: + # - secure.example.com + # - private.example.com + # policy: two_factor + # - domain: singlefactor.example.com + # policy: one_factor + # - domain: "mx2.mail.example.com" + # subject: "group:admins" + # policy: deny + # - domain: "*.example.com" + # subject: + # - "group:admins" + # - "group:moderators" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/groups/dev/.*$" + # subject: "group:dev" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/users/john/.*$" + # subject: + # - ["group:dev", "user:john"] + # - "group:admins" + # policy: two_factor + # - domain: "{user}.example.com" + # policy: bypass +## +## Session Provider Configuration +## +## The session cookies identify the user once logged in. +## The available providers are: `memory`, `redis`. Memory is the provider unless redis is defined. +session: + ## The name of the session cookie. (default: authelia_session). + name: authelia_session + ## Sets the Cookie SameSite value. Possible options are none, lax, or strict. + ## Please read https://www.authelia.com/docs/configuration/session.html#same_site + same_site: lax + ## The time in seconds before the cookie expires and session is reset. + expiration: 1h + ## The inactivity time in seconds before the session is reset. + inactivity: 5m + ## The remember me duration. + ## Value is in seconds, or duration notation. Value of 0 disables remember me. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Longer periods are considered less secure because a stolen cookie will last longer giving attackers more time to + ## spy or attack. Currently the default is 1M or 1 month. + remember_me_duration: 1M +## +## Redis Provider +## +## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html +## +## The redis connection details +redisProvider: + port: 6379 + ## Optional username to be used with authentication. + # username: authelia + username: "" + ## This is the Redis DB Index https://redis.io/commands/select (sometimes referred to as database number, DB, etc). + database_index: 0 + ## The maximum number of concurrent active connections to Redis. + maximum_active_connections: 8 + ## The target number of idle connections to have open ready for work. Useful when opening connections is slow. + minimum_idle_connections: 0 + ## The Redis TLS configuration. If defined will require a TLS connection to the Redis instance(s). + tls: + enabled: false + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + ## Minimum TLS version for the connection. + minimum_version: TLS1.2 + ## The Redis HA configuration options. + ## This provides specific options to Redis Sentinel, sentinel_name must be defined (Master Name). + high_availability: + enabled: false + enabledSecret: false + ## Sentinel Name / Master Name + sentinel_name: mysentinel + ## The additional nodes to pre-seed the redis provider with (for sentinel). + ## If the host in the above section is defined, it will be combined with this list to connect to sentinel. + ## For high availability to be used you must have either defined; the host above or at least one node below. + nodes: [] + # nodes: + # - host: sentinel-0.databases.svc.cluster.local + # port: 26379 + # - host: sentinel-1.databases.svc.cluster.local + # port: 26379 + + ## Choose the host with the lowest latency. + route_by_latency: false + ## Choose the host randomly. + route_randomly: false +## +## Regulation Configuration +## +## This mechanism prevents attackers from brute forcing the first factor. It bans the user if too many attempts are done +## in a short period of time. +regulation: + ## The number of failed login attempts before user is banned. Set it to 0 to disable regulation. + max_retries: 3 + ## The time range during which the user can attempt login before being banned. The user is banned if the + ## authentication failed 'max_retries' times in a 'find_time' seconds window. Find Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + find_time: 2m + ## The length of time before a banned user can login again. Ban Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ban_time: 5m +## +## Storage Provider Configuration +## +## The available providers are: `local`, `mysql`, `postgres`. You must use one and only one of these providers. +storage: + ## + ## PostgreSQL (Storage Provider) + ## + postgres: + port: 5432 + database: authelia + username: authelia + sslmode: disable + timeout: 5s +## +## Notification Provider +## +## +## Notifications are sent to users when they require a password reset, a u2f registration or a TOTP registration. +## The available providers are: filesystem, smtp. You must use one and only one of these providers. +notifier: + ## You can disable the notifier startup check by setting this to true. + disable_startup_check: false + ## + ## File System (Notification Provider) + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + filesystem: + enabled: true + filename: /config/notification.txt + ## + ## SMTP (Notification Provider) + ## + ## Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate. + ## [Security] By default Authelia will: + ## - force all SMTP connections over TLS including unauthenticated connections + ## - use the disable_require_tls boolean value to disable this requirement + ## (only works for unauthenticated connections) + ## - validate the SMTP server x509 certificate during the TLS handshake against the hosts trusted certificates + ## (configure in tls section) + smtp: + enabled: false + enabledSecret: false + host: smtp.mail.svc.cluster.local + port: 25 + timeout: 5s + username: test + plain_password: test + sender: admin@example.com + ## HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost. + identifier: localhost + ## Subject configuration of the emails sent. + ## {title} is replaced by the text from the notifier + subject: "[Authelia] {title}" + ## This address is used during the startup check to verify the email configuration is correct. + ## It's not important what it is except if your email server only allows local delivery. + startup_check_address: test@authelia.com + disable_require_tls: false + disable_html_emails: false + tls: + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + ## Minimum TLS version for either StartTLS or SMTPS. + minimum_version: TLS1.2 +identity_providers: + oidc: + ## Enables this in the config map. Currently in beta stage. + ## See https://www.authelia.com/docs/configuration/identity-providers/oidc.html#roadmap + enabled: false + access_token_lifespan: 1h + authorize_code_lifespan: 1m + id_token_lifespan: 1h + refresh_token_lifespan: 90m + enable_client_debug_messages: false + ## SECURITY NOTICE: It's not recommended changing this option, and highly discouraged to have it below 8 for + ## security reasons. + minimum_parameter_entropy: 8 + clients: [] + # clients: + # - + ## The ID is the OpenID Connect ClientID which is used to link an application to a configuration. + # id: myapp +## The description to show to users when they end up on the consent screen. Defaults to the ID above. +# description: My Application + +## The client secret is a shared secret between Authelia and the consumer of this client. +# secret: apple123 + +## Sets the client to public. This should typically not be set, please see the documentation for usage. +# public: false + +## The policy to require for this client; one_factor or two_factor. +# authorization_policy: two_factor + +## Configures the consent mode; auto, explicit or implicit +# consent_mode: auto + +## Audience this client is allowed to request. +# audience: [] + +## Scopes this client is allowed to request. +# scopes: +# - openid +# - profile +# - email +# - groups + +## Redirect URI's specifies a list of valid case-sensitive callbacks for this client. +# redirect_uris: +# - https://oidc.example.com/oauth2/callback + +## Grant Types configures which grants this client can obtain. +## It's not recommended to configure this unless you know what you're doing. +# grant_types: +# - refresh_token +# - authorization_code + +## Response Types configures which responses this client can be sent. +## It's not recommended to configure this unless you know what you're doing. +# response_types: +# - code + +## Response Modes configures which response modes this client supports. +## It's not recommended to configure this unless you know what you're doing. +# response_modes: +# - form_post +# - query +# - fragment + +## The algorithm used to sign userinfo endpoint responses for this client, either none or RS256. +# userinfo_signing_algorithm: none + +portal: + open: + enabled: true + +ingress: + main: + required: true diff --git a/premium/authelia/23.5.5/questions.yaml b/premium/authelia/23.5.5/questions.yaml new file mode 100755 index 00000000000..d6d169e035f --- /dev/null +++ b/premium/authelia/23.5.5/questions.yaml @@ -0,0 +1,4323 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 2 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: domain + group: "App Configuration" + label: "Domain" + description: "The highest domain level possible, for example: domain.com when using app.domain.com" + schema: + type: string + default: "" + required: true + - variable: default_redirection_url + group: "App Configuration" + label: "Default Redirection URL" + description: "If user tries to authenticate without any referrer, this is used" + schema: + type: string + default: "" + valid_chars: '^https?:\/\/(.*)' + - variable: theme + group: "App Configuration" + label: "Theme" + schema: + type: string + default: "auto" + enum: + - value: "auto" + description: "auto" + - value: "light" + description: "light" + - value: "grey" + description: "grey" + - value: "dark" + description: "dark" + - variable: log + group: "App Configuration" + label: "Log Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log Level" + schema: + type: string + default: "info" + enum: + - value: "info" + description: "info" + - value: "debug" + description: "debug" + - value: "trace" + description: "trace" + - variable: format + label: "Log Format" + schema: + type: string + default: "text" + enum: + - value: "json" + description: "json" + - value: "text" + description: "text" + - variable: server + group: "App Configuration" + label: "Server Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: write_buffer_size + label: "Write Buffer Size" + description: "Configures the maximum response size. The default of 4096 is generally sufficient for most use cases." + schema: + type: int + default: 4096 + - variable: read_buffer_size + label: "Read Buffer Size" + description: "Configures the maximum request size. The default of 4096 is generally sufficient for most use cases." + schema: + type: int + default: 4096 + - variable: totp + group: "App Configuration" + label: "TOTP Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: issuer + label: "Issuer" + description: "The issuer name displayed in the Authenticator application of your choice" + schema: + type: string + default: "" + - variable: period + label: "Period" + description: "The period in seconds a one-time password is current for" + schema: + type: int + default: 30 + - variable: skew + label: "skew" + description: "Controls number of one-time passwords either side of the current one that are valid." + schema: + type: int + default: 1 + - variable: password_policy + group: "App Configuration" + label: "Password Policy Configuration" + description: "Authelia allows administrators to configure an enforced password policy. Choose one of Standard or zxcvbn and not both, refer to upstream docs for more info " + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: standard + label: Standard + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: min_length + label: "Minimum Password Length" + description: "Minimum Password Length" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 8 + - variable: max_length + label: "Max Passsword Length" + description: "Max Password Length" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 0 + - variable: require_uppercase + label: "Require Upppercase" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_lowercase + label: "Require Lowercase" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_number + label: "Require Numbers" + description: "Require Numbers in the password" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_special + label: "Require Special Characters" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: zxcvbn + label: zxcvbn + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + required: true + - variable: min_score + label: "Min Score" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 3 + - variable: duo_api + group: "App Configuration" + label: "DUO API Configuration" + description: "Parameters used to contact the Duo API." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostname + label: "Hostname" + schema: + type: string + required: true + default: "" + - variable: integration_key + label: "integration_key" + schema: + type: string + default: "" + required: true + - variable: plain_api_key + label: "plain_api_key" + schema: + type: string + default: "" + required: true + - variable: session + group: "App Configuration" + label: "Session Provider" + description: "The session cookies identify the user once logged in." + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Cookie Name" + description: | + The name of the session cookie. By default this is set to authelia_session. + It’s mostly useful to change this if you are doing development or running multiple instances of Authelia. + schema: + type: string + required: true + default: "authelia_session" + - variable: same_site + label: "SameSite Value" + description: | + You can read about the SameSite cookie in detail on the MDN. In short setting SameSite to Lax is generally + the most desirable option for Authelia. None is not recommended unless you absolutely know what you’re doing + and trust all the protected apps. Strict is not going to work in many use cases and we have not tested it in + this state but it’s available as an option anyway. + schema: + type: string + default: "lax" + enum: + - value: "lax" + description: "lax" + - value: "strict" + description: "strict" + - variable: expiration + label: "Expiration Time" + description: | + The period of time before the cookie expires and the session is destroyed. This is overriden by + remember_me_duration when the remember me box is checked. + schema: + type: string + default: "1h" + required: true + - variable: inactivity + label: "Inactivity Time" + description: | + The period of time the user can be inactive for until the session is destroyed when the remember me box is + not checked or is otherwise disabled. Useful if you want long session timers but don’t want unused devices to be vulnerable. + schema: + type: string + default: "5m" + required: true + - variable: remember_me_duration + label: "Remember-Me duration" + description: | + The period of time before the cookie expires and the session is destroyed when the remember me box is checked, a user + selecting this option negates the inactivity timeout. Setting this to -1 disables this feature entirely. + schema: + type: string + default: "5M" + required: true + - variable: regulation + group: "App Configuration" + label: "Regulation Configuration" + description: "This mechanism prevents attackers from brute forcing the first factor." + schema: + additional_attrs: true + type: dict + attrs: + - variable: max_retries + label: "Maximum Retries" + description: "The number of failed login attempts before user is banned. Set it to 0 to disable regulation." + schema: + type: int + default: 3 + - variable: find_time + label: "Find Time" + description: | + The period of time analyzed for failed attempts. For example if you set max_retries to 3 and find_time to + 2m this means the user must have 3 failed logins in 2 minutes. + schema: + type: string + default: "2m" + required: true + - variable: ban_time + label: "Ban Duration" + description: | + The period of time the user is banned for after meeting the max_retries and find_time configuration. + After this duration the account will be able to login again. + schema: + type: string + default: "5m" + required: true + - variable: authentication_backend + group: "App Configuration" + label: "Authentication Backend Provider" + description: | + Used for verifying user passwords and retrieve information such as email + address and groups users belong to. + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_reset_password + label: "Disable Reset Password" + description: "Disable both the HTML element and the API for reset password functionality" + schema: + type: boolean + default: false + - variable: refresh_interval + label: "Reset Interval" + description: "The amount of time to wait before we refresh data from the authentication backend" + schema: + type: string + default: "5m" + required: true + - variable: ldap + label: "LDAP backend configuration" + description: "Used for verifying user passwords and retrieve information such as email address and groups users belong to" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: implementation + label: "Implementation" + description: "The LDAP implementation, this affects elements like the attribute utilized for resetting a password" + schema: + type: string + default: "custom" + enum: + - value: "activedirectory" + description: "Active Directory" + - value: "custom" + description: "Custom" + - variable: url + label: "URL" + description: "The url to the ldap server. Format: ://
[:]" + schema: + type: string + default: "ldap://openldap.default.svc.cluster.local" + required: true + - variable: timeout + label: "Connection Timeout" + schema: + type: string + default: "5s" + required: true + - variable: start_tls + label: "Start TLS" + description: "Use StartTLS with the LDAP connection" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: base_dn + label: "Base DN" + description: "The base dn for every LDAP query." + schema: + type: string + default: "DC=example,DC=com" + required: true + - variable: username_attribute + label: "Username Attribute" + description: "The attribute holding the username of the user" + schema: + type: string + default: "uid" + required: true + - variable: additional_users_dn + label: "Additional Users DN" + description: "An additional dn to define the scope to all users." + schema: + type: string + default: "OU=people" + required: true + - variable: users_filter + label: "Users Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: additional_groups_dn + label: "Additional Groups DN" + description: "An additional dn to define the scope of groups." + schema: + type: string + default: "OU=Groups" + required: true + - variable: groups_filter + label: "Groups Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: group_name_attribute + label: "Group name Attribute" + description: "The attribute holding the name of the group" + schema: + type: string + default: "cn" + required: true + - variable: mail_attribute + label: "Mail Attribute" + description: "The attribute holding the primary mail address of the user" + schema: + type: string + default: "mail" + required: true + - variable: display_name_attribute + label: "Display Name Attribute" + description: "he attribute holding the display name of the user. This will be used to greet an authenticated user." + schema: + type: string + default: "displayName" + - variable: user + label: "Admin User" + description: "The username of the admin user used to connect to LDAP." + schema: + type: string + default: "CN=admin,ou=people,DC=example,DC=com" + required: true + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + required: true + - variable: file + label: "File backend configuration" + description: "With this backend, the users database is stored in a file which is updated when users reset their passwords." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: path + label: "Path" + schema: + type: string + default: "/config/users_database.yml" + required: true + - variable: password + label: "Password Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: algorithm + label: "Algorithm" + schema: + type: string + default: "argon2id" + enum: + - value: "argon2id" + description: "argon2id" + - value: "sha512" + description: "sha512" + - variable: iterations + label: "Iterations" + schema: + type: int + default: 1 + required: true + - variable: key_length + label: "Key Length" + schema: + type: int + default: 32 + required: true + - variable: salt_length + label: "Salt Length" + schema: + type: int + default: 16 + required: true + - variable: memory + label: "Memory" + schema: + type: int + default: 1024 + required: true + - variable: parallelism + label: "Parallelism" + schema: + type: int + default: 8 + required: true + - variable: notifier + group: "App Configuration" + label: "Notifier Configuration" + description: "Notifications are sent to users when they require a password reset, a u2f registration or a TOTP registration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_startup_check + label: "Disable Startup Check" + schema: + type: boolean + default: false + - variable: filesystem + label: "Filesystem Provider" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filename + label: "File Path" + schema: + type: string + default: "/config/notification.txt" + required: true + - variable: smtp + label: "SMTP Provider" + description: "Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: host + label: "Host" + schema: + type: string + default: "smtp.mail.svc.cluster.local" + required: true + - variable: port + label: "Port" + schema: + type: int + default: 25 + required: true + - variable: timeout + label: "Timeout" + schema: + type: string + default: "5s" + required: true + - variable: username + label: "Username" + schema: + type: string + default: "" + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + - variable: sender + label: "Sender" + schema: + type: string + default: "" + required: true + - variable: identifier + label: "Identifier" + description: "HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost." + schema: + type: string + default: "localhost" + required: true + - variable: subject + label: "Subject" + description: "Subject configuration of the emails sent, {title} is replaced by the text from the notifier" + schema: + type: string + default: "[Authelia] {title}" + required: true + - variable: startup_check_address + label: "Startup Check Address" + description: "This address is used during the startup check to verify the email configuration is correct." + schema: + type: string + default: "test@authelia.com" + required: true + - variable: disable_require_tls + label: "Disable Require TLS" + schema: + type: boolean + default: false + - variable: disable_html_emails + label: "Disable HTML emails" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: access_control + group: "App Configuration" + label: "Access Control Configuration" + description: "Access control is a list of rules defining the authorizations applied for one resource to users or group of users." + schema: + additional_attrs: true + type: dict + attrs: + - variable: default_policy + label: "Default Policy" + description: | + The default policy defines the policy applied if no rules section apply to the information known about the request. + It is recommended that this is configured to deny for security reasons. Sites which you do not wish to secure at all + with Authelia should not be configured in your reverse proxy to perform authentication with Authelia at all for performance reasons. + schema: + type: string + default: "deny" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + - variable: networks_access_control + label: "Networks" + schema: + type: list + default: [] + items: + - variable: networkItem + label: "Network Item" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "network" + schema: + type: string + default: "" + required: true + - variable: rules + label: "Rules" + schema: + type: list + default: [] + items: + - variable: rulesItem + label: "Rule" + schema: + additional_attrs: true + type: dict + attrs: + - variable: domain + label: "Domains" + description: "Defines which domain or set of domains the rule applies to." + schema: + type: list + default: [] + items: + - variable: domainEntry + label: "Domain" + schema: + type: string + default: "" + required: true + - variable: domain_regex + label: "Domains RegEx" + description: "defines which domain or set of domains the rule applies to using regular expressions." + schema: + type: list + default: [] + items: + - variable: domainRegexEntry + label: "Domain RegEx" + schema: + type: string + default: "" + required: true + - variable: policy + label: "Policy" + description: | + The specific policy to apply to the selected rule. This is not criteria for a match, this is the + action to take when a match is made. + schema: + type: string + default: "two_factor" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + - variable: subject + label: "Subject" + description: | + This criteria matches identifying characteristics about the subject. Currently this is either + user or groups the user belongs to. This allows you to effectively control exactly what each user is + authorized to access or to specifically require two-factor authentication to specific users. Subjects + are prefixed with either user: or group: to identify which part of the identity to check. + schema: + type: list + default: [] + items: + - variable: subjectitem + label: "Subject" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "Network" + schema: + type: string + default: "" + required: true + - variable: resources + label: "Resources" + description: "is a list of regular expressions that matches a set of resources to apply the policy to" + schema: + type: list + default: [] + items: + - variable: resource + label: "Resource" + schema: + type: string + default: "" + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9091 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: cnpg + group: Postgresql + label: "CloudNative-PG (CNPG)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: mode + label: Mode + description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.' + schema: + type: string + default: "standalone" + enum: + - value: standalone + description: standalone + - value: replica + description: replica + - value: recovery + description: recovery + - variable: cluster + label: "Cluster Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 1 + - variable: singleNode + label: singleNode + schema: + type: boolean + default: true + hidden: true + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walStorage + label: "WAL Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: monitoring + label: "Monitoring Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: disableDefaultQueries + label: "disableDefaultQueries" + schema: + type: boolean + default: false + - variable: pooler + label: "Pooler Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: instances + label: Instances + schema: + type: int + show_if: [["enabled", "=", true]] + default: 1 + - variable: createRO + label: "Create ReadOnly Instance" + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: false + - variable: backups + label: "Backup Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: destinationPath + label: "destinationPath" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: retentionPolicy + label: "retentionPolicy" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "30d" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: recovery + label: "Recovery Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: method + label: "method" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "object_store" + - variable: backupName + label: "backupName" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: identity_providers + group: "Advanced" + label: "Authelia Identity Providers (BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: oidc + label: "OpenID Connect(BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: access_token_lifespan + label: "Access Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: authorize_code_lifespan + label: "Authorize Code Lifespan" + schema: + type: string + default: "1m" + required: true + - variable: id_token_lifespan + label: "ID Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: refresh_token_lifespan + label: "Refresh Token Lifespan" + schema: + type: string + default: "90m" + required: true + - variable: enable_client_debug_messages + label: "Enable Client Debug Messages" + schema: + type: boolean + default: false + - variable: clients + label: "Clients" + schema: + type: list + default: [] + items: + - variable: clientEntry + label: "Client" + schema: + additional_attrs: true + type: dict + attrs: + - variable: id + label: "ID/Name" + description: "The ID is the OpenID Connect ClientID which is used to link an application to a configuration." + schema: + type: string + default: "myapp" + required: true + - variable: description + label: "Description" + description: "The description to show to users when they end up on the consent screen. Defaults to the ID above." + schema: + type: string + default: "My Application" + required: true + - variable: secret + label: "Secret" + description: "The client secret is a shared secret between Authelia and the consumer of this client." + schema: + type: string + default: "" + required: true + - variable: public + label: "public" + description: "Sets the client to public. This should typically not be set, please see the documentation for usage." + schema: + type: boolean + default: false + - variable: authorization_policy + label: "Authorization Policy" + description: "The policy to require for this client; one_factor or two_factor." + schema: + type: string + default: "two_factor" + enum: + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - variable: consent_mode + label: "Consent Mode" + description: | + Configures the consent mode. This can be set to auto (default), explicit (consent required every time) or + implicit (automatically assumes consent for every authorization, never asking the user if they wish to give consent.) + schema: + type: string + default: "auto" + enum: + - value: "auto" + description: "auto" + - value: "explicit" + description: "explicit" + - value: "implicit" + description: "implicit" + - variable: userinfo_signing_algorithm + label: "Userinfo Signing Algorithm" + description: "The algorithm used to sign userinfo endpoint responses for this client, either none or RS256." + schema: + type: string + default: "none" + enum: + - value: "none" + description: "none" + - value: "RS256" + description: "RS256" + - variable: audience + label: "Audience" + description: "Audience this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: audienceEntry + label: "" + schema: + type: string + default: "" + required: true + - variable: scopes + label: "Scopes" + description: "Scopes this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: ScopeEntry + label: "Scope" + schema: + type: string + default: "openid" + required: true + - variable: redirect_uris + label: "redirect_uris" + description: "Redirect URI's specifies a list of valid case-sensitive callbacks for this client." + schema: + type: list + default: [] + items: + - variable: uriEntry + label: "Url" + schema: + type: string + default: "https://oidc.example.com/oauth2/callback" + required: true + - variable: grant_types + description: "Grant Types configures which grants this client can obtain." + label: "grant_types" + schema: + type: list + default: [] + items: + - variable: grantEntry + label: "Grant" + schema: + type: string + default: "refresh_token" + required: true + - variable: response_types + description: "Response Types configures which responses this client can be sent." + label: "response_types" + schema: + type: list + default: [] + items: + - variable: responseEntry + label: "type" + schema: + type: string + default: "code" + required: true + - variable: response_modes + description: "Response Modes configures which response modes this client supports." + label: "response_modes" + schema: + type: list + default: [] + items: + - variable: modeEntry + label: "Mode" + schema: + type: string + default: "form_post" + required: true + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/premium/authelia/23.5.5/templates/NOTES.txt b/premium/authelia/23.5.5/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/authelia/23.5.5/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/authelia/23.5.5/templates/_configmap.tpl b/premium/authelia/23.5.5/templates/_configmap.tpl new file mode 100644 index 00000000000..c2797c8aaaa --- /dev/null +++ b/premium/authelia/23.5.5/templates/_configmap.tpl @@ -0,0 +1,376 @@ +{{/* Define the configmap */}} +{{- define "authelia.configmap.paths" -}} +enabled: true +data: + AUTHELIA_SERVER_DISABLE_HEALTHCHECK: "true" + AUTHELIA_JWT_SECRET_FILE: "/secrets/JWT_TOKEN" + AUTHELIA_SESSION_SECRET_FILE: "/secrets/SESSION_ENCRYPTION_KEY" + AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: "/secrets/ENCRYPTION_KEY" + AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: "/secrets/STORAGE_PASSWORD" + {{- if .Values.authentication_backend.ldap.enabled }} + AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE: "/secrets/LDAP_PASSWORD" + {{- end }} + {{- if .Values.notifier.smtp.enabled }} + AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: "/secrets/SMTP_PASSWORD" + {{- end }} + AUTHELIA_SESSION_REDIS_PASSWORD_FILE: "/secrets/REDIS_PASSWORD" + {{- if .Values.redisProvider.high_availability.enabled }} + AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE: "/secrets/REDIS_SENTINEL_PASSWORD" + {{- end }} + {{- if .Values.duo_api.enabled }} + AUTHELIA_DUO_API_SECRET_KEY_FILE: "/secrets/DUO_API_KEY" + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET_FILE: "/secrets/OIDC_HMAC_SECRET" + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: "/secrets/OIDC_PRIVATE_KEY" + {{- end }} + +{{- end -}} + +{{- define "authelia.configmap.configfile" -}} +enabled: true +data: + configuration.yaml: | + --- + theme: {{ .Values.theme | default "light" }} + default_redirection_url: {{ default (printf "https://www.%s" .Values.domain) .Values.default_redirection_url }} + ntp: + address: {{ .Values.ntp.address | default "time.cloudflare.com:123" }} + version: {{ .Values.ntp.version | default 4 }} + max_desync: {{ .Values.ntp.max_desync | default "3s" }} + disable_startup_check: {{ .Values.ntp.disable_startup_check | default false }} + disable_failure: {{ .Values.ntp.disable_failure | default true }} + server: + host: 0.0.0.0 + port: {{ .Values.server.port | default 9091 }} + {{- if ne "" (.Values.server.path | default "") }} + path: {{ .Values.server.path }} + {{- end }} + buffers: + write: {{ .Values.server.write_buffer_size | default 4096 }} + read: {{ .Values.server.read_buffer_size | default 4096 }} + enable_pprof: {{ .Values.server.enable_pprof | default false }} + enable_expvars: {{ .Values.server.enable_expvars | default false }} + log: + level: {{ .Values.log.level | default "info" }} + format: {{ .Values.log.format | default "text" }} + {{- if ne "" (.Values.log.file_path | default "") }} + file_path: {{ .Values.log.file_path }} + keep_stdout: true + {{- end }} + totp: + issuer: {{ .Values.totp.issuer | default .Values.domain }} + period: {{ .Values.totp.period | default 30 }} + skew: {{ .Values.totp.skew | default 1 }} + {{- if .Values.password_policy.enabled }} + password_policy: + standard: + enabled: {{ .Values.password_policy.standard.enabled | default false }} + min_length: {{ .Values.password_policy.standard.min_length | default 8 }} + max_length: {{ .Values.password_policy.standard.max_length | default 0 }} + require_uppercase: {{ .Values.password_policy.standard.require_uppercase | default false }} + require_lowercase: {{ .Values.password_policy.standard.require_lowercase | default false }} + require_number: {{ .Values.password_policy.standard.require_number | default false }} + require_special: {{ .Values.password_policy.standard.require_special | default false }} + zxcvbn: + enabled: {{ .Values.password_policy.zxcvbn.enabled | default false }} + min_score: {{ .Values.password_policy.zxcvbn.min_score | default 3 }} + {{- end -}} + {{- if .Values.duo_api.enabled }} + duo_api: + hostname: {{ .Values.duo_api.hostname }} + integration_key: {{ .Values.duo_api.integration_key }} + {{- end -}} + {{- with $auth := .Values.authentication_backend }} + authentication_backend: + password_reset: + disable: {{ $auth.disable_reset_password }} + {{- if $auth.file.enabled }} + file: + path: {{ $auth.file.path }} + password: + {{- $p := $auth.file.password -}} + {{- if $p.algorithm }} + algorithm: {{ $p.algorithm }} + {{- end -}} + {{- if $p.iterations }} + iterations: {{ $p.iterations }} + {{- end -}} + {{- if $p.key_length }} + key_length: {{ $p.key_length }} + {{- end -}} + {{- if $p.salt_length }} + salt_length: {{ $p.salt_length }} + {{- end -}} + {{- if $p.memory }} + memory: {{ $p.memory }} + {{- end -}} + {{- if $p.parallelism }} + parallelism: {{ $p.parallelism }} + {{- end -}} + {{- end -}} + {{- if $auth.ldap.enabled }} + ldap: + implementation: {{ $auth.ldap.implementation | default "custom" }} + url: {{ $auth.ldap.url }} + timeout: {{ $auth.ldap.timeout | default "5s" }} + start_tls: {{ $auth.ldap.start_tls }} + tls: + {{- if hasKey $auth.ldap.tls "server_name" }} + server_name: {{ $auth.ldap.tls.server_name | default $auth.ldap.host }} + {{- end }} + minimum_version: {{ $auth.ldap.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $auth.ldap.tls.skip_verify | default false }} + {{- if $auth.ldap.base_dn }} + base_dn: {{ $auth.ldap.base_dn }} + {{- end -}} + {{- if $auth.ldap.username_attribute }} + username_attribute: {{ $auth.ldap.username_attribute }} + {{- end -}} + {{- if $auth.ldap.additional_users_dn }} + additional_users_dn: {{ $auth.ldap.additional_users_dn }} + {{- end -}} + {{- if $auth.ldap.users_filter }} + users_filter: {{ $auth.ldap.users_filter }} + {{- end -}} + {{- if $auth.ldap.additional_groups_dn }} + additional_groups_dn: {{ $auth.ldap.additional_groups_dn }} + {{- end -}} + {{- if $auth.ldap.groups_filter }} + groups_filter: {{ $auth.ldap.groups_filter }} + {{- end -}} + {{- if $auth.ldap.group_name_attribute }} + group_name_attribute: {{ $auth.ldap.group_name_attribute }} + {{- end -}} + {{- if $auth.ldap.mail_attribute }} + mail_attribute: {{ $auth.ldap.mail_attribute }} + {{- end -}} + {{- if $auth.ldap.display_name_attribute }} + display_name_attribute: {{ $auth.ldap.display_name_attribute }} + {{- end }} + user: {{ $auth.ldap.user }} + {{- end -}} + {{- end -}} + {{- with $session := .Values.session }} + session: + name: {{ $session.name | default "authelia_session" }} + domain: {{ required "A valid .Values.domain entry required!" $.Values.domain }} + same_site: {{ $session.same_site | default "lax" }} + expiration: {{ $session.expiration | default "1M" }} + inactivity: {{ $session.inactivity | default "5m" }} + remember_me_duration: {{ $session.remember_me_duration | default "1M" }} + {{- end }} + redis: + host: {{ .Values.redis.creds.plain }} + {{- with $redis := .Values.redisProvider }} + port: {{ $redis.port | default 6379 }} + {{- if not (eq $redis.username "") }} + username: {{ $redis.username }} + {{- end }} + maximum_active_connections: {{ $redis.maximum_active_connections | default 8 }} + minimum_idle_connections: {{ $redis.minimum_idle_connections | default 0 }} + {{- if $redis.tls.enabled }} + tls: + server_name: {{ $redis.tls.server_name }} + minimum_version: {{ $redis.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $redis.tls.skip_verify }} + {{- end }} + {{- if $redis.high_availability.enabled }} + high_availability: + sentinel_name: {{ $redis.high_availability.sentinel_name }} + {{- if $redis.high_availability.nodes }} + nodes: + {{- range $node := $redis.high_availability.nodes }} + - host: {{ $node.host }} + port: {{ $node.port | default 26379 }} + {{- end -}} + {{- end }} + route_by_latency: {{ $redis.high_availability.route_by_latency }} + route_randomly: {{ $redis.high_availability.route_randomly }} + {{- end }} + {{- end }} + regulation: + max_retries: {{ .Values.regulation.max_retries | default 3 }} + find_time: {{ .Values.regulation.find_time | default "1m" }} + ban_time: {{ .Values.regulation.ban_time | default "5m" }} + storage: + postgres: + host: {{ $.Values.cnpg.main.creds.host }} + {{- with $storage := .Values.storage }} + port: {{ $storage.postgres.port | default 5432 }} + database: {{ $storage.postgres.database | default "authelia" }} + username: {{ $storage.postgres.username | default "authelia" }} + timeout: {{ $storage.postgres.timeout | default "5s" }} + ssl: + mode: {{ $storage.postgres.sslmode | default "disable" }} + {{- end }} + {{- with $notifier := .Values.notifier }} + notifier: + disable_startup_check: {{ $.Values.notifier.disable_startup_check }} + {{- if $notifier.filesystem.enabled }} + filesystem: + filename: {{ $notifier.filesystem.filename }} + {{- end }} + {{- if $notifier.smtp.enabled }} + smtp: + host: {{ $notifier.smtp.host }} + port: {{ $notifier.smtp.port | default 25 }} + timeout: {{ $notifier.smtp.timeout | default "5s" }} + {{- with $notifier.smtp.username }} + username: {{ . }} + {{- end }} + sender: {{ $notifier.smtp.sender | quote }} + identifier: {{ $notifier.smtp.identifier | quote }} + subject: {{ $notifier.smtp.subject | quote }} + startup_check_address: {{ $notifier.smtp.startup_check_address | quote }} + disable_require_tls: {{ $notifier.smtp.disable_require_tls }} + disable_html_emails: {{ $notifier.smtp.disable_html_emails }} + tls: + server_name: {{ $notifier.smtp.tls.server_name | default $notifier.smtp.host }} + minimum_version: {{ $notifier.smtp.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $notifier.smtp.tls.skip_verify | default false }} + {{- end }} + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + identity_providers: + oidc: + access_token_lifespan: {{ .Values.identity_providers.oidc.access_token_lifespan | default "1h" }} + authorize_code_lifespan: {{ .Values.identity_providers.oidc.authorize_code_lifespan | default "1m" }} + id_token_lifespan: {{ .Values.identity_providers.oidc.id_token_lifespan | default "1h" }} + refresh_token_lifespan: {{ .Values.identity_providers.oidc.refresh_token_lifespan | default "90m" }} + enable_client_debug_messages: {{ .Values.identity_providers.oidc.enable_client_debug_messages | default false }} + minimum_parameter_entropy: {{ .Values.identity_providers.oidc.minimum_parameter_entropy | default 8 }} + {{- if .Values.identity_providers.oidc.clients }} + clients: + {{- range $client := .Values.identity_providers.oidc.clients }} + - id: {{ $client.id }} + description: {{ $client.description | default $client.id }} + secret: {{ $client.secret | default (randAlphaNum 128) }} + {{- if $client.public }} + public: {{ $client.public }} + {{- end }} + authorization_policy: {{ $client.authorization_policy | default "two_factor" }} + consent_mode: {{ $client.consent_mode | default "auto" }} + redirect_uris: + {{- range $client.redirect_uris }} + - {{ . }} + {{- end }} + {{- if $client.audience }} + audience: + {{- range $client.audience }} + - {{ . }} + {{- end }} + {{- end }} + scopes: + {{- range ($client.scopes | default (list "openid" "profile" "email" "groups")) }} + - {{ . }} + {{- end }} + grant_types: + {{- range ($client.grant_types | default (list "refresh_token" "authorization_code")) }} + - {{ . }} + {{- end }} + response_types: + {{- range ($client.response_types | default (list "code")) }} + - {{ . }} + {{- end }} + {{- if $client.response_modes }} + response_modes: + {{- range $client.response_modes }} + - {{ . }} + {{- end }} + {{- end }} + userinfo_signing_algorithm: {{ $client.userinfo_signing_algorithm | default "none" }} + {{- end }} + {{- end }} + {{- end }} + access_control: + {{- if not .Values.access_control.rules }} + {{- if (eq .Values.access_control.default_policy "bypass") }} + default_policy: one_factor + {{- else if (eq .Values.access_control.default_policy "deny") }} + default_policy: two_factor + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + + {{- if and .Values.access_control.networks (not .Values.access_control.networks_access_control) -}} + {{- fail "Please change [.Values.access_control.networks] to [.Values.access_control.networks_access_control]" -}} + {{- end -}} + {{- if not .Values.access_control.networks_access_control }} + networks: [] + {{- else }} + networks: + {{- range $net := .Values.access_control.networks_access_control }} + - name: {{ $net.name }} + networks: + {{- range $net.networks }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + + {{- if not .Values.access_control.rules }} + rules: [] + {{- else }} + rules: + {{- range $rule := .Values.access_control.rules }} + {{- if $rule.domain }} + - domain: + {{- if kindIs "string" $rule.domain }} + - {{ $rule.domain | squote }} + {{- else -}} + {{- range $rule.domain }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end -}} + {{- if $rule.domain_regex }} + domain_regex: + {{- if kindIs "string" $rule.domain_regex }} + - {{ $rule.domain_regex | squote }} + {{- else -}} + {{- range $rule.domain_regex }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- with $rule.policy }} + policy: {{ . }} + {{- end -}} + {{- if $rule.networks }} + networks: + {{- if kindIs "string" $rule.networks }} + - {{ $rule.networks | squote }} + {{- else -}} + {{- range $rule.networks }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- if $rule.subject }} + subject: + {{- if kindIs "string" $rule.subject }} + - {{ $rule.subject | squote }} + {{- else -}} + {{- range $rule.subject }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- if $rule.resources }} + resources: + {{- if kindIs "string" $rule.resources }} + - {{ $rule.resources | squote }} + {{- else -}} + {{- range $rule.resources }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + ... +{{- end -}} diff --git a/premium/authelia/23.5.5/templates/_secrets.tpl b/premium/authelia/23.5.5/templates/_secrets.tpl new file mode 100644 index 00000000000..4445f29e909 --- /dev/null +++ b/premium/authelia/23.5.5/templates/_secrets.tpl @@ -0,0 +1,53 @@ +{{/* Define the secrets */}} +{{- define "authelia.secrets" -}} +{{- $basename := include "tc.v1.common.lib.chart.names.fullname" $ -}} +{{- $fetchname := printf "%s-authelia-secrets" $basename -}} + +{{/* Initialize all keys */}} +{{- $oidckey := genPrivateKey "rsa" }} +{{- $oidcsecret := randAlphaNum 32 }} +{{- $jwtsecret := randAlphaNum 50 }} +{{- $sessionsecret := randAlphaNum 50 }} +{{- $encryptionkey := randAlphaNum 100 }} + +enabled: true +data: + {{ with (lookup "v1" "Secret" .Release.Namespace $fetchname) }} + {{/* Get previous values and decode */}} + {{ $sessionsecret = (index .data "SESSION_ENCRYPTION_KEY") | b64dec }} + {{ $jwtsecret = (index .data "JWT_TOKEN") | b64dec }} + {{ $encryptionkey = (index .data "ENCRYPTION_KEY") | b64dec }} + + {{/* Check if those keys ever existed. as OIDC is optional */}} + {{ if and (hasKey .data "OIDC_PRIVATE_KEY") (hasKey .data "OIDC_HMAC_SECRET") }} + {{ $oidckey = (index .data "OIDC_PRIVATE_KEY") | b64dec }} + {{ $oidcsecret = (index .data "OIDC_HMAC_SECRET") | b64dec }} + {{ end }} + {{ end }} + SESSION_ENCRYPTION_KEY: {{ $sessionsecret }} + JWT_TOKEN: {{ $jwtsecret }} + ENCRYPTION_KEY: {{ $encryptionkey }} + + {{- if .Values.authentication_backend.ldap.enabled }} + LDAP_PASSWORD: {{ .Values.authentication_backend.ldap.plain_password | quote }} + {{- end }} + + {{- if and .Values.notifier.smtp.enabled .Values.notifier.smtp.plain_password }} + SMTP_PASSWORD: {{ .Values.notifier.smtp.plain_password | quote }} + {{- end }} + + {{- if .Values.duo_api.enabled }} + DUO_API_KEY: {{ .Values.duo_api.plain_api_key | quote }} + {{- end }} + + STORAGE_PASSWORD: {{ $.Values.cnpg.main.creds.password | trimAll "\"" }} + + REDIS_PASSWORD: {{ .Values.redis.creds.redisPassword | trimAll "\"" }} + {{- if .Values.redisProvider.high_availability.enabled }} + REDIS_SENTINEL_PASSWORD: {{ .Values.redis.sentinelPassword | trimAll "\"" }} + {{- end }} + + OIDC_PRIVATE_KEY: | + {{- $oidckey | nindent 4 }} + OIDC_HMAC_SECRET: {{ $oidcsecret }} +{{- end -}} diff --git a/premium/authelia/23.5.5/templates/common.yaml b/premium/authelia/23.5.5/templates/common.yaml new file mode 100644 index 00000000000..54e288e852c --- /dev/null +++ b/premium/authelia/23.5.5/templates/common.yaml @@ -0,0 +1,77 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for authelia */}} +{{- $configmapPaths := include "authelia.configmap.paths" . | fromYaml -}} +{{- if $configmapPaths -}} + {{- $_ := set .Values.configmap "authelia-paths" $configmapPaths -}} +{{- end -}} + +{{- $configmapFile := include "authelia.configmap.configfile" . | fromYaml -}} +{{- if $configmapFile -}} + {{- $_ := set .Values.configmap "authelia-configfile" $configmapFile -}} +{{- end -}} + +{{/* Render secrets for authelia */}} +{{- $secret := include "authelia.secrets" . | fromYaml -}} +{{- if $secret -}} + {{- $_ := set .Values.secret "authelia-secrets" $secret -}} +{{- end -}} + +{{/* Append the general configMap volume to the volumes */}} +{{- define "authelia.configmapVolume" -}} +enabled: true +mountPath: /configuration.yaml +subPath: configuration.yaml +readOnly: true +type: "configmap" +objectName: authelia-configfile +{{- end -}} + +{{/* Append the general secret volumes to the volumes */}} +{{- define "authelia.secretVolumes" -}} +enabled: true +mountPath: "/secrets" +readOnly: true +type: "secret" +objectName: authelia-secrets +items: + - key: "JWT_TOKEN" + path: JWT_TOKEN + - key: "SESSION_ENCRYPTION_KEY" + path: SESSION_ENCRYPTION_KEY + - key: "ENCRYPTION_KEY" + path: ENCRYPTION_KEY + - key: "STORAGE_PASSWORD" + path: STORAGE_PASSWORD + {{- if .Values.authentication_backend.ldap.enabled }} + - key: "LDAP_PASSWORD" + path: LDAP_PASSWORD + {{- end }} + {{- if and .Values.notifier.smtp.enabled .Values.notifier.smtp.plain_password }} + - key: "SMTP_PASSWORD" + path: SMTP_PASSWORD + {{- end }} + - key: "REDIS_PASSWORD" + path: REDIS_PASSWORD + {{- if .Values.redisProvider.high_availability.enabled}} + - key: "REDIS_SENTINEL_PASSWORD" + path: REDIS_SENTINEL_PASSWORD + {{- end }} + {{- if .Values.duo_api.enabled }} + - key: "DUO_API_KEY" + path: DUO_API_KEY + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + - key: "OIDC_PRIVATE_KEY" + path: OIDC_PRIVATE_KEY + - key: "OIDC_HMAC_SECRET" + path: OIDC_HMAC_SECRET + {{- end }} +{{- end -}} + +{{- $_ := set .Values.persistence "authelia-configfile" (include "authelia.configmapVolume" . | fromYaml) -}} +{{- $_ := set .Values.persistence "authelia-secrets" (include "authelia.secretVolumes" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/premium/authelia/23.5.5/values.yaml b/premium/authelia/23.5.5/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/authelia/item.yaml b/premium/authelia/item.yaml new file mode 100644 index 00000000000..84619170039 --- /dev/null +++ b/premium/authelia/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/authelia.png +categories: + - security +screenshots: [] diff --git a/premium/blocky/14.3.5/.helmignore b/premium/blocky/14.3.5/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/blocky/14.3.5/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/blocky/14.3.5/CHANGELOG.md b/premium/blocky/14.3.5/CHANGELOG.md new file mode 100644 index 00000000000..acf48583135 --- /dev/null +++ b/premium/blocky/14.3.5/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [blocky-14.3.5](https://github.com/truecharts/charts/compare/blocky-14.3.4...blocky-14.3.5) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/blocky/14.3.5/Chart.yaml b/premium/blocky/14.3.5/Chart.yaml new file mode 100644 index 00000000000..965c19e396a --- /dev/null +++ b/premium/blocky/14.3.5/Chart.yaml @@ -0,0 +1,47 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: network + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 0.23.0 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 13.0.3 + repository: oci://tccr.io/truecharts + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Blocky is a DNS proxy, DNS enhancer and ad-blocker for the local network written in Go +home: https://truecharts.org/charts/premium/blocky +icon: https://truecharts.org/img/hotlink-ok/chart-icons/blocky.png +keywords: + - dns + - blocky +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: blocky +sources: + - https://github.com/Mozart409/blocky-frontend + - https://0xerr0r.github.io/blocky/ + - https://github.com/0xERR0R/blocky + - https://github.com/truecharts/charts/tree/master/charts/premium/blocky + - https://hub.docker.com/r/spx01/blocky + - https://quay.io/oriedge/k8s_gateway +type: application +version: 14.3.5 diff --git a/premium/blocky/14.3.5/LICENSE b/premium/blocky/14.3.5/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/premium/blocky/14.3.5/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/premium/blocky/14.3.5/README.md b/premium/blocky/14.3.5/README.md new file mode 100644 index 00000000000..c6f2fa256df --- /dev/null +++ b/premium/blocky/14.3.5/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/blocky) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/blocky/14.3.5/app-changelog.md b/premium/blocky/14.3.5/app-changelog.md new file mode 100644 index 00000000000..283e76dd81a --- /dev/null +++ b/premium/blocky/14.3.5/app-changelog.md @@ -0,0 +1,9 @@ + + +## [blocky-14.3.5](https://github.com/truecharts/charts/compare/blocky-14.3.4...blocky-14.3.5) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/blocky/14.3.5/app-readme.md b/premium/blocky/14.3.5/app-readme.md new file mode 100644 index 00000000000..d9cf183273a --- /dev/null +++ b/premium/blocky/14.3.5/app-readme.md @@ -0,0 +1,8 @@ +Blocky is a DNS proxy, DNS enhancer and ad-blocker for the local network written in Go + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/blocky](https://truecharts.org/charts/premium/blocky) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/blocky/14.3.5/charts/common-20.0.9.tgz b/premium/blocky/14.3.5/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/blocky/14.3.5/charts/redis-13.0.3.tgz b/premium/blocky/14.3.5/charts/redis-13.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f04b6a89dbf1fec429f40b3f84e283fe39267c6f GIT binary patch literal 106633 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 z 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 VeEqSn{{{d6|NmLUX@CGU4FHbDjwk>C literal 0 HcmV?d00001 diff --git a/premium/blocky/14.3.5/dashboard.json b/premium/blocky/14.3.5/dashboard.json new file mode 100644 index 00000000000..847da7c67de --- /dev/null +++ b/premium/blocky/14.3.5/dashboard.json @@ -0,0 +1,1939 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + }, + { + "name": "VAR_BLOCKY_URL", + "type": "constant", + "label": "blocky API URL", + "value": "", + "description": "" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.3.3" + }, + { + "type": "panel", + "id": "heatmap", + "name": "Heatmap", + "version": "" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "iteration": 1641070862290, + "links": [ + { + "icon": "external link", + "tags": [], + "title": "blocky @ GitHub", + "tooltip": "open GitHub repo", + "type": "link", + "url": "https://github.com/0xERR0R/blocky" + } + ], + "liveNow": false, + "panels": [ + { + "description": "current service state", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "down" + }, + "1": { + "text": "up" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "id": 26, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "sum(up{job=~\"$job\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "State", + "transparent": true, + "type": "stat" + }, + { + "description": "Is blocking enabled?", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "text": "off" + }, + "1": { + "text": "on" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#299c46", + "value": 1 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 0 + }, + "id": 43, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "value" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "blocky_blocking_enabled", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Blocking", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Enable Ad disable blocking", + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 42, + "options": { + "content": "\n\n
\n \n \n \n
\n\n\n", + "mode": "html" + }, + "pluginVersion": "8.3.3", + "title": "Blocking status", + "transparent": true, + "type": "text" + }, + { + "description": "Blocky [version](https://github.com/0xERR0R/blocky) number", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 3 + }, + "id": 55, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "/^version$/", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "repeatDirection": "v", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "blocky_build_info ", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Version", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + } + ], + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Average query response time for all query types", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 3 + }, + "id": 24, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_request_duration_ms_sum[$__range])) / sum(increase(blocky_request_duration_ms_count[$__range]))", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Avg response time", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Number of blacklist entries", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 5 + }, + "id": 30, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(blocky_blacklist_cache) / sum(up{job=~\"$job\"})", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Blacklist entries total", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 12 + }, + "id": 28, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(go_memstats_sys_bytes{job=~\"$job\"})/sum(up{job=~\"$job\"})", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Memory allocated", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Percentage of blocked queries", + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 6 + }, + "id": 34, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_response_total{response_type=\"BLOCKED\"}[$__range])) / sum(increase(blocky_query_total[$__range])) ", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Queries blocked", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Number of all queries. Shows the last value", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 6 + }, + "hideTimeOverride": true, + "id": 4, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "ceil(sum(increase(blocky_query_total[$__range]))) ", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Query Count Total", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Number of entries in the cache. Shows the last value", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 8 + }, + "id": 45, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["last"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(blocky_cache_entry_count)/ sum(up{job=~\"$job\"})", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Cache entries count", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Cache Hit/Miss ratio. 100 % means, all queries could be answered from the cache, 0% - all queries must be resolved via external DNS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 8 + }, + "id": 47, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["mean"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_cache_hit_count[$__range])) / (sum(increase(blocky_cache_hit_count[$__range])) + sum(increase(blocky_cache_miss_count[$__range])))", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Cache Hit/Miss ratio", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Number of occured errors", + "fieldConfig": { + "defaults": { + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 1 + }, + { + "color": "#d44a3a" + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 12 + }, + "id": 36, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_error_total[$__range]))", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Error count", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Amount of performed DNS queries to prefetch cached queries", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 9 + }, + "id": 53, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "ceil(sum(increase(blocky_prefetch_count[$__range])))", + "format": "table", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Prefetch count", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Amount of prefetch queries per minute", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 11 + }, + "id": 51, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(blocky_prefetch_count[5m])) * 60", + "format": "table", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Prefetch rate per min", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "How many of cached entries were prefetched automatically", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 11 + }, + "id": 58, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["mean"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_prefetch_hit_count[$__range])) / (sum(increase(blocky_cache_hit_count[$__range])))", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Prefetch Hit ratio", + "transparent": true, + "type": "stat" + }, + { + "description": "Time since last list refresh", + "fieldConfig": { + "defaults": { + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 5 + }, + "id": 57, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "sum(time() -blocky_last_list_group_refresh)/ sum(up{job=~\"$job\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Last list refresh", + "transparent": true, + "type": "stat" + }, + { + "datasource": { + "uid": "${DS_PROMETHEUS}" + }, + "description": "Amount of unique domains in the prefetched cache", + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 9 + }, + "id": 49, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(blocky_prefetch_domain_name_cache_count)/ sum(up{job=~\"$job\"})", + "format": "table", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Prefetch domain count", + "transparent": true, + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "avg requests / min", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 10, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(blocky_query_total[5m])) * 60", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": " ", + "refId": "A" + } + ], + "title": "Request rate", + "transparent": true, + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "avg requests / min", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 52, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum by (client) (rate(blocky_query_total[5m])) * 60", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": " {{client}}", + "refId": "A" + } + ], + "title": "Request rate per client", + "transparent": true, + "type": "timeseries" + }, + { + "cards": {}, + "color": { + "cardColor": "#FADE2A", + "colorScale": "sqrt", + "colorScheme": "interpolateYlOrBr", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 29 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 22, + "legend": { + "show": true + }, + "reverseYBuckets": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(increase(blocky_request_duration_ms_bucket{response_type=\"RESOLVED\"}[$__range])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "", + "legendFormat": "{{le}}", + "refId": "A" + } + ], + "title": "request duration (upstream)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transparent": true, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "ms", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 38 + }, + "id": 2, + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value", "percent"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["sum"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "6.6.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": " sort_desc(sum by (type) (ceil(increase(blocky_query_total[$__range]))))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{ type }}", + "refId": "A" + } + ], + "title": "Query by type", + "transparent": true, + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 38 + }, + "id": 8, + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value", "percent"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "6.6.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "sort_desc(sum by (client) (ceil(increase(blocky_query_total[$__range]))))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{ client }}", + "refId": "A" + } + ], + "title": "Query per Client", + "transparent": true, + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 46 + }, + "id": 32, + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "6.6.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "topk(1, blocky_blacklist_cache) by (group)", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{ group }}", + "refId": "A" + } + ], + "title": "Blacklist by group", + "transparent": true, + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 46 + }, + "id": 14, + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value", "percent"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": " sort_desc(sum by (reason) (ceil(increase(blocky_response_total[$__range]))))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{reason}}", + "refId": "A" + } + ], + "title": "Response Reasons", + "transparent": true, + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 54 + }, + "id": 38, + "interval": "", + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value", "percent"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["sum"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": " sort_desc(sum by (response_type) (ceil(increase(blocky_response_total[$__range]))))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{response_type}}", + "refId": "A" + } + ], + "title": "Response Type", + "transparent": true, + "type": "piechart" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "decimals": 0, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 54 + }, + "id": 12, + "links": [], + "maxDataPoints": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "values": ["value", "percent"] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": " sort_desc(sum by (response_code) (ceil(increase(blocky_response_total[$__range]))))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "{{response_code}}", + "refId": "A" + } + ], + "title": "Response status", + "transparent": true, + "type": "piechart" + } + ], + "refresh": false, + "schemaVersion": 34, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "DS_PROMETHEUS", + "label": "datasource", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "hide": 0, + "label": "blocky API URL", + "name": "blocky_url", + "query": "${VAR_BLOCKY_URL}", + "skipUrlSync": false, + "type": "constant", + "current": { + "value": "${VAR_BLOCKY_URL}", + "text": "${VAR_BLOCKY_URL}", + "selected": false + }, + "options": [ + { + "value": "${VAR_BLOCKY_URL}", + "text": "${VAR_BLOCKY_URL}", + "selected": false + } + ] + }, + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(blocky_blocking_enabled,job)", + "hide": 0, + "includeAll": true, + "label": "job", + "multi": false, + "name": "job", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(blocky_blocking_enabled,job)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "blocky", + "uid": "JvOqE4gRk", + "version": 1, + "weekStart": "" +} diff --git a/premium/blocky/14.3.5/dashboardpsql.json b/premium/blocky/14.3.5/dashboardpsql.json new file mode 100644 index 00000000000..203723f09d2 --- /dev/null +++ b/premium/blocky/14.3.5/dashboardpsql.json @@ -0,0 +1,874 @@ +{ + "__inputs": [ + { + "name": "DS_POSTGRES", + "label": "Postgres", + "description": "", + "type": "datasource", + "pluginId": "postgres", + "pluginName": "Postgres" + } + ], + "__requires": [ + { + "type": "panel", + "id": "barchart", + "name": "Bar chart", + "version": "" + }, + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.1.2" + }, + { + "type": "datasource", + "id": "postgres", + "name": "Postgres", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1631130053746, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "datasource": "${DS_POSTGRES}", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "displayName": "${__field.labels.response_type}", + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 0 + }, + "id": 14, + "interval": null, + "links": [], + "options": { + "displayLabels": [], + "legend": { + "displayMode": "table", + "placement": "right", + "values": ["value"] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["sum"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.1.2", + "repeatDirection": "v", + "targets": [ + { + "format": "time_series", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT t.response_type, max(t.request_Ts) as time, count(*) as cnt from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\n group by t.response_type\n order by time", + "refId": "A", + "select": [ + [ + { + "params": ["value"], + "type": "column" + } + ] + ], + "timeColumn": "time", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Query count by response type", + "transformations": [], + "type": "piechart" + }, + { + "datasource": "${DS_POSTGRES}", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 6, + "y": 0 + }, + "id": 16, + "options": { + "displayLabels": [], + "legend": { + "displayMode": "table", + "placement": "right", + "values": ["value"] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "format": "time_series", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT max(t.request_ts) AS time,\n case when t.reason like ''BLOCKED%'' then SPLIT_PART(SPLIT_PART(t.reason,''('',-1), '')'',1) else '''' end AS metric,\n count(t.reason) AS cnt\nFROM log_entries t\nWHERE t.response_type =''BLOCKED''\n AND $__timeFilter(t.request_Ts)\n AND t.client_name in ($client_name)\n AND (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nGROUP BY 2\nORDER BY time", + "refId": "A", + "select": [ + [ + { + "params": ["duration_ms"], + "type": "column" + } + ] + ], + "table": "log_entries", + "timeColumn": "request_ts", + "timeColumnType": "timestamp", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Blocked by Blacklist", + "type": "piechart" + }, + { + "cacheTimeout": null, + "datasource": "${DS_POSTGRES}", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 13, + "interval": null, + "links": [], + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": true + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.1.2", + "repeatDirection": "v", + "targets": [ + { + "format": "table", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT max(t.request_Ts) as time, t.client_name as metric, count(*) as cnt from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\n group by t.client_name\n order by 3 desc", + "refId": "A", + "select": [ + [ + { + "params": ["value"], + "type": "column" + } + ] + ], + "timeColumn": "time", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Query count by client", + "transformations": [], + "type": "bargauge" + }, + { + "datasource": "${DS_POSTGRES}", + "description": "Top 20 effective top level domain plus one more label", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "fillOpacity": 67, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 2 + }, + "displayName": "count", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 11, + "options": { + "barWidth": 0.26, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "orientation": "horizontal", + "showValue": "never", + "stacking": "none", + "text": { + "valueSize": 10 + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "format": "table", + "group": [], + "hide": false, + "metricColumn": "question_name", + "rawQuery": true, + "rawSql": "SELECT t.effective_tldp as metric, count(*) as value from log_entries t \nWHERE $__timeFilter(t.request_Ts) \n and t.response_type in ($response_type) \n and t.client_name in ($client_name) \n and (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n group by t.effective_tldp order by count(*) desc limit 20", + "refId": "A", + "select": [ + [ + { + "params": ["value"], + "type": "column" + } + ] + ], + "table": "log_entries", + "timeColumn": "request_ts", + "where": [] + } + ], + "title": "Top 20 effective TLD+1", + "type": "barchart" + }, + { + "datasource": "${DS_POSTGRES}", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 0, + "fillOpacity": 67, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 2 + }, + "displayName": "count", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 8, + "options": { + "barWidth": 0.26, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "orientation": "horizontal", + "showValue": "never", + "stacking": "none", + "text": { + "valueSize": 10 + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "format": "table", + "group": [], + "hide": false, + "metricColumn": "question_name", + "rawQuery": true, + "rawSql": "SELECT t.question_name as metric, count(*) as value from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n group by t.question_name order by count(*) desc limit 20", + "refId": "A", + "select": [ + [ + { + "params": ["value"], + "type": "column" + } + ] + ], + "table": "log_entries", + "timeColumn": "request_ts", + "where": [] + } + ], + "title": "Top 20 queried domains", + "type": "barchart" + }, + { + "datasource": "${DS_POSTGRES}", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "queries count", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 35, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 12, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": 3600000, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "displayName": "${__field.labels.client_name}", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 12, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "right" + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.1.2", + "targets": [ + { + "format": "time_series", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT\n $__timeGroupAlias(t.request_Ts, ''30m''),\n t.client_name,\n count(*) as c\nFROM log_entries t\nWHERE\n $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nGROUP BY 1,2\nORDER BY 1", + "refId": "A", + "select": [ + [ + { + "params": ["duration_ms"], + "type": "column" + } + ] + ], + "table": "log_entries", + "timeColumn": "request_ts", + "timeColumnType": "timestamp", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Queries number per client (30m)", + "type": "timeseries" + }, + { + "datasource": "${DS_POSTGRES}", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": -1, + "drawStyle": "bars", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "stepBefore", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "dtdurationms" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 10, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "format": "time_series", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT\n EXTRACT(EPOCH from t.request_Ts) as time,\n t.duration_ms\nFROM log_entries t\nWHERE\n $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nORDER BY request_ts", + "refId": "A", + "select": [ + [ + { + "params": ["duration_ms"], + "type": "column" + } + ] + ], + "table": "log_entries", + "timeColumn": "request_ts", + "timeColumnType": "timestamp", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Query duration", + "type": "timeseries" + }, + { + "datasource": "${DS_POSTGRES}", + "description": "Last 100 queries, newest on top", + "fieldConfig": { + "defaults": { + "custom": { + "align": null, + "displayMode": "auto", + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "time" + }, + "properties": [ + { + "id": "unit", + "value": "dateTimeAsIsoNoDateIfToday" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 4, + "options": { + "showHeader": true + }, + "pluginVersion": "8.1.2", + "targets": [ + { + "format": "table", + "group": [], + "metricColumn": "none", + "rawQuery": true, + "rawSql": "SELECT EXTRACT(EPOCH from t.request_Ts) as \"time\", \n t.client_ip as \"client IP\", \n t.client_name as \"client name\", \n t.duration_ms as \"duration in ms\", \n t.response_type as \"response type\", \n t.question_type as \"question type\", \n t.question_name as \"question name\", \n t.effective_tldp as \"effective TLD+1\", \n t.answer as \"answer\" from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n order by t.request_Ts desc limit 100", + "refId": "A", + "select": [ + [ + { + "params": ["value"], + "type": "column" + } + ] + ], + "timeColumn": "time", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Last queries", + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 30, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "BlockyPostgres", + "value": "blockypostgres" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_POSTGRES", + "options": [], + "query": "grafana-postgresql-datasource", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": "", + "current": {}, + "datasource": "${DS_POSTGRES}", + "definition": "select distinct client_name from log_entries", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Client name", + "multi": true, + "name": "client_name", + "options": [], + "query": "select distinct client_name from log_entries", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_POSTGRES}", + "definition": "select distinct response_type from log_entries", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Response type", + "multi": true, + "name": "response_type", + "options": [], + "query": "select distinct response_type from log_entries", + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": false, + "text": "", + "value": "" + }, + "description": null, + "error": null, + "hide": 0, + "label": "Domain (contains)", + "name": "question", + "options": [ + { + "selected": true, + "text": "", + "value": "" + } + ], + "query": "", + "skipUrlSync": false, + "type": "textbox" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Blocky query", + "uid": "AVmWSVWgz", + "version": 3 +} diff --git a/premium/blocky/14.3.5/ix_values.yaml b/premium/blocky/14.3.5/ix_values.yaml new file mode 100644 index 00000000000..41a8c5c1b39 --- /dev/null +++ b/premium/blocky/14.3.5/ix_values.yaml @@ -0,0 +1,380 @@ +image: + repository: spx01/blocky + tag: v0.23@sha256:24855b63986c790093554a1f62b58379a06bc10a90ee073906e7c39bf692adcc + pullPolicy: IfNotPresent +k8sgatewayImage: + repository: quay.io/oriedge/k8s_gateway + pullPolicy: IfNotPresent + tag: v0.4.0@sha256:7bdbd447c0244b8f89de9cd6f4826ed0ac66c9406fac3a4ac80081020c251c6b + +workload: + main: + replicas: 2 + strategy: RollingUpdate + podSpec: + containers: + main: + probes: + liveness: + enabled: false + type: exec + command: + - /app/blocky + - healthcheck + readiness: + enabled: false + type: exec + command: + - /app/blocky + - healthcheck + startup: + enabled: false + type: exec + command: + - /app/blocky + - healthcheck +# -- Blocky Config File content +blockyConfig: {} +# upstream: +# default: +# - 1.1.1.1 + +# -- some general blocky settings +blocky: + # -- Enable prometheus annotations + enablePrometheus: true +service: + main: + enabled: true + ports: + main: + enabled: true + port: 4000 + protocol: http + targetPort: 4000 + dns: + enabled: true + ports: + dns: + enabled: true + port: 53 + protocol: udp + targetPort: 53 + dnstcp: + enabled: true + protocol: tcp + port: "{{ .Values.service.dns.ports.dns.port }}" + targetPort: 53 + dot: + enabled: true + ports: + dot: + enabled: true + port: 853 + protocol: tcp + targetPort: 853 + https: + enabled: true + ports: + https: + enabled: true + port: 4443 + protocol: https + targetPort: 4443 + k8sgateway: + enabled: true + ports: + k8sgateway: + enabled: true + port: 5353 + protocol: udp + targetPort: 5353 +## TODO Add support for SCALE certificates and certificates secrets here +certFile: "" +keyFile: "" +logLevel: info +logFormat: text +logTimestamp: true +logPrivacy: false +dohUserAgent: "" +minTlsServeVersion: 1.2 +# -- set the default DNS upstream servers +# Primarily designed for inclusion in the TrueNAS SCALE GUI +defaultUpstreams: + - 1.1.1.1 + - 1.0.0.1 + - 8.8.8.8 + - 8.8.4.4 + - 9.9.9.9 + - 149.112.112.112 + - 208.67.222.222 + - 208.67.220.220 + - 8.26.56.26 + - 8.20.247.20 + - 185.228.168.9 + - 185.228.169.9 + - 76.76.19.19 + - 76.223.122.150 + - 76.76.2.0 + - 76.76.10.0 +# -- set additional upstreams +# Primarily designed for inclusion in the TrueNAS SCALE GUI +upstreams: +# - name: group2 +# dnsservers: +# - 1.1.1.1 + +# -- set bootstrap dns (not needed) +# Ensures bootstrap encryption and ensure it doesn't use k8s dns +bootstrapDns: + # -- Upstream + upstream: "" + # -- IP's linked to upstream DoT/DoH DNS name + ips: [] +# -- set additional bootstrap dns (not needed, only used if bootstrapDns is set) +additionalBootstrapDns: [] +# - upstream: "" +# ips: [] + +# -- Return empty answer for these queries +filtering: + # -- Ensures filtering by query type + queryTypes: [] +# -- Set manual custom DNS resolution +customDNS: + customTTL: 1h + filterUnmappedTypes: true + rewrite: [] + # - in: something.com + # out: somethingelse.com + mapping: [] + # - domain: something.com + # dnsserver: 192.168.178.1 +# -- Setup client-name lookup +clientLookup: + # -- upstream used for client-name lookup + upstream: "" + singleNameOrder: [] + clients: + # - domain: laptop + # ips: [] +# -- Setup caching +caching: + minTime: 5m + maxTime: 30m + maxItemsCount: 0 + prefetching: false + prefetchExpires: 2h + prefetchThreshold: 5 + prefetchMaxItemsCount: 0 + cacheTimeNegative: 30m +# -- set conditional settings +# Primarily designed for inclusion in the TrueNAS SCALE GUI +conditional: + rewrite: [] + # - in: something.com + # out: somethingelse.com + mapping: [] + # - domain: something.com + # dnsserver: 192.168.178.1 +# -- set blocking settings using Lists +# Primarily designed for inclusion in the TrueNAS SCALE GUI +blocking: + # -- Sets the blocktype + blockType: nxDomain + # -- Sets the block ttl + blockTTL: 6h + # -- Sets the block refreshPeriod + refreshPeriod: 4h + # -- Sets the block download timeout + downloadTimeout: 60s + # -- Sets the block download attempt count + downloadAttempts: 3 + # -- Sets the block download cooldown + downloadCooldown: 2s + # -- Set the start strategy (blocking | failOnError | fast) + startStrategy: blocking + # -- Sets how many list-groups can be processed at the same time + processingConcurrency: 4 + # -- Add blocky whitelists + whitelist: [] + # - name: ads + # lists: + # - https://someurl.com/list.txt + # - /somefile.txt + + # -- Blocky blacklists + blacklist: [] + # - name: ads + # lists: + # - https://someurl.com/list.txt + # - /somefile.txt + + # -- Blocky clientGroupsBlock + clientGroupsBlock: [] + # - name: default + # groups: + # - ads +# -- configure using hostsfile for lookups +# Allows for using the hosts configured in kubernetes and such +hostsFile: + enabled: false + filePath: /etc/hosts + hostsTTL: 60m + refreshPeriod: 30m +## TODO: add this with postgresql support as well +# queryLog: +# type: csv +# target: /logs +# logRetentionDays: 0 +# creationAttempts: 3 +# CreationCooldown: 2 +podOptions: + automountServiceAccountToken: true +portal: + open: + enabled: false +serviceAccount: + main: + # -- Specifies whether a service account should be created + enabled: true + primary: true +# -- Create a ClusterRole and ClusterRoleBinding +# @default -- See below +rbac: + main: + # -- Enables or disables the ClusterRole and ClusterRoleBinding + enabled: true + primary: true + clusterWide: true + # -- Set Rules on the ClusterRole + rules: + - apiGroups: + - "" + resources: + - services + - namespaces + verbs: + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + verbs: + - list + - watch +k8sgateway: + enabled: true + # -- TTL for non-apex responses (in seconds) + ttl: 300 + # -- Limit what kind of resources to watch, e.g. watchedResources: ["Ingress"] + watchedResources: [] + # -- Service name of a secondary DNS server (should be `serviceName.namespace`) + secondary: "" + # -- Override the default `serviceName.namespace` domain apex + apex: "" + # -- list of processed domains + domains: [] + # -- Delegated domain + # - domain: "example.com" + # # -- Optional configuration option for DNS01 challenge that will redirect all acme + # # challenge requests to external cloud domain (e.g. managed by cert-manager) + # # See: https://cert-manager.io/docs/configuration/acme/dns01/ + # dnsChallenge: + # enabled: false + # domain: dns01.clouddns.com + + forward: + enabled: false + primary: tls://1.1.1.1 + secondary: tls://1.0.0.1 + options: + - name: tls_servername + value: cloudflare-dns.com + +configmap: + dashboard: + enabled: true + labels: + grafana_dashboard: "1" + data: + blocky.json: >- + {{ .Files.Get "dashboard.json" | indent 8 }} + blockypostgres.json: >- + {{ .Files.Get "dashboardpsql.json" | indent 8 }} + datasource: + enabled: true + labels: + grafana_datasources: "1" + data: + datasourceblockypsql.yaml: |- + apiVersion: 1 + datasources: + - name: BlockyPostgres + type: postgres + uid: blockypostgres + url: {{ printf "%s.%s:5432" (.Values.cnpg.main.creds.host | trimAll "\"") .Release.Namespace }} + access: proxy + user: {{ .Values.cnpg.main.user }} + secureJsonData: + password: {{ .Values.cnpg.main.creds.password | default "na" }} + jsonData: + database: {{ .Values.cnpg.main.database }} + sslmode: 'disable' # disable/require/verify-ca/verify-full + maxOpenConns: 100 # Grafana v5.4+ + maxIdleConns: 100 # Grafana v5.4+ + maxIdleConnsAuto: true # Grafana v9.5.1+ + connMaxLifetime: 14400 # Grafana v5.4+ + postgresVersion: 1500 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10 + timescaledb: false + +metrics: + main: + # -- Enable and configure a Prometheus serviceMonitor for the chart under this key. + # @default -- See values.yaml + enabled: true + type: "servicemonitor" + endpoints: + - port: main + path: /metrics + # -- Enable and configure Prometheus Rules for the chart under this key. + # @default -- See values.yaml + prometheusRule: + enabled: false + labels: {} + # -- Configure additionial rules for the chart under this key. + # @default -- See prometheusrules.yaml + rules: [] + # - alert: UnifiPollerAbsent + # annotations: + # description: Unifi Poller has disappeared from Prometheus service discovery. + # summary: Unifi Poller is down. + # expr: | + # absent(up{job=~".*unifi-poller.*"} == 1) + # for: 5m + # labels: + # severity: critical + +redis: + enabled: true +# CANNOT be defined in above yaml section +queryLog: + # optional one of: mysql, postgresql, csv, csv-client. If empty, log to console + type: "postgresql" + # directory (should be mounted as volume in docker) for csv, db connection string for mysql, ignored for included postgresql + # target: /var/log/something + # postgresql target: postgres://user:password@db_host_or_ip:5432/db_name + # if > 0, deletes log files which are older than ... days + logRetentionDays: 0 + # optional: Max attempts to create specific query log writer, default: 3 + creationAttempts: 3 + # optional: Time between the creation attempts, default: 2s + creationCooldown: 2s + +cnpg: + main: + enabled: true + user: blocky + database: blocky diff --git a/premium/blocky/14.3.5/questions.yaml b/premium/blocky/14.3.5/questions.yaml new file mode 100755 index 00000000000..d4872d191e2 --- /dev/null +++ b/premium/blocky/14.3.5/questions.yaml @@ -0,0 +1,3780 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: webUI + group: App Configuration + label: WebUI Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Web UI + description: Enables Web UI + schema: + type: boolean + default: true + - variable: apiURL + label: API URL + description: API URL for webUI, including port. Only used when not using ingress + schema: + type: string + default: "http://127.0.0.1:4000" + - variable: overrideDefaults + group: App Configuration + label: Override Default Upstreams + description: Overrides the predefined DNS server upstream list + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: defaultUpstreams + label: Default Upstreams + schema: + type: list + default: [] + items: + - variable: upstreamEntry + label: Upstream Entry + schema: + type: string + required: true + default: "" + - variable: upstreams + group: App Configuration + label: Upstreams Groups + description: Refer to +
https://0xerr0r.github.io/blocky/configuration/#upstream-configuration + schema: + type: list + default: [] + items: + - variable: upstreamsGroupEntry + label: Upstreams Group Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Group Name + schema: + type: string + required: true + default: "" + - variable: upstreams + label: Upstreams + schema: + type: list + required: true + default: [] + items: + - variable: upstreamEntry + label: upstream Entry + schema: + type: string + required: true + default: "" + - variable: bootstrapDns + group: App Configuration + label: Bootstrap DNS + description: Used to resolve upstream DoH and DoT servers that are specified as hostnames. +
Refer to https://0xerr0r.github.io/blocky/configuration/#bootstrap-dns-configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: upstream + label: Upstream + schema: + type: string + default: "" + - variable: ips + label: IPs + schema: + type: list + default: [] + items: + - variable: ipEntry + label: IP Entry + schema: + type: string + required: true + default: "" + - variable: additionalBootstrapDns + group: App Configuration + label: Additional Bootstrap DNS + schema: + type: list + show_if: [[ "bootstrapDns", "!=", {"upstream": "", "ips": []} ]] + default: [] + items: + - variable: additionalBootstrapDnsEntry + label: Additional Bootstrap DNS Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: upstream + label: Upstream + schema: + type: string + default: "" + - variable: ips + label: IPs + schema: + type: list + default: [] + items: + - variable: ipEntry + label: IP Entry + schema: + type: string + required: true + default: "" + - variable: filtering + group: App Configuration + label: Filtering + description: Define one or more DNS query types; all queries with these types will be dropped +
Refer to https://0xerr0r.github.io/blocky/configuration/#filtering + schema: + additional_attrs: true + type: dict + attrs: + - variable: queryTypes + label: Query Types + schema: + type: list + default: [] + items: + - variable: queryTypeEntry + label: Query Type Entry + schema: + type: string + required: true + default: "" + - variable: customDNS + group: App Configuration + label: Custom DNS + description: Define your own domain name to IP mappings. +
Refer to https://0xerr0r.github.io/blocky/configuration/#custom-dns + schema: + additional_attrs: true + type: dict + attrs: + - variable: customTTL + label: Custom TTL + schema: + type: string + default: 1h + - variable: filterUnmappedTypes + label: Filter Unmapped Types + schema: + type: boolean + default: true + - variable: rewrite + label: Rewrite + schema: + type: list + default: [] + items: + - variable: rewriteEntry + label: Rewrite Entry + schema: + type: dict + additional_attrs: true + attrs: + - variable: in + label: In + schema: + type: string + required: true + default: "" + - variable: out + label: Out + schema: + type: string + required: true + default: "" + - variable: mapping + label: Mapping + schema: + type: list + default: [] + items: + - variable: mappingEntry + label: Mapping Entry + schema: + type: dict + additional_attrs: true + attrs: + - variable: domain + label: Domain + schema: + type: string + required: true + default: "" + - variable: dnsserver + label: DNS Server + schema: + type: string + required: true + default: "" + - variable: clientLookup + group: App Configuration + label: Client Lookup + description: Blocky can try to resolve a user-friendly client name from the IP address or server URL (DoT and DoH) +
Refer to https://0xerr0r.github.io/blocky/configuration/#client-name-lookup + schema: + additional_attrs: true + type: dict + attrs: + - variable: upstream + label: Upstream + schema: + type: string + default: "" + - variable: singleNameOrder + label: Single Name Order + schema: + type: list + default: [] + items: + - variable: singleNameEntry + label: Single Name Entry + schema: + type: string + required: true + default: "" + - variable: clients + label: Clients + schema: + type: list + default: [] + items: + - variable: clientEntry + label: Client Entry + schema: + type: dict + additional_attrs: true + attrs: + - variable: domain + label: Domain + schema: + type: string + required: true + default: "" + - variable: ips + label: IPs + schema: + type: list + default: [] + items: + - variable: ipEntry + label: IP Entry + schema: + type: string + required: true + default: "" + - variable: caching + group: App Configuration + label: Caching + description: Refer to +
https://0xerr0r.github.io/blocky/configuration/#caching + schema: + additional_attrs: true + type: dict + attrs: + - variable: minTime + label: Min Time + schema: + type: string + default: 5m + - variable: maxTime + label: Max Time + schema: + type: string + default: 30m + - variable: maxItemsCount + label: Max Items Count + schema: + type: int + default: 0 + - variable: prefetching + label: Prefetching + schema: + type: boolean + default: false + - variable: prefetchExpires + label: Prefetch Expires + schema: + type: string + default: 2h + - variable: prefetchThreshold + label: Prefetch Threshold + schema: + type: int + default: 5 + - variable: prefetchMaxItemsCount + label: Prefetch Max Items Count + schema: + type: int + default: 0 + - variable: cacheTimeNegative + label: Cache Time Negative + schema: + type: string + default: 30m + - variable: conditional + group: App Configuration + label: Conditional + description: Define which DNS resolver(s) should be used for queries for the particular domain +
Refer to https://0xerr0r.github.io/blocky/configuration/#conditional-dns-resolution + schema: + additional_attrs: true + type: dict + attrs: + - variable: rewrite + label: Rewrite + schema: + type: list + default: [] + items: + - variable: rewriteEntry + label: Rewrite Entry + schema: + type: dict + additional_attrs: true + attrs: + - variable: in + label: In + schema: + type: string + required: true + default: "" + - variable: out + label: Out + schema: + type: string + required: true + default: "" + - variable: mapping + label: Mapping + schema: + type: list + default: [] + items: + - variable: mappingEntry + label: Mapping Entry + schema: + type: dict + additional_attrs: true + attrs: + - variable: domain + label: Domain + schema: + type: string + required: true + default: "" + - variable: dnsserver + label: DNS Server + schema: + type: string + required: true + default: "" + - variable: blocking + group: App Configuration + label: Blocking + description: Each black or whitelist can be either a path to the local file or a URL to download. All Urls must be grouped to a group name. +
Refer to https://0xerr0r.github.io/blocky/configuration/#blocking-and-whitelisting + schema: + additional_attrs: true + type: dict + attrs: + - variable: blockType + label: Block Type + description: Set the response should be sent to the client, if a requested query is blocked + schema: + type: string + default: nxDomain + - variable: blockTTL + label: Block TTL + description: Set the TTL for answers to blocked domains + schema: + type: string + default: 6h + - variable: refreshPeriod + label: Refresh Period + description: Set how often blocky should refresh list cache + schema: + type: string + default: 4h + - variable: downloadTimeout + label: Download Timeout + description: Download attempt timeout + schema: + type: string + default: 60s + - variable: downloadAttempts + label: Download Attempts + description: How many download attempts should be performed + schema: + type: int + default: 3 + - variable: downloadCooldown + label: Download Cooldown + description: Time between the download attempts + schema: + type: string + default: 2s + - variable: startStrategy + label: Start Strategy + description: | + blocking: all blocking lists will be loaded before DNS resolution starts.
+ failOnError: like blocking but blocky will shut down if any download fails.
+ fast: DNS resolution starts immediately without blocking which will be enabled after list load is completed + schema: + type: string + default: blocking + enum: + - value: blocking + description: Blocking + - value: failOnError + description: Fail On Error + - value: fast + description: Fast + - variable: processingConcurrency + label: Processing Concurrency + description: Sets how many list-groups can be processed at the same time + schema: + type: int + default: 4 + - variable: whitelist + label: Whitelist + description: Define whitelists, either URL or file + schema: + type: list + default: [] + items: + - variable: whitelistEntry + label: Whitelist Group Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Group Name + schema: + type: string + required: true + default: "" + - variable: lists + label: Lists + schema: + type: list + required: true + default: [] + items: + - variable: listEntry + label: List Entry + schema: + type: string + required: true + default: "" + - variable: blacklist + label: Blacklist + description: Define blacklists, either URL or file + schema: + type: list + default: [] + items: + - variable: blacklistEntry + label: Blacklist Group Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Group Name + schema: + type: string + required: true + default: "" + - variable: lists + label: Lists + schema: + type: list + required: true + default: [] + items: + - variable: listEntry + label: List Entry + schema: + type: string + required: true + default: "" + - variable: clientGroupsBlock + label: Client Groups Block + description: Define, which blocking group(s) should be used for which client in your network. + schema: + type: list + default: [] + items: + - variable: clientGroupBlockEntry + label: Client Group Block Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Client Group Name + schema: + type: string + required: true + default: "" + - variable: groups + label: Groups + schema: + type: list + required: true + default: [] + items: + - variable: groupEntry + label: Group Entry + schema: + type: string + required: true + default: "" + - variable: hostsFile + group: App Configuration + label: Hosts File + description: You can enable resolving of entries, located in local hosts file. +
Refer to https://0xerr0r.github.io/blocky/configuration/#hosts-file + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filePath + label: File Path + schema: + type: string + default: /etc/hosts + - variable: hostsTTL + label: Hosts TTL + schema: + type: string + default: 60m + - variable: refreshPeriod + label: Refresh Period + schema: + type: string + default: 30m + - variable: queryLog + group: App Configuration + label: Query Logging configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: "" + enum: + - value: "" + description: Console + - value: postgresql + description: postgresql + - value: csv + description: csv + - value: csv-client + description: csv-client + - variable: target + label: Target + schema: + type: string + show_if: [["type", "!=", "postgresql"]] + default: "/var/log/something" + - variable: logRetentionDays + label: Log Retention Days + schema: + type: int + default: 0 + - variable: creationAttempts + label: Creation Attempts + schema: + type: int + default: 3 + - variable: creationCooldown + label: Creation Cooldown + schema: + type: string + default: 2s + - variable: k8sgateway + group: App Configuration + label: k8s-Gateway Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable k8s-Gateway + description: Enables k8s-Gateway + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: domains + label: Domains + description: Please refer to CoreDNS docs for options + schema: + type: list + default: [] + items: + - variable: domainEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: domain + label: Domain name + schema: + type: string + required: true + default: example.com + - variable: dnsChallenge + label: Forward dnsChallenge + description: Optional configuration option for DNS01 challenge that will redirect all acme + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: domain + label: Forward to Domain + schema: + type: string + required: true + default: dns01.clouddns.com + - variable: advancedOptions + label: Advanced Options + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + show_subquestions_if: true + subquestions: + - variable: ttl + label: ttl + description: TTL for non-apex responses (in seconds) + schema: + type: int + default: 300 + - variable: watchedResources + label: Watched Resources + description: imit what kind of resources to watch, e.g. Ingress + schema: + type: list + default: [] + items: + - variable: watchedResource + label: Watched Resource + schema: + type: string + default: "" + - variable: secondary + label: Secondary DNS Server Service + description: Service name of a secondary DNS server (should be serviceName.namespace) + schema: + type: string + default: "" + - variable: apex + label: Apex + description: Override the default `serviceName.namespace` domain apex + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: dns + label: DNS Service + description: The DNS service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: dns + label: DNS Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 53 + required: true + - variable: dot + label: DoT Service + description: "DNS-over-TLS service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: ClusterIP + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: dot + label: DoT Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 853 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: cnpg + group: Postgresql + label: "CloudNative-PG (CNPG)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: mode + label: Mode + description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.' + schema: + type: string + default: "standalone" + enum: + - value: standalone + description: standalone + - value: replica + description: replica + - value: recovery + description: recovery + - variable: cluster + label: "Cluster Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 1 + - variable: singleNode + label: singleNode + schema: + type: boolean + default: true + hidden: true + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walStorage + label: "WAL Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: monitoring + label: "Monitoring Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: disableDefaultQueries + label: "disableDefaultQueries" + schema: + type: boolean + default: false + - variable: pooler + label: "Pooler Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: instances + label: Instances + schema: + type: int + show_if: [["enabled", "=", true]] + default: 1 + - variable: createRO + label: "Create ReadOnly Instance" + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: false + - variable: backups + label: "Backup Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: destinationPath + label: "destinationPath" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: retentionPolicy + label: "retentionPolicy" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "30d" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: recovery + label: "Recovery Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: method + label: "method" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "object_store" + - variable: backupName + label: "backupName" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/premium/blocky/14.3.5/templates/NOTES.txt b/premium/blocky/14.3.5/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/blocky/14.3.5/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/blocky/14.3.5/templates/_blockyConfig.tpl b/premium/blocky/14.3.5/templates/_blockyConfig.tpl new file mode 100644 index 00000000000..b35491645ac --- /dev/null +++ b/premium/blocky/14.3.5/templates/_blockyConfig.tpl @@ -0,0 +1,231 @@ +{{/* Define the config */}} +{{- define "blocky.configmap" -}} +{{- $config := mustMerge ( include "blocky.config" . | fromYaml ) ( .Values.blockyConfig ) }} +enabled: true +data: + config.yml: | +{{ $config | toYaml | indent 4 }} +{{- end -}} + +{{- define "blocky.config" -}} +redis: + address: {{ printf "%v-%v" .Release.Name "redis" }}:6379 + password: {{ .Values.redis.creds.redisPassword | trimAll "\"" }} + database: 0 + required: true + connectionAttempts: 10 + connectionCooldown: 3s +prometheus: + enable: true + path: /metrics +queryLog: + # optional one of: postgresql, csv, csv-client. If empty, log to console + type: {{ .Values.queryLog.type }} + # directory (should be mounted as volume in docker) for csv, db connection string for mysql/postgresql + #postgresql target: postgres://user:password@db_host_or_ip:5432/db_name + {{- if eq .Values.queryLog.type "postgresql" }} + target: {{ .Values.cnpg.main.creds.std }} + {{- else }} + target: {{ .Values.queryLog.target }} + {{- end }} + # if > 0, deletes log files which are older than ... days + logRetentionDays: {{ .Values.queryLog.logRetentionDays | default 0 }} + # optional: Max attempts to create specific query log writer + creationAttempts: {{ .Values.queryLog.creationAttempts | default 3 }} + # optional: Time between the creation attempts + creationCooldown: {{ .Values.queryLog.creationAttempts | default "2s" }} + +upstream: + default: +{{- .Values.defaultUpstreams | toYaml | nindent 8 }} +{{- range $id, $value := .Values.upstreams }} + {{ $value.name }}: +{{- $value.dnsservers | toYaml | nindent 8 }} +{{- end }} + +ports: + {{- if .Values.service.dns.enabled }} + dns: {{ .Values.service.dns.ports.dns.targetPort }} + {{- end }} + {{- if .Values.service.dot.enabled }} + tls: {{ .Values.service.dot.ports.dot.targetPort }} + {{- end }} + {{- if .Values.service.main.enabled }} + http: {{ .Values.service.main.ports.main.targetPort }} + {{- end }} + {{- if .Values.service.https.enabled }} + https: {{ .Values.service.https.ports.https.targetPort }} + {{- end }} + +{{- if .Values.certFile }} +certFile: {{ .Values.certFile }} +{{- end }} + +{{- if .Values.keyFile }} +keyFile: {{ .Values.keyFile }} +{{- end }} + +log: + {{- if .Values.logLevel }} + level: {{ .Values.logLevel }} + {{- end }} + {{- if .Values.logTimestamp }} + timestamp: {{ .Values.logTimestamp }} + {{- end }} + {{- if .Values.logPrivacy }} + privacy: {{ .Values.logPrivacy }} + {{- end }} + +{{- if .Values.dohUserAgent }} +dohUserAgent: {{ .Values.dohUserAgent }} +{{- end }} + +{{- if .Values.minTlsServeVersion }} +minTlsServeVersion: {{ .Values.minTlsServeVersion }} +{{- end }} + +caching: +{{ toYaml .Values.caching | indent 2 }} + +{{- if .Values.hostsFile.enabled }} +{{ $hostsfile := omit .Values.hostsFile "enabled" }} +hostsFile: +{{ toYaml $hostsfile | indent 2 }} +{{- end }} + +{{- if or .Values.bootstrapDns.upstream .Values.bootstrapDns.ips }} +bootstrapDns: + {{- if .Values.bootstrapDns.upstream }} + - upstream: {{ .Values.bootstrapDns.upstream }} + {{- end }} + {{- if .Values.bootstrapDns.ips }} + ips: + {{- range $id, $value := .Values.bootstrapDns.ips }} + - {{ $value }} + {{- end }} + {{- end }} + {{/* Add additional Bootstrap DNS */}} + {{- range .Values.additionalBootstrapDns }} + {{- with .upstream }} + - upstream: {{ . }} + {{- end }} + {{- if .ips }} + ips: + {{- range $id, $value := .ips }} + - {{ $value }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if or .Values.filtering.filtering }} +filtering: +{{- if .Values.filtering.ips }} + queryTypes: +{{- range $id, $value := .Values.filtering.ips }} + - {{ $value }} +{{- end }} +{{- end }} +{{- end }} + +{{- if or .Values.customDNS.filterUnmappedTypes .Values.customDNS.customTTL .Values.customDNS.rewrite .Values.customDNS.mapping }} +customDNS: +{{- if .Values.customDNS.upstream }} + upstream: {{ .Values.customDNS.upstream }} +{{- end }} +{{- if .Values.customDNS.customTTL }} + customTTL: {{ .Values.customDNS.customTTL }} +{{- end }} +{{- if .Values.customDNS.rewrite }} + rewrite: +{{- range $id, $value := .Values.customDNS.rewrite }} + {{ $value.in }}: {{ $value.out }} +{{- end }} +{{- end }} + +{{- if .Values.customDNS.mapping }} + mapping: +{{- range $id, $value := .Values.customDNS.mapping }} + {{ $value.domain }}: {{ $value.dnsserver }} +{{- end }} +{{- end }} +{{- end }} + +{{- if or .Values.clientLookup.upstream .Values.clientLookup.ips }} +clientLookup: +{{- if .Values.clientLookup.upstream }} + upstream: {{ .Values.clientLookup.upstream }} +{{- end }} +{{- if .Values.clientLookup.ips }} + singleNameOrder: +{{- range $id, $value := .Values.clientLookup.ips }} + - {{ $value }} +{{- end }} +{{- end }} +{{- if .Values.clientLookup.clients }} + clients: +{{- range $id, $value := .Values.clientLookup.clients }} + {{ $value.domain }}: + {{- range $id, $value := .ips }} + - {{ $value }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} + +{{- if or .Values.conditional.rewrite .Values.conditional.mapping ( and .Values.k8sgateway.enabled .Values.k8sgateway.domains ) }} +conditional: +{{- if .Values.conditional.rewrite }} + rewrite: +{{- range $id, $value := .Values.conditional.rewrite }} + {{ $value.in }}: {{ $value.out }} +{{- end }} +{{- end }} + +{{- if or .Values.conditional.mapping ( and .Values.k8sgateway.enabled .Values.k8sgateway.domains ) }} + mapping: +{{- if and .Values.k8sgateway.enabled .Values.k8sgateway.domains }} +{{- range $id, $value := .Values.k8sgateway.domains }} + {{ .domain }}: 127.0.0.1:{{ $.Values.service.k8sgateway.ports.k8sgateway.targetPort }} +{{- end }} +{{- end }} +{{- range $id, $value := .Values.conditional.mapping }} + {{ $value.domain }}: {{ $value.dnsserver }} +{{- end }} +{{- end }} +{{- end }} + +blocking: + blockType: {{ .Values.blocking.blockType }} + blockTTL: {{ .Values.blocking.blockTTL }} + refreshPeriod: {{ .Values.blocking.refreshPeriod }} + downloadTimeout: {{ .Values.blocking.downloadTimeout }} + downloadAttempts: {{ .Values.blocking.downloadAttempts }} + downloadCooldown: {{ .Values.blocking.downloadCooldown }} + startStrategy: {{ .Values.blocking.startStrategy }} + processingConcurrency: {{ .Values.blocking.processingConcurrency }} +{{- if .Values.blocking.whitelist }} + whiteLists: +{{- range $id, $value := .Values.blocking.whitelist }} + {{ $value.name }}: +{{- $value.lists | toYaml | nindent 10 }} +{{- end }} +{{- end }} + +{{- if .Values.blocking.blacklist }} + blackLists: +{{- range $id, $value := .Values.blocking.blacklist }} + {{ $value.name }}: +{{- $value.lists | toYaml | nindent 10 }} +{{- end }} +{{- end }} + +{{- if .Values.blocking.clientGroupsBlock }} + clientGroupsBlock: +{{- range $id, $value := .Values.blocking.clientGroupsBlock }} + {{ $value.name }}: +{{- $value.groups | toYaml | nindent 10 }} +{{- end }} +{{- end }} + +{{- end -}} diff --git a/premium/blocky/14.3.5/templates/_k8sgateway.tpl b/premium/blocky/14.3.5/templates/_k8sgateway.tpl new file mode 100644 index 00000000000..463923f85da --- /dev/null +++ b/premium/blocky/14.3.5/templates/_k8sgateway.tpl @@ -0,0 +1,90 @@ +{{- define "k8sgateway.container" -}} +enabled: true +imageSelector: k8sgatewayImage +securityContext: + runAsUser: 0 + runAsGroup: 0 + readOnlyRootFilesystem: true +args: ["-conf", "/etc/coredns/Corefile"] +probes: + readiness: + enabled: true + path: /ready + port: 8181 + liveness: + enabled: true + path: /health + port: 8080 + startup: + enabled: true + path: /ready + port: 8181 +{{- end -}} + +{{/* +Create the matchable regex from domain +*/}} +{{- define "k8sgateway.configmap.regex" -}} +{{- if .dnsChallenge.domain }} +{{- .dnsChallenge.domain | replace "." "[.]" -}} +{{- else -}} + {{ "unset" }} +{{- end }} +{{- end -}} + +{{/* Define the configmap */}} +{{- define "k8sgateway.configmap" -}} +{{- $values := .Values.k8sgateway }} +{{- $fqdn := ( include "tc.v1.common.lib.chart.names.fqdn" . ) }} +enabled: true +data: + Corefile: | + .:{{ .Values.service.k8sgateway.ports.k8sgateway.targetPort }} { + errors + log + health { + lameduck 5s + } + ready + {{- range .Values.k8sgateway.domains }} + {{- if .dnsChallenge.enabled }} + {{- if not .dnsChallenge.domain -}} + {{- fail "DNS01 challenge domain is mandatory" -}} + {{- end }} + + template IN ANY {{ required "Delegated domain ('domain') is mandatory" .domain }} { + match "_acme-challenge[.](.*)[.]{{ include "k8sgateway.configmap.regex" . }}" + {{- $name := "{{ \"{{ .Name }}\" }}" }} + {{- $index := "{{ \"{{ index .Match 1 }}\" }}" }} + answer "{{ $name }} 5 IN CNAME {{ $index }}.{{ .dnsChallenge.domain }}" + fallthrough + } + {{- end }} + {{- end }} + k8s_gateway {{ range .Values.k8sgateway.domains }}"{{ required "Delegated domain ('domain') is mandatory " .domain }}"{{ end }} { + apex {{ $values.apex | default $fqdn }} + ttl {{ $values.ttl }} + {{- if $values.secondary }} + secondary {{ $values.secondary }} + {{- end }} + {{- if $values.watchedResources }} + resources {{ join " " $values.watchedResources }} + {{- end }} + fallthrough + } + + prometheus 0.0.0.0:9153 + {{- if .Values.k8sgateway.forward.enabled }} + forward . {{ .Values.k8sgateway.forward.primary }} {{ .Values.k8sgateway.forward.secondary }} { + {{- range .Values.k8sgateway.forward.options }} + {{ .name }} {{ .value }} + {{- end }} + } + {{- else }} + forward . 1.1.1.1 + {{- end }} + loop + reload + loadbalance + } +{{- end -}} diff --git a/premium/blocky/14.3.5/templates/common.yaml b/premium/blocky/14.3.5/templates/common.yaml new file mode 100644 index 00000000000..310ef64af8f --- /dev/null +++ b/premium/blocky/14.3.5/templates/common.yaml @@ -0,0 +1,106 @@ +{{/* Make sure all variables are set properly */}} +{{- if eq .Values.queryLog.type "postgresql" -}} + {{- $_ := set .Values.cnpg.main "enabled" true -}} +{{- end }} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for blocky */}} +{{- $configmapFile := include "blocky.configmap" . | fromYaml -}} +{{- if $configmapFile -}} + {{- $_ := set .Values.configmap "config" $configmapFile -}} +{{- end -}} + +{{- $gatewayconfig := include "k8sgateway.configmap" . | fromYaml -}} +{{- if $gatewayconfig -}} + {{- $_ := set .Values.configmap "corefile" $gatewayconfig -}} +{{- end -}} + +{{/* Always mount the configmap, with the basic config, plus the 'blockyConfig' */}} +{{- define "blocky.configmap.mount" -}} +enabled: true +type: configmap +mountPath: /app/config.yml +objectName: config +readOnly: true +subPath: config.yml +{{- end -}} + +{{/* Append the general configMap volume to the volumes */}} +{{- define "k8sgateway.configvolume" -}} +enabled: true +type: configmap +objectName: corefile +items: + - key: Corefile + path: Corefile +targetSelector: + main: + k8sgateway: + mountPath: "/etc/coredns" + readOnly: true + +{{- end -}} + +{{- $_ := set .Values.persistence "tc-config" (include "blocky.configmap.mount" . | fromYaml) -}} + +{{- if and .Values.k8sgateway.enabled .Values.k8sgateway.domains -}} +{{- $_ := set .Values.persistence "config-volume" (include "k8sgateway.configvolume" . | fromYaml) -}} +{{- $_ := set .Values.workload.main.podSpec.containers "k8sgateway" (include "k8sgateway.container" . | fromYaml) -}} +{{- end -}} + +{{/* Define path for api */}} +{{- define "blocky.api" -}} +{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . -}} +path: "/api" +# -- Ignored if not kubeVersion >= 1.14-0 +pathType: Prefix +service: + # -- Overrides the service name reference for this path + name: {{ printf "%s-main" $fullname }} + port: {{ .Values.service.main.ports.main.port }} +{{- end -}} + +{{/* inject websocket path to all main ingress hosts*/}} +{{- define "blocky.apiinjector" -}} +{{- $path := list (include "blocky.api" . | fromYaml) -}} +{{- if .Values.ingress.main.enabled }} +{{- range .Values.ingress.main.hosts }} +{{- $newpaths := list }} +{{- $newpaths := concat .paths $path }} +{{- $_ := set . "paths" ( deepCopy $newpaths ) -}} +{{- end }} +{{- end }} +{{- end -}} + +{{/* inject api paths in ingress */}} +{{- include "blocky.apiinjector" . }} + +{{/* Define path for DoH */}} +{{- define "blocky.doh" -}} +{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . -}} +path: "/dns-query" +# -- Ignored if not kubeVersion >= 1.14-0 +pathType: Prefix +service: + # -- Overrides the service name reference for this path + name: {{ printf "%s-main" $fullname }} + port: {{ .Values.service.main.ports.main.port }} +{{- end -}} + +{{/* inject websocket path to all main ingress hosts*/}} +{{- define "blocky.dohinjector" -}} +{{- $path := list (include "blocky.doh" . | fromYaml) -}} +{{- if .Values.ingress.main.enabled }} +{{- range .Values.ingress.main.hosts }} +{{- $newpaths := list }} +{{- $newpaths := concat .paths $path }} +{{- $_ := set . "paths" ( deepCopy $newpaths ) -}} +{{- end }} +{{- end }} +{{- end -}} + +{{/* inject api paths in ingress */}} +{{- include "blocky.dohinjector" . }} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/premium/blocky/14.3.5/values.yaml b/premium/blocky/14.3.5/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/blocky/item.yaml b/premium/blocky/item.yaml new file mode 100644 index 00000000000..6431d31877c --- /dev/null +++ b/premium/blocky/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/blocky.png +categories: + - network +screenshots: [] diff --git a/premium/clusterissuer/7.5.3/.helmignore b/premium/clusterissuer/7.5.3/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/clusterissuer/7.5.3/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/clusterissuer/7.5.3/CHANGELOG.md b/premium/clusterissuer/7.5.3/CHANGELOG.md new file mode 100644 index 00000000000..379132cc0c3 --- /dev/null +++ b/premium/clusterissuer/7.5.3/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [clusterissuer-7.5.3](https://github.com/truecharts/charts/compare/clusterissuer-7.5.2...clusterissuer-7.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/clusterissuer/7.5.3/Chart.yaml b/premium/clusterissuer/7.5.3/Chart.yaml new file mode 100644 index 00000000000..d49a90f577a --- /dev/null +++ b/premium/clusterissuer/7.5.3/Chart.yaml @@ -0,0 +1,37 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: core + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: latest +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Certificate management for Kubernetes +home: https://truecharts.org/charts/premium/clusterissuer +icon: https://truecharts.org/img/hotlink-ok/chart-icons/clusterissuer.png +keywords: + - cert-manager + - certificates +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: clusterissuer +sources: + - https://cert-manager.io/ + - https://github.com/truecharts/charts/tree/master/charts/premium/clusterissuer + - https://hub.docker.com/_/hello-world +type: application +version: 7.5.3 diff --git a/premium/clusterissuer/7.5.3/README.md b/premium/clusterissuer/7.5.3/README.md new file mode 100644 index 00000000000..626fef0a05e --- /dev/null +++ b/premium/clusterissuer/7.5.3/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/clusterissuer) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/clusterissuer/7.5.3/app-changelog.md b/premium/clusterissuer/7.5.3/app-changelog.md new file mode 100644 index 00000000000..6e912a5e371 --- /dev/null +++ b/premium/clusterissuer/7.5.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [clusterissuer-7.5.3](https://github.com/truecharts/charts/compare/clusterissuer-7.5.2...clusterissuer-7.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/clusterissuer/7.5.3/app-readme.md b/premium/clusterissuer/7.5.3/app-readme.md new file mode 100644 index 00000000000..da6fe3111af --- /dev/null +++ b/premium/clusterissuer/7.5.3/app-readme.md @@ -0,0 +1,8 @@ +Certificate management for Kubernetes + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/clusterissuer](https://truecharts.org/charts/premium/clusterissuer) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/clusterissuer/7.5.3/charts/common-20.0.9.tgz b/premium/clusterissuer/7.5.3/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 zcmV)OK(@ahiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ%avM3aFxbEO6bPy(#_AO*-YId8Cq7wHyY;m!@rbfLv-3@8 zz$%c$QL#{6Kv8CU9I>ylueVRKfoq|zBqd6=dsyd8TdV>Si3E_yOk^e;GM^Lw@N@=4 zR$s!o_rvy|Mx)W_bvokTMx&Abx7lnrerR^O{Z6CbZ+9C%G@7kWzwrZTJOeJ7C!!37 zKQx})R=RWF$pd|#Fvu|R>7W7t3>lt4hs~mK9g{-`GBhROasaT;&@>bUYcBHe0)@+L zc@I0tr)U7)ydPcGn)PO05&xbJz`rX108j%yoTCAtQ4o-jiFW`*p*H|C#sWGxJajR2 zNa)rbGC#!r0yA{TKG5OqFCTANSb+ilfI^CiKLCqX1qOln=|P4ltGI|dAr6>$_jBYs z{4e0)aR|dDn2-?Mh7l6;pH^msW22j%Vu3VonS~K@M43Yv1oV)F2p!HLWhgvU@8wFW zV23xPLBIuMFr;+}DxxTKh|iGE1k~uT-|I9Q{cg8%kCqQ4bm^c{194-On#QyyUQ}v8 zHFF=0k?HE6|N6RFZ*}U8TI0`^ImAAL*hirNhUO4^eEcTlf5m|7B%D@&qP|6d6!B9P zWO0Q7TLx&L(W@*pF0DqrQ9rJH?RmX>)_WBHUqCNH^qDq*QvTm;H950S@&A5j$NyjC z*#os2cZw#ILGc>~gHWh8`Cbm~D$uizX3HiHa2V9x_%1R{!Dv1dTf z1H%ueR6#g}KL1P>C=4SHxgbCx|1Lh;Ad^jUEI<&FF#?>Mif`iQt>CSk3unuZP`JPj z0>h9n;t)@^Az$iu1Hhb;s<*l^RZTW`>P37%yBOx+$hkXZ$aic^{%yf3OX^QmjTOd$565Z%r~L}$cv?Qb*^-Lt+m)wd8q z7k_KWwbVDx-&qtq8ntdAW~~y;dX1HIOER8-P&N$_{mlbPmJ*ES^lJE4mCj{C{JUm@ zWy~m3E|?nevDvEtFh`8DM~gw7xGt5iFW=Y<8!)07hgw3et2oPv&DOc_SOI{A5KZuX z8nAj@1Q@(}m?0nd2)W4JU!xfg``m|P4^cou;9@HOW-|mP_!Dx$9J{WE9$?5z_=0-a z=Om}7lys_)D1t-_KXZ8RVsHs0PJ+P0h+56@em$zSNxB`wRFot>gV?W)A;pfFZF}H4 zkUQ@I7%zdV*o>GwEL;LctfEzqkozd83M!fH5{x0AV#GJEO_lVPDt6`>O3;?~HVC{W zz!TnW@^DH*{&qU`5WrN?(3NAVznAoqIW-a>-ytEbi5`EYzKXf~4*Pf>&4Eu`G~}{| z5SsYJFh^YnIFk!^koJnUd0Ckc@%?k{H?Ts{IquLH#QmX%~r zD|im4h>t>u0zxqp1^~5Q4V5{33^u}mBIqEo#Q!j9W%wT{M`sQm_cxbna023aY!*k<7s}wF{Q>FsqzvavhBmacHrzjkNZtp05^)@6?V7)`o zz4pE34I%7j>>;|O49zW8Bi7C^#0%`9DLSVP^q@3z#FAB@KfCr@iX4Z`gJDP}*h6}~ zNrnC<^7%fe#1rw!fdL$24>KGuPUyM=@Q;70Uv5aO4YmeOE-x#3-F@VIoX|Ge62!_rhq@@o&%<-9g<>a&2B6bu zH0I*x9L)u%Iuf#fh<=L@O%!dW3U(XsaHV1zl6#4$aP{Hh?Be9^^kg_1C_^RmJcYU{ zm!xh9Z3E(3pylqT1er@|4As+aMku>N?16;$$(KVujqDc}!_(vo&QB~zbOuAN4RXQr zD(3F`bBKggtOxVNdw@$mLtLNgcS;-l8Hbd~FQ>$x;Hjhsi92L()xJxVc*!5JH4Z?v zSyf1$co#gLq#z#~gO4doU)VvwOpx(Ty0N@U0^*VBQocSVK4l@q zKGSG3;-OFrpW+R5X2^{^6kZ7;$o(k9L~JkGkf7d&lD(#13rN2ZTno3PTG!fJ zf)LN4-1gNQxjV$f6))ZKM~InSkGP`%IeK2i>@D6M;%4QOZCpNC6yzhM6Ekn*&qOsc zM$~Q~Pj@bFI__`v^Jh^1AdRC+HL3Fs)B_SSs{T|)7x3jvH3cLP(jW)&<0>c&hEv3Z zNcnFg$*ydg7f&~vqmBQOyPMJP*X}HHg0I#CxlnKM9R1FPd7;yz1qzoBGZZ4BKw*dX zpmO_v55W7|)5OwN;O&*IUTwax1$LTx$;FvZ!~BIA7}KLLTWWkRF=f`aFVVLwhjtgN z*8{zWxkVk3V~FMfTb^Ml7zqYCglskdhqAIPDF#Y%452A07z-GBWJ({|zygMcyt0GK)y z5BOi{M)%@YMIrejuTAm62Bh2LYaDu9eylg@t$MRNXt#O|T_zA;xh(K!U7#ll{P_Tw zH+}i$pJ0zDi-oR^fAa_YKlN6l(X2H(b%)IB=o6d=9vY~lgE|+C>U2q)^-s&+bxkkw z2f&~)q0$JCKCuqiyH2;lyLI6+6i$R7sQFd4pfHXyqGTD4So8R}Q)_euVj*&8kPW!# z*34Fh5u1$=6;?(44shNUO7XBt$sFmQ)wo0eDSaTJt4ipf)hvt)ja~|vd7lF{T_^Lt zYU6)~sl#RX<#*SEg~L{@fQ7@d^Ix&bJpkOL59ipa1q){tq+sEcK`L3QRwFeRGB^^- z-Sf2vK&BM{?y=9uYN&S{_JMej5X!B8U|zD=kO_;7*0ePnST{} z$fgaRAz5I)kC<-MtyeJ#LcA~~cLp^V*2S(zqTJ=g;QcJ2Z3&9KL=3pU?3 zEd&ckZ0}rKQ3o(n!~pad3X!{Spro*rj(wTIkdlH_e=hw0K@LMMn1o~wMyDs2=ho3# zWe;5Yo^(nK(FBFU-$Kk+{OSA? zaYfhNucTgz(ciREuIlIrgyt|1HO#L}15|)ensF`)G+}A8b!hb}QzINhN0j4#WZ^l` zLm3K6xVfKn->$B2&qsCkiB){Ur0Hsgpv(E%zs(UV^zXrvL}J{qPZ{()>`%ex&!8@S zw}rFPmoH$vwEQ{i!fYy6j5KR7@^?7*jCDg;b@Tn`Md)05g-$JFi$*>Jn)yoEf`>*cQORy zkUUU*UM3L=p+7~%IMqPhxw?KSYa-tTHT6dSj(Z{nLut*=P_t4=H7~#FI(FNpQM*a= z;z!;;FnFyYSRM>@K6?@f;)&onvQ9107x~VB`Gw3;Uf;y;5kg>2LV4u-(@(;tmFV41 zKLNFe2X3f1la7LU+oa%6N<*}BBAVt8LA9lFbQc7~x(qMqrA36hemFiY(51%okY7?h+qpigPLK zn$uomuT#HggfjDugzE1=NHogT!~xC1-xQKQ##I^CmIw*h-)-VhZZ zF*+lJtwvIpG*~w3%~p(M7eUxO?zP5FuhASg8y)9p-0LC7>B4cdIXOP+P5P~7v*AG4 zpFjkiaR+w#ZnM#C^~RG{vlL4Pu_v~v)o7ZcmZwLrS#KIwk7g60)^Yo&(K~J(b)9ab z-#vznX3J@Jx=tTDZ3lLHy*BLj+=c_2lS!)$8%J$8?zxSz+i^+}b%?7}q}7=6vNc)Q z;M%FTESmP=(d4L$+D)h9wkQ4WxH*PSx9fJCPW$K>9!;FC+eS{?b-Kr>Kk0OwNu%9A zYW4d))NMNDG=*M({WSO{y)J4VBNxKXq<7qCyPaMKp?;&+=r)^8 z*g0w+ce?GKi^j*DNxM1j^_s0-r{CywyGNxMQYVDWnXN`q71TJ&*cwB`qthH75>i@)Ae=amSf7kD=Ru z?eXNeanwWOawhQJokpG32$uVlU<&$vvn?bF_W6Q>Rj_=U~hH!Sc{7oa=sdrlO zoJ7d&x{bcun)G0A>>eGp#;DtE9;4$U2eury?KcKiJf z>a~w6747YM>S5%sK|FU{dw`hLbUoY2EGA?Jbx?PFJZbk~*KIgQ?s3EIcRDU=wcX}X zx8LX=H;%iL@wnS{TgROaa*mtsQM=V?PI`@YznqWHVThqS-V|e1Eg#`t>!^D)K58EG zHQVYpd+t%^sMDAnxyR$SbJXi~JCkO=+dJwtyT?wq)$7BibJT0N{qCfFeB_oQ93mHQ zOkhzdA6azVX||4zo6hmL=N$JY&1SRHcHE<*N!M*2yOVaeHJk6@cGb=2&(drfE3 zp7fgi<3_L1I-bDJxHoBaoqn@?AJQ|i+0DgvI+NHs9*JBZGQ2>wV0svPd25ub&2GI{ zU9YL$Q=975TkAD7QWu6H(TaPuzO4ffV=@PiOySM`t~t|~Y)61u6z z7rcHwq=|8?EyQWxW*C%rc@qqJ_10P#C^t6be;8f?s?`(6w)Ir@!2i;RghFCRV2nKS zP~kHBB8Ww9DbNcTOQF7~0>BYV+4$!aE@f4|Cd;o2k#{+Nt8X1Od&kGkMyuKFv>Kh( zq}_2~tJ66eAHk!si;mmq2=%)Vbz75e`?%E_H{qB|_s#y%5klRyG2rwCfgtc|YJbEb zdKpJrqhqeYOxD3+BO+^SB@&=axP|h0 zN6O`WhC)=Y?17UwMlmkxNH0$4y2#}^Ds+WQJ_Ifnk>fC2f_tR+bZ9I#!rKHg+W&ed1>Pl;6R7Wo#4n1L>cmYl2rovBth~jXMCs%y!6=)2OMBCYOe_wA4@u#4Kv5BL{=|(m{!LPo#mDwDx3fNU0H$3a-7 z#m9m50vHU3kj?5~UDRT`+F|OgJinRxB;*TLT7j)Z58$t_L9^cM)EYU^r1#G-L=*fe z5A3zF|4AO9hdn+5GSiI%ON3L&@^S|7**PNu!BivKzBr2g5be*USom;Wh)M>II2_#s zy70MN7kX^^OzkMQm!tH&t%Em&&44^#5;k?disTgMqaR5BdjOL&LoejFh*5ymXv24UmT6+rn`LbpmUfU%$!e3X|7=KwY5C56)pP8bS z)85QkwNA59rU|NKidz|sOrbiDeb4p$OJa=155&$$6dyDqSUR z)z%UNNu^~0IkKqKncke=o(xiQ&=fNC0GA*n5nD%nQstheI|(2husU7lkYw~cmx`q% z%y}?CF!Z>n&7gE6;QJ(kEDF&<@(^14?nE$zK0`{^fDVhG=Pkhl3Gaof_6Bh@IU!VJ zH1rPz6LCbyBUhb-vqHq%5C_sEVjMJfkU5Z6DQF^!K;(OTRxe2e9-uE~I+Ge2WFW-! zzOo1Y@sAKq{`t>WCfArGc?|}*PVto1?~gQJn8(!=H{BnCcRDa%{ zn!heb>aX`_@|^%BeRWNZXI0C#rZOfMln!CFC#EPoqQX=Qt z+FwS^24(=()7-sqdRR>VSM0lMK$LWUD*;;7g``_lJ-M%?YRS!Zt*UajEohY@nZ=JU zMYTAkqMFkSRrboDlhG+rtbqE)!!2hZ!^l(2kdGjzY(k^9O)on9OIj~@y?9JhP{+`@ zN4_hhzYqZtPR-eoj$a0JMk3GUvyLL4#T`=>?Fl0r$nNv;Xe#Y2@g+G@1p@#Qx{-b! z5T4FhoCqkTQ#-_$%g8cmm=0p!A#=N@_1H7fEcQ5Rf2Cvz>eu>s9jYuUzDie||7>O3K6% z8&BrgKUqNRaU?W}=kU{eAKGs#4`@6iL}*S6&T^rUhKf3%;y_HniX27(LeKnp#MS|# zi)BGn64B4f^*8xWIMM1bC*@I_aQaUBd~+5ii{&_D>rrjW?+GaeIZ!XCL z3Wo|GRamNLMx2$Mm7kKrwh#%eSHh`D%nK((kfB7rH<@b4MRVx8l|&*qNt9%6xb4y; zfFYbCCh`JEA9rC&6)`88Afd>`roIVPQ#wSSe+r;4vqRZb7T?}rpUZXcgxmhbe2!cU znJyyy;B~qKlXi*M;^n0hb&=|uo(&gl6fXx z(S6N%$9doY^#m8@C~z4_3tJ21p^$L#N_g%rn)Tix3~-IlYkDX_sgdy%sKZKb3&uw| z)>wrOr1fQC*;00S-`c?>Fg^T0x1u%yg@Mib8R6mvxR|J9J{%~QHv=iKxCf?5SPWbx z5R>!Nm9CWrv#Jspt97Gp)bl&7rc?g6%AVO$G)4-?FhK}C4~mf0mFo6Fa8ani%3Nlu zb=%p0969%h?zuP=+r|<^KBush zQlaO84`Pms*tg6)vIQsE&Ahf{OYt!3O@sJ9i!IxCmWCEH@&G3CE%TPTan-J>D5YOH zZhE}4?dG%+qYx)+1TK=BjmLF; z@QQCHPz*Yr#Ea|oYXBeUA#KM2D)50?QLF&-P28PQcQT!c|5)FIHN>4v-AU@xUSbI; z6a*p0OPj15Sk3N{Nwey;QzwQ z9gfK&X3(4sxk$LQa-_6kcc_Dkzyu@DmD`r^LQnH0*^ITr?(t1_YK1`W0YKY7lh8q2 zC>^n-hZ3LOho1HOeolWy%L{j4gOf^)%*zzNznvj)ab|`l8XK8J)09tC@l8#CC?i`A z_{4GXL@8h*P)Hbf0CpvfcdNy0iKc(uxm1F%?rY$?KQ5EPoS9CS@h zK65A7L-ki2-84;-F+}kP$#BH(bB_bthG+3SKth@DZ^D}wCl;f79Nb=xK8S5Z9XzO| z!9}wJHFCl+g<=Y+O>TiPCb?Z3RQ8Hw#Se)e89dF zs{D-BTbjGn_tbji!uo(K@o&_wt8(3mH76Cxdd0j{Lw3UZYOGWM`@q9gq@$ceHi(N` z-0*zL+l>LKz;LqHGRioD5zJ~u*E@?JfE6ntjR z`E)lJ^9G>W>NI9?jsTig*LBLnq@5}!$lfwmrFVj26IGt=Nhf9y7AyH9HdeXFL$+1! z#x_D>nrnkg8M7*L#6s-Ql?K~9=R=*mQp;*{;$ud_0}v2b{cV{!tI1N@cgD3$|Jpms zG6Yj&&sC>F$aj;DDK!-pIkz)fi$KQ(^ah|Co4%hmzFf z*~$V#u`FcLg17H4%wa28ppYx}GcAK>Ta1tF(rxd7%luYlXF)_YRMW7k8N*a`iCe50 z*9}9R>UTz+iW7?TdJ83gXBTtDPKixp*LCG{A-C`u^5&A0QCsgMp&~2^P{^e)TG4+Q zFLrSg00btDgXW96Apgxbe!j!nS<9ht1kj}_z!b8bFKRU)Gz*Me@PLFWphb}wr*uAa zE>9Z|0hMS0xyr;N+YruK#WVx@nCKn67ajE*;)2Ao=?`!`&3^~I{ zLV;!)p-(J?78Je#iwOLQ;#ct)U+Y3@j_nChLKx+w6Y`<7feI5P)VDvxgvXpRk?+b3 z68dro3;7Lbl3S&Ny65 zl{a#!>8Kb1mmd}=gdQK`8u4kJ7p2C@SWA=0Rd!%8qwmqOI1&N6u5#mC(X#R4`7pdv z&DX&NTcc?XI^DRHOM$PVz;;5h<3M<0eE+TI_>pKa@BpZ={sSGLa{x?$3+F#}q`GvY zk|9rgHGeb(VHl^AKrV1m5F$sUR)~cF-DD-k_ErNgis+Fg^QkYtnG7A+pODziDhEp5 zm4v!|>#wm##)n*>kfw_JBYGG{ex1(LNwX>!yH9f-9I=_yCW$_s&}^8~D(Nu*BQ_Hn zu<Ldb0d?fRAhmp_qfQX_{-{}QZo-*ZFX?f1_R_=(Oe(N|W zV0W&ca)p)NXBJ8>qU;XaE)bMB_uV^_XHCBr9Q6){(?o5^MZLS+ZzN)4zKHMmc-#dc z`Lw+AL?WpKML1P0N2G~86*Z-Fr_xS&2EvN?yj8PHt%$@>pC(Nv#iOlahQtA34elEl z;vhus>N=C0ywQb3)0s7-DW_H|>s;09;fd#g1q`utH#549G|}qAO6g6g4R?XB>6f|` zK`th7B$iA*GckRW0cFbvPujRfP~YMR5}#k%Gz*U z^5AD7^S9-&lg@w2M+g6oTrq-)l_yDI46?D6P1^ay(A6y}{fs@7n)vHBL_EHsrkYC3 zFFsAu^XfJ=YIfQn;huq9K#`D3kV@LMmmCznKU$R3JbWz8x$eM}tkYSlFn<#wJ|tXf zQs5OKM0biv;hTJ>+K9;~eoPc?)sQn^71i105+J4OE$>+3SYuxjS4ccMC_orGK{d`M zQEYP&mV?Yc`jQwXJt7nGmet!MEB*LhJ4o0t;u*X88iOITq^Lh2*o${ zC?5rRLrunFVM&gNPueBth&UuZ=cX2;=7V6vH=IFp{HJhuYnD8U(OdPOm)|FdWwq*< z<3Aq(7)}L>CffAW)@wkecCVSbUmM6!YY~`$7s!|Aw=f7Kh?Id?@aq81Ou|GQQfAFdX`_9|OG!6OiPsqx z>4f#}oDRv17a%m}w~blHe2mhQxeCD$j=bRHxWu3P{&qH^5P6+E6J;lbU>*iT|@mT_O;(~ zD!3pKu_@Pw3Uwwfsu#yQgLDM5uAMd^YXmn4L$=}Pgdv-YzW~q~?#gxoUFKP~0Rud{ z2kdR_sc;!gocTDmGY*wvXAq*A7SBj%d(BDrG87=+MZSX(1$*1Xs^a*;^ic;UTuzIa zJYnWQ^r0som>K31S+e{&ab*?#GL@6TI$M^96hb0`DOFi)e!La?y4ut-C{UaE?9;4L z+<41(i7}+84vZ_k;915s|0nP-osZ{VsaM#3!|)sl{oNf~Zx=F!&%Z27k;zb|O6f&I zCSVv}@hhE<4)i8y24*3NU%g!`ID8~{lhXVsj-z7& z%;O8H1we7DsJK-0U!Z2#H7`{Mr{b)T0v|mHi+tO=>A-eCMZ8N33_&ox}CElObTSWFUE!s(P z7ZGpbDw>Z`$mfqZ0r4Gkm}GtrKr1erp#m)7T#13OcU5(atsMX<{yi37gy&1JaQ;lK!as{N)5=4JPa7^k@wubZ zNe@%^+rQS=)r;O~A9MWzh$aW1+UoY+;_4b$JwR{ENIgJrv@Tw?n#?sJ`4^{sgKz6L z=f>2Qp!THBq7g9{aLNEKZLl`*tqVHMyLX7qq|z*Nd<%{jOhf3ROr#tNwNo_&A(4sA zC8LokG+Ytd3nzSm@XbLn5ejB-fxs9cKOQT2*ZL&#_?E#Kb=nf2f!)Z!YF$-P+p{JH;nN#>c3z(3lkK@C zsvD1?)x6!f@wZaF)8DjyibAf96f`XsW;|b#c-xChg^9~^dre(N^r2CLAbJPQn_YSa z4H7lt8FnjD&nO1`XW)@3@X!Kz2l*-WrR87%P#BW%KqostkcUl%atFXg<7j#SSQsD6 zcw~CXArIt2PhgO?QA!SXdZNzAJu%jncXQ11MhFeeNmlY~Re9IO=8;1u3Pa?xLm1#Y z69j*_cWMDX&1{y5)Ce{^5|>a5tCc)RwC}2^xv1j)OM?k7of60M$65k52IapyM{lt(6Z2e2D+bZ!@&P3bYL^&BMeL%SX znXqWBJP(QcPJT)lq138WzKs7Jp%A0gxwSm|F`p97VCD{}V0!03XNK-(nB9pkdq`IG|%-{0rqw~x2(_5fs#hq4oUhQ*<)rBH+ z!U3Ss{M8J>;BM^QQ;zaJIOHNl=I#HLDjFi_?h9C=kKpH<>vvo$6IX?iJI)#Im@wn~ zCE0(=4>W$s=Yqm1{Q(HgjEl{ndU^8Z{IZ%;AQ|v&$0xZ)`%{0UtJh=)N}7Fp^8W4l z%0^H5po1A^z#8;DaHAC9*aHu%V}u!@NLpYx|A;kZok3GyYN?vti}{vx>^6|4j2o+) z#%!QraGKAEYne=c0{@b#GuO)%Ag+Pi%Dh&?#XA*7^lEr4AtfNYmjZ3IT zmc7ZmGyc_e8xN`7-wEx04Q$3RoI^ip6G&r~fS<4wlr^xx5OVPtL6zjfFfL=9u7md! zO(HK9j+PcjWu$358JjilWW z_T#xn#`nlE1_DvWIGe=17!vF=F4qr^6^^c(0EInpjaYy z^YdxD-9A>a4VDQd8|*K9Sp_Cyq~cI5KK^o4#L`uBOHVub^D5m*b&(Jl3CicMUNsl5 zlHNFbsXUn`Fv@ruX%nFKSx+RoiI@GT9g7pRUH>l`qVv}}oWtLV4wvrC_PM zd%zyJL|ma0S3z?M#9r9C`BB@{+8Fgfq+~5bo3;mshyNvG-~akwyzpORj`w>MT7uGl zC4*W2TK_L~WX8$**SbSORDZy}OCD(5N9^#wEUKqLza?bqp#hlEqUK#h8J0$wp?&v~ z6&wd>TexD0`9<3Y0RAqF1yccBFO7CQZB^)$oe@YSH?Uu+tDX+yH_{#8*Mz$tQ0h$b zt-xSV0xC{>Fk(W6NX*AiX8`DA_f0Y;={*tZ0qf0E|5{HeawmLm_5A zhh#2B|Kuzc6(Ps1q=PvGo!+DK_#i5s71Fxj%5uvqH4ZC2lC=@5L>Bph9biw~$)}xo zoJ8iSDA2YMZ+QSHF)wXDTPtwMQrx~nCi2JH=Kh0up$WelXbakb3ieiZkwB=dHF111 z*2X$HP6aG=$2b2Nd@~N@bl)V|VjKzs)S)p4OK zYDv(^kkJ94$eUP&uuh$o@m`@3<;*DI;J~LN7Y9-N_^#cbriSK(*OuG^$n!#U}4Kes|_{P?uQmL|C42Xdf0k?E>EjqtK&V=?o$f z;H>T?RS{{tu$^r92DzBVE-uS8@4yk4lJSn`q*&&-$#bqq9lMBoN<^Mus>crV(e?>L zDnZu!o6C_-{1W@U@?G@o4cEJ3yfxn*nEq&vlRwF1Kh>pgoA*>z%mD@A^ z;gpCp{!R5$y7iqzY{u7%PDD`kg(WjX30~u+X>gegtChZH;@B1i9$CiO5kn+0d{;!l z+rSfh=MR67M@9-9>ckTCP{xJYSLYty#Xh-p7I+)C(P%Upy-w!`nVhwe{zC5U%bzFr@O+;g>I!&!1~5eI%$dr@m;`zC)${;V9q4(SM%7c|A`!uhLLJCk%?BY)fvef6 zsk&X=-`9jSa{>Jp6QIh~m8v05JYNjvb?x32mnj^i*V1t`2~Ce}_IGCF`TB9Qi$@Qk zwNgr#rOw%(T%HPR^)Wk93gHw@`6Q%ja-CF57mf=o=5K(MtVsk z*JZMS%|=KE*Q`52I!Y#Ygw)4%Mo71tN81FL{0&1^;eDbsnj>{><5*q=XWgbqR5}?E zGiyiOss82+SF#hC$sw3Yasccf`?(`p$ys_AiUKMAnBb7upDGTC{b@{A!|T&jd=@5I z#wHC~MKu+pR2?Z`l!_GjjIxAPs_rLP<$BCAW|yW1x$LrV)G`b+yM)V`XbDHT$RE|h zDY}}YRLpw0L=4aXKJZ<924$jjc{vV?*F>th^lVFVpCmF_?o;&l*Ot1!oo7w`PYGX- zQvX)zf2~eCqyIGf^#SJ&9sgt4-e5T>Xi;Qayk zaUsYTclh4)a$)x@ui-CWDl%z946?X+UXs_SiCL8gT70b5YJB!q`JYdk{8iObA%Hkd z0{FLalc*k6)4l!L-1+&RqWxb7%0GGYU%me~d;RqO-{`ixyZ!$qo@d|us=xIT2+OBN|={wmgO#+W6?UZFyc>ayD zu=Ta}$?fh>tNFjd?y>BDCI4?WyJ`O4X|#6y|0SMp_WVyzyA4nOiWm0RI&{n12EWxK zx0vXq2W~sF+8^dA;{S`l7oxw+%l~-Z|HEqj-{>}4N&esLcRI}-|9^?c$p0#n>;zAR z)Tc7~8o^&?9bJ!gF9Lma(HsVOGQSHM92D9ucy-l$Jqo1I6$N!V8-Rb;3`^rI)W^Qd z<-bl^E?Nt=OCEd)o&U8F{67xUD_#F8z5eMFEdVRlf4h;<|C^1S{{J$MS^sLRx1{^? zb*3PetN$rgTh$SYw$b$q9J_cM+6XY@Mdf0)?E<_eBSOlu*K^CPXQP3ZS`#eo>uH9C zH7y4lTMBG@L$`PI6x)IR{qEPR>ofCf^!L%-yX&*}m**8}T>#+hYIOJO`T6kf>g3(| z==|ox`ON@SiC^X4u5bC@lS#E~@Z$8>dOUvA>8*X0-dea3fFQ&^n}F({76*S?RAX2o z-KnA_muF8e&Tb06(uE_w?x)rJ9K3QfaNFL387%XV%oM6yja$0>W_a|<@L2R7jR^oh zU)-F3Jh{9ygQ#EJUBAD5bN&A6>~8e_&DHtsNEvt1P}AlLv$kx=dP=Bfi%l|u0RAGj z7V!nF)^grTws-#3W-kT(t602h8=AbhWcCWcW) zS`e)5ys%L%H9x-56a+2yC4|E3t7;|XdhDW42jE93193Wa`kT))3Pzx(`IT;L%~ zgJygrS0H=k_jjedT`F!5UV~~i8(p%YQn9W$|Cd~Ge$g`meWIr;NV*vT1j&0(pm~n; zxRceNRaRfiP+2Pf$U(9EBWbik^qru^;xczR&c=`o_=p}4C{xIY?FjR|3S8e<6=VuG8Cl@+qFmf37H z(u$`2YVETJ6|ImY-$s6r3c{+xjRe&ntq)hkOdlZzetrMu{BCr9dUJj&lKY9=fmEbd zlXrK74zjKe*C|EB?Ry$KA?#5me5OL^++%-QuYANJ1k_w!n*6RWuKhCu(0hPOTDkYh zgU;U!gFwcSMk2wlxIRp-Lsz(6RX7g%zE~aItuns}L0I@^c?iloSD+V#NG()#UUNIT zvwE&FuHBCAM%Smm^52IG7#@a^pLemiTc^aiSLJU{ZqM(|E^bs6509-XqR+A**VXT? zuTIaUxLrD3&5hqlIsA5X_kMJKGa8<(1tp&JX(%VBr{}}lyR)m&I>?xd#+Ze8AnZdww0+vv$q)s^Z7?AiI~ z_U>Z%WVrUl>;^cWk)!UNK2v;R6Y)jvrh)Un-QJwso!q?DgvnK0HzQE`)_Bv{?a9UE z==9|B{Omc}RTuKd6P+)*U(f%ZN4A~Hy}rt=9l;Yulnq?L^V|LQG?!BOU*0bJ-1>jF z-Rr0Q{~E1b{O^lAM*f#$4PNQHUbw`R+Eqz7Z`dWdSRSK}>-#vyD z4I!JA zG>>(Wm9C35dHss;U##eeT=^^Kh+z$HMFmi~EEKUiq({RO2U0yGdRxb zqUX3qJ{z^!7qE9ROUsO?WR33tmgO#m{45WA>Nhty0|15Cma8&|GH z-p-ULMpaB{sb!Q+P_FxknW7u8BErq9;%S#{*j_u?;M)8;MGMPT8dGah(jup(A!A~0 zDIlrAcx{~zioHy9w;GSoeoV?4p`ubn|54OEi5b^W6G6j^z!!1Dy1KjpyUNQ|D==bY zh{8D*Nr96&Y?b=!%*cape#u*7r4QdUcIf*m%Q~j#R@OC`5YI*7_LsMW`vM!urc*`W zWlM$InhxI_YmeuEG^ZE^MGg9xbg}dl)q6K26mCWw%;n3CA;N>{v3n*V+Cz&@hR8;_-H**`CG03_4}=E z`uw-u+~xm$k*6sBmot>F68EdwoR&>_F?|tHwUC|E;xw@N@~jd;VrG*J0A2)s_T)Rh zyqBi()2T8mB7g0J@SKR>_#{VxE6TYSXW$gYszyq#W~yd+VC->Ks)ATr>nbI*jD}Hg zD9TvjgYhM}a~PxvX+Eq&ODm?Zl$|k}sdXDP62EhXqt|YjPTw)$)LF7}s_HuJMHHVAostRsKSTotmIYSJ3Q_{w>IS0r( z#9gJ=l+jK~{i{hQ%WXzEt?rc)E(W|Q-8A?d5G$y5_!BsnH^r$N;f#`D-?u!6*arb| z<(;i~0wSNIW9OF0Cb|&5uU58;LN9<-+3xdO*figLe&@4nDVa#a$~0m1R-LVs=eW_I7tSnQ<2H865*-C5X=nw)@ZsVWxQvSxOSk+Rh*COHJ zPvGZ^zr8z;@Bf=(HjBobczIp|hnUg`(Zi$W(NRf~YqRi(do6D3qo4{SMueK3^lT8f z)K&BH!*4dYxsFKR=J48s^q4_b@eI$jN^)X)zD+VdewA1@k7psFf&Ygi;tF|UQx=ro zQ}Qi~t7VMXiwSQcW>~0}N*W398wnexrf{077Jw=tZIR(|1O30${$r-#G|H9#qHh4n~U4?5@*`c`R)6QGyCV;iW?W7|C&k#GN{<&(6=T&Tl_n-~2kdyBL1xlHd4 z=aXVZTG?IvGvfT!}9_=Y{0oxy2IKpYyWTi`)t#m{pYIf8`e8IEk2)7)2SP zk|_*cNpl$V_N9znEM#XWZE4y+Dk=&;b^W)svBty`C9I!czEoI<)D(FKgUTE+=q5-leE*VHz6^_V?3K9qYi9NAYE(@N|>% zkA1$Ug?O%dt!903O4D4Q8GFu`(8@0MNP?ZjAYPPeFww5{D@8w>9jrsdFJDY_yHGj< z54=($hD|wF@H?x&3F$-Gy>2OO2`SG82GLgrG-H+Y{pFEA0;Y$?Os~Uh7R}>$ToM>>_JyB!Uk-YBYI|Y$O|xOD<5P|H*t7 zbPL)4R_cGfW-A^4-|O!3f4$5j^t>}M*dxTYp#i!m@W^tGeD;kgfu@&hs)1$+d<{j= zH2y?Y5C#E_H9QabF*=&#?J?)pvZtuL;#ruEhI@;?G8?9yuL*HTemTs{4sRMY2COTVH@ znyZekHCNRuTLXP*?X&j{X13cs>pX?}ztQ5JZU9)R|F?UY{Qs@p{ZB9QNd4ao_8;2- z5YOo~EdW+ezJdwBw7y*%fC2km7y;rT*jWK~R)BBW3SegH&J3_K1MJKIJ2Sw}46ri; z?92eW=UaY?^nc{L0m0kQ{?~~A>SXT!Yxj2g|BE~-Yn2@AZD{{`;=G*hPi4v=q5L1n zOO!;y%6ub$N-(4>25TAu;!au0)w9G|>7k(CgL1Bs-Kpj~)%;~u^Jq*FQ@0#I*9{S+ zXicry>};mq7KI<)d_Y3BDK4VU*AT*1?f)YWJ5Rj29TRRmn+k#|Dx644@(r#}B)+g%%l8fP@lTHd+P%DuD#s2VG1gj=q z{g~{6shUqsmd<4^RT2VfjAFeOa-R^rj>%z0s1ulfPl6qg)BIZ$@2nh#s=?}gG)AG17!uT1%%J9H z?304NJ3;Y3K~S`ov|MI3=lSxbqGYx8q%`hgIJ>XXRxqzq8ELGjmH0W=Gsh7$v|zRSyRgv_rp)6D{yN{u{&^jEY5 zbx@Tz9?F8ryRpQETerU(K(WNETYGI~ea@F)lRdaJQk{aJrMP6VlcX%7%i6L>vSZM9 z!7J4}ja!uy@p^&65W8Hq)KKi#Nv%VZ__dXuu_n?p>MtcQENLJuu@`HxRDq-yB0BD z6)Zi;YaQaVkZ^5OdYsgOIU|qPQv$rb7OZVTRGMS|1_d5=AWhV?-dok1suKK^UnzcX zRcfnBh=tg(=!+*QJWq%3-!tst-^EA_QRpC_!70++s{whvpn&DKlZ0w zPkw>?Z_P%(ojLz+HFx&^7kPw*|3VJ-HZ1>Y-h5-8|Ehy)+W1W$wr<_03r80z+4RlY zOI(TdRG+$h+o^5-mCm5ZRR<&07~iB&FKqc*sJ8)NpP^}}M3JNky`afN4Iy9^swrg+ z+al0f?IvWVf@U?b)NqK!p*6i~$%#v*d;*`$*Vo{cID9FCphr5Lc)n)czV>m3d@y1p z04JUYFy);-;A*>rfDI5-DI-CE+-e2zWwJzw=>lT5h!vw=#Bx~bdg+qs8!_zFc^fC5 zSIwYaOol3RY8thYi-cA#8*5J09Tc*6(1+7<3v}W7Stnp8uU!^GG{N^zZBtx-o26Bn zQj&>J#GuR92f!sh(=2dC<|yEjkgfJ4E=k&~cN*RkyH}u}jSUmq><{#Dw#)r!F^&JY+SeE*P1m-4SMlG8*f7{HJI`?q)Ob z-Qxa<`$70KV=RdEzW}ls%_LBhTmFx;y7;c7l*LL>6# zmy+8o39d@C!4>=%)b$S~>FwKsVxoaWFKU9~Vvt2{^B)7zS=$-quxe#CPmzF^H3zXa zfV4-;FhmplsRWWD%OFJyb>g3XZEq3r2v}Q0@(D=DvLFEPqxl$x88Ey!D4i*34kza? z1Y9=36YM~SE+~yq$oFrlmbd`R`|}@W#52O!0atD05ld1S6Bqd;ZBJ*_d1*8b$?_+-4|phXlUvqEA7+;~K4>ob`g%Iljx zA@3Q-k@w#wyd<%{mm`t{GIDWUTCV+7W0+CsS|?jjCrf8rcobw3AgRy)ZA zRApwe-FDF=&1{@3xjfPnxoo3c%~76U*DSLCZR_rbAJ(}4q1#F4|LnGR`9ELg5lnGQ zcRzf4_dcwD=fhXJ?_ukAJ$xtkJnZgx*lEV!cs`G9-tVwWgt1G6u}g%pON6mYgt1G6 z@ohat`rka_#P_Ek(RfD4{i$sY*;FxHq5rkp?bQ9htyX6j|M@bH(DmMx4E8n@!?MZr zb#DnS>v{Rb!K-SnbC>Wc82Q%=ud21`#^KWX8(%_PKDJxYsPj@SfODCO$i={0!sdd-PZv#Ku+Z+)q zXXw8Rf$JN4isV1#gmc0ebY^qpvopR0;Kzu6EAxN#`sw(;R;#&w4&Rje%z>&a=QL-1T;8W+eMAJ-k< znIt5$t72@v2f?g#*owrpr^{a{5#{@p#;2z=8jpaji#RLx z{~__PvwYV4U(I%}n~wkKcbc8u{{Iq>i2r|+i1N4gB{}@+tbMJBeKl_aQL*|g0r!ci zxnbyiqV9Hr@UtLeoAaZ>@e?FmCon%z;VXscX9p!4te-8je%O9OY>*Hh5z3#SR5qwT zU-HPJog;gEodEv4sj>^@FQCsZs6Q!n1jHR#7mR#PhIm_FV+g`)n-SjQyn_3JCV4Gu z=gvgTb`pNBejy2y4uo6-jE-d-5|_i#<5ZY-fRD=zc>xM(-M|#p^)|49nz~5%eM7S~UP2VIj7NQ-9#SOzL_rWU}S;gs-_I<|_K*HR5 zb!)8)7)3?SKLvbVh^;maUQB`Xm}KB2Y00Tyj*T6Glf#kB&R7oR-#~3{@h;YEt>X_> zf}l-{43^f%by2n9Jp$iH%pY46Sa0T7HL`Oi^RaBUaGvB-i*hNc1%T|1R4Xi0Fmgrc zt~;rU>OW~Zm6Br*IaO2wM9NS>;pTZ!_u)SAJiS0wkZyOZh62BN6?k-wKE zO4fwPnAy%m9N2C{+ihsO4Q;ofeH$CvZa@12?`K;-?@2#J=RW}oDW(kh>;v(l`ID}I zSrz};Z>8>kZ#A0j?(Y2OB_83?F-#5iHe5b}#n<)h7=9>s-;m$e@zIbagODsRXE7+0 zC9M~L5s^1QpPr@ZDSUZDywFwU-|1Qo#T5WT#31$u;NuLjnJgq=YFcbn8c}O|z zo=HpgKuVhX6#yvyT~UPpW%`lE%BtFYi`Vq`<>R`wI9UTk_Hgjpz)PK&OrYnDp>wYg z=4d!KvQjc#7GdDkJ@(xT3aZ!_*SjQRvSd@KY-Fna*EuDNm5d)l43VE!fqAg)`#Avstf2mDE{7BIYdqo@z&?fvBfbKYT9E#AV!d(o<&> zADy!EtDV>Kcj2|nW!A)MQ0T_#lx&Qu|ED@b-n>p{hdR%1O&X~GPqhlF_Xq`f`Tfda z28(*~dY_p6y0!5#xyEhQ{N4Hl!2mj#EoD8*NC>BDndt>BP5-H-d1EsrSw6|9L@fm` zl^ra1{X)k!kDNKm!f z+qd8()s}?bs4{J38V75sI(ffR6sCN7J4x4naduUu^Kmt&XnjuHj5(}uHmP}9r}OdY z=we$}9VPl2AGcNg3Edvb{)9dk%3D+w3-v$Zo?#kBV&=bz+$nneRp2Z1zfP~8j{j_Q zJG=ZpFY*ZWE+DRJ274?9dn+nnb`E`AoiJ}wmnw+`71q%j3##UabQTm|70H=bZQ}sW z+);Y2fB-26#&H0{Y~$a9|NoGt9ibE|CcNdvNR_<&$Q=ic|hFGGZb2r%5HtDw@vvyFLo=(|aGLkx0B;g+`+AYD6-& zx5%F%=&{*yNZj)U7P)0@t-JWU!K_}=>T?_h70Ul1CLv}^AqGD0{r~NDGoAml-)ZdP ze_!O0^1m8vG4@-L{B3|=S?0G@W-Co8Qdawo~Nwc`|3NS+?3LxZ#n(%J_l z2`H)al4J|7i|egEW1!9qxsjK5+sDx6LEnX1pb(ZzXr~YC^nn-E2ZUibvn-@}+PdCS zZcw~J5F#`WQc_6rASGEKbxQ;Pc1a#ks3*RVx)KaPf=u!RuDT%VggA&VbF><@zS-?v z5nz82*M3x=B_{em=_!=|7S2oMfA2K9t!)1HUHtcpJh}cqryj)f?KlDDA04xMKuX0h7-$d?u?7M&wyMDF0zlJZ+=~~V})={s*TfPBO z+?QTRb@1wBOp(vlb^~&r!4D|*>Up{=kdbc3gm`QC0L5T7bOZX1{dmMe|1Ko!v?Blz zsP9DVKa7ZtC-xG2Za1UvL!e*p#sckdz(qFt_!|o{E(bf&`aj?)lK;ao+?oQg%KyKc zx&OV}>F)eLUgQyy{mq+`(`|_ReA0Yfd0$N1Qh{HWSV!X5W!1%TAF+!pVO$jenCb%H z0lNs05cov+Z^)ZeWxx2JX}B~JUD9H?`jsrTmNYI2|6EQR0udOo842<4`I)vqe~z8s zPbD#Kh=;16D*s6w0msxVPP$a+O0MsOEe81Yq*T6+Y?0K2=k4Uv?_NIrJ|sqScXPSO zC|0y6yG3Dfdu-zk_Fe2x756Z|z9thfnte%@w%u~yE%z5*?!-ekXu^xb0KW}M6qKyH z3II>utye5BBhjqKg4B)OCyqlRKhHV%vAk%#))lh<$qI9!{zoGAq@Zu>S)u>+8|_|N z|LgVpJN@q^9+Cg|*4FaGHTsAGNC5=nL}p;F5#I2Lp)vwfc^N$n5pY5T8FDL}Z>sYN zIkkX?#~}=t^|jImi)mLi-flS=d_@UUU}f6g&-qDvV<@07Rd12&U94h746T!&R}@?~ zFYo8=bX(CEu{EB_orUKuV?6dw~Zf}P-@l=ooiMNP}d6n|+ zn)7W;Z6pV>&r4wD+K;NlNEXmUE!o*4hCRJ8)m81B9YRS91~XLyC?Y=+KaSfJSs8;h z*t~uinku@b`j||KojW5^jb~;?@_XS7$!R}3S8@uigrAu`NgzWKGDEQxESZ^Q?Q!O% zGowuxj^-vAQYB^rr*B&QnL>sh;8N$DPB^$hFPOnrVn}>suZ`;4o8hTk0sEP6@#@Ha zyFD%bbU7;e^#07$iidRqu?Jr1VZ0&?Kp^}Cf#jZI(Z2c<-LG1(_7mgwhw&=C~RkZ6L(*-a@KD$Aaf&_!{_c%a%Ds{Hc zpX1H1ka1K&T@;T)N6g|fmEX$BRUr3NQ_`%l5d9Y65V`TnHfYJ671Ov37yACR0D^zV z%hxQ^ePG#DbSv?SUDcFaf}6KzEnPdo7)2tW;wpiW^-^X;v`hUPn2S}C5k~nYodQ-} z!g4LXswcsWP$oJd;hLX`$z4!bmQXpx%I9S2N5U?coR#uqLX@h3F?8;c@9H^hm#^xu_we1exAvkyG6`4QJTZ6;s@DPhEkcQA)J+xES%9ES)j=V{6YM~3 z#IeG&4b0b|n#}6OyoBY>z6&GM0-nPu8b+QsvO2$3D=u;FQ7Et1`yZ+=z)UuoX|EW1 zLD6*_awX~&Ijy*oYXRQuSo3T7JSgJt9C3FipD%Xune_ALbo&L;>@s}iVaigRD8n_R zok1_M4S1TsfqAsCy?(t8Uf*A@$#0+#@ z0D+GlfX8=4u|+t2_U+s63Uw1wWd#7k9VUBN6Xe3?rj}h ztQl3N@VwO`Xhm_+3m-GEfFXus4^f+2{y2m5m)qOnNS~yoGew93gtFrAgfe{_dfxXy zXHhb@Ia>W!hR8srAUcqLrl}!M@=_T_Maeqyd6&{RH^}W!W>=Nvf{-xc5YIkiuG%S7 zt24#|>#koT=qCuIE_tbCENZp9HRSlVcLN>DS+0_0%m ziTeSCs3`@b^H0JH%v0AX>Yo=w>lpCxC!pU0VRb!>e_srNOAr;Vlp*q#fcWBYJ0Pw; z2Dj##PC8=5H9h$g=-EM;>STRLT%hLA81f}ee5EU^D_mZw1p07HkuP;=%=UHLnThzd zGlFTOx01S3vsz&F@L6Nq9e z!uQm;1;jl76B3FIM>rQ=3=aS$nw3-VKzs&RxQv6N`Ec{uCwYMa#G6QWTiw_rmR~9W z*urQ(^($Fk3bN@M!d!3ns>;`8b$>s*eD%zJZQLs_hSfD!a3xDd!3Ho@TU3^K0MZBK zdC3XSXOqoF(mC=G1lEp*=HU2k4$@LWVU4LLp#9U&V0DDA8j*` zJJ%R-Nuc`%deC<`sS@H`acHyBLOC+t<(mW^k60xo_NXH6q1mXB0XIXOg%C~f{hEkB z0>AITT9*!FFPI+%+t6wnbKp8mf!E$I@J0y$Uj_F^PH|*a-#XqKF_nbZ>=Tet3?=8@#B~h+No_Js?UYt2Dkc+Uf6lqh zBq3}hJ!gtc*~vP&M(s|ff3MT&ruYA5V;BGb zB9Gkv)nJdd;{@)az$42!dZB$^6qUcF*EJ(W-XC#4*WF*^Ww3SU>SD(AK*D>EK-X^m z1N5*fIFBJ}86ndfI1Bs%g4v0GvCnmXTy7ZuV{p04R9A~fJN>1_+F+#bxI#%%+&n>_;DeaL2_v>peGi7;PLP2yTrkd z_u$Ky66>9eda2LhJ-YDOb$CTcP?b;<$+Gf%LB4#cgq*kGdBJU>iLZ7jmb~;ygeT{5 z4+$v6bc*OHPETa^3_(%*cParE37Djy=u%Bz!7kpfzJ>kEmx`1xRet(+#Lc;UHC@8) z_QiaTT&#o1zmC9JB>ydxx!Iq7MB^DD_osHS(Pk3iD*3OSzW=k;>bG|1KQHnKCi5XZ z*vZJUEeM5~>6B>U>xzlxxRncztLv^KO0I^IpI2ygy;b>!RzTP|57DY|elGtM=*}_a ze}-s^DGT$j8_CS`1XKGSPQn!4yHl{8l>4Gm?t`3nX$eZbPDkwP(rZRJsN$w;=C^^L z?QO2l`p!*xcN!W0pKfnw|9g=~2y}9=sT%C9$a@KhUs=9O z;IcxV%amP9e#_KaDR(7nY%XV|==)r9mBFycKKCKPC%y*}Dn+`TB(;;IzLq~x#(0(7 zbp;=e)7ck%lxgit;`0(d8RDLF&Qktc$m5a!*bJDz5cmxo2zwBkL>!#xc-UKY3fb35q2aBZt z5EZqq;q0@X9f9L483;>V7_bA{Y!HBePPgt`{w?q)PqnI-;-5BEzXxL@MHh&!>bNh> zj^DXB`n{SRd48eO`qdI=%(7^o_73fH-XX$7%LOTgxs_p+{AOHI5eZIyg%7+FVLCuX zLWZM#aD4RY@{kMo$sceZZ0_u`zY5W9DcK&T_u&J620()G7#0_>&p|0}U`xvyk2+yh zEJr_?q*4Z>WM$ZUk?7K5Onxh?)(X$OB5$9_`<(i_as*p2f=b8>U=a(yt(Q8NT)l}c zeRk!x%%Yl}i)15DsC#-YnzbbKQuq21o+|w>%Li-MH(_);&L2De%l5{mlmBPw|GS{4 zN%hF`L61)ZJ;MGRG>^3x;4~a1*}%w0!<%9UeftMMrVW37*X19&EHk(*v*<500Bs_z zaAlGS`^tA!^GDA3rFIQykiu+0h5^{z+3K`vLa}WR{1ytt>G^B$6CZ$%LA|#Eu0cO^ z^RG8bh-lOx^daL(g?LMT5S$9Q8PrW9kT(;7H~{7DZGO@E>+687E2Eo#9hx#hJEftD zMm4}Bq1pkxX$S6bN?;!1>7Q-7RQB;vOa_utIl^R6K>RV~9LF{oq-Y$Uh9tRz-SgKK zCIc5nX*J;8sW2F5tNUqf1;$c$6lK{d5$WDh-^BaV7Drv?BKlsf2=lQWc-F+yN+9Q$ zsZ7_*wxt5_oj$elzZm4ljsLK@wZ5_L#DCaY%Kr;_+Q|Q68q8S%=z^90I88Gl>$j89 zWetrV&QHv*U~f+%@(Tl`CG($T2}!~<`2$wv^Gt4Fk@0Jr`v)LE{k}15Nrp+7MLZ3p zo&aQJgkqlKpB9M26lKt;$y052w$C`hw3KkK_|Gvc65fs>@x6%7iW9YkIvqp)~*m&YN2m!t>@96YeG8fTai=q|x94l1j>g=C0gKDhS@ ziH7LTTFogMyn%O+g$@XktdESZVH81(-=dh)X@Z^{YBf#D9?lJ>(uc!a2=KUo;1)h$ z06)>;yn%gGK$%ODcZB6A#p4@Z&Xb{3rfoG=r?DQDnc1IPP%%tPJ@coq@ijM6>#SXi zTKVZ471~(47G>dSo0BY-G92c*)uvgu((KLCWj+lCTD>YH9?4WAQ1I85GTVeu3^RfG zNyBvB1{Kjz4IJ5>sp0uLR%Zawy6AYnNo2}h)bxKIXs$(jB+RNdy>WI-ot$SGFbBIh-yzq!VAxb5>B!~3Qrxbpb6-X2;P=GWGIFj z_5%5aiB~pk&Nd4rt=yzjTPhbee5G_8lw~HEVdq>g0i|M6G1D+lJm+U|rf$=*8Jwm1 z_@|jutVYK2W&k9~2;wMAVSE!bVnFxk!#t;u-OoNy?eVx{k*)EpI0!I3jOunzAraOx zZMAB|l?7a?d%Dgz-ELY+r5?Caqn!@4#5Z)5I**<>Gxn9OSjuB=ory z0Y__CvA>BiKF*kydB+c)K$ykMMLA3|SO8Ll(XF;^>v*t4^ZN%N3P&)FLTvdWvFWPa z#*hbEmRcg_c?mH%mj&&;t}Jr^0)KY@vRgl+ViXdPVDMhHe8l!jN&#`oc0vJu@b!(V zSK5iagzy|c$E;GIV`JPX83@?c)@3Q2h zmb9YF$0oU%6itI;coja5OsTHz+sd4PD^;$2QyFW$HcKI*fIJk*G-)X0bg)*b0@>Cb z1IV!Gyh45#nU@Ay*r}z|4g#tU1VXp4JSgg?%N)G)W~=g~;!s9-b~emW@|+ z{*h9dn1OsH5Jf?$MNL9P9gImwOPzTVQkK}&XLCvV9y=lXS{fobX>H4)zJu6x0q`37 zcon}5&{T&ko1T;(^p`x)>)SB*aJ7$2H}t|#gDbrhRz7l<TXm!-w9 zDPZ=~IGi7=s|vRUfpUdJTV4GYJ_P#7qG?wRIvsto8oH@QjDQql7#Q@@NqPWQOU9BPcOR`2DTXG#1&q)gEFNaWwgl6Z!qi1< z#wJy+GCA>QBiCk~9n$9v&Us%9rs#{feld4^KQEm&|MX9-|7VU+I=lO4WBiZx9XtN- z?%wXw|8pVF=NA5-d>Sm|{ugh`x&MW``~#N^>h6EZDf^Jm^8%QL){}UHp7RlS)C*v| zkN(Pns*}MmJa3FIkLXdv+o=H~x-u;^Pp4XX6PdoZ9+b-OB|_!4{RDnPx|iXx<*9@3)S>AF!Cmlw!UKefFNZZ*=;>zd=FZbL za&Cto+@Nt5$%g57Z^|`MQGVC;dJI{PpaAH{`9nf-yuY>l(?9x=19UGfvChh>8MTBd{W9JUD<4FIieXem-s= zAHWCm0D+a8?hs+AB>vD(t^S9jA&kcuhebBSApySsAr6RCfvql~I<)24)5MV+$50u*{{=XiY0{?e3KzK4h}9&TQ# z>@Q=#EMvbsdW2XpADv02aad7AoOClHp513G04pqD7S&bu71x#YjGbk3?JTTPwy4Sd4qi%ZX)0LvrZ@AvpCwaK@H9FCVxL zu|55JPfU2*sZTWA?wY96Cr#7gfTW7#Ep1EsqDoj1gs;zT9w|XlV9IpVvpZN6Nlc|f z2}OTx-GnoTz)-fCer*+~fjC!LvR9r8$@Xzi_eMhnM3_P}M9A|3jUXAqG47t_un6hY z^~;gfSuDalyh+l8B*sMRm6ZdqLP5&YB*`KxPm~M-dPL3@IjzgQ5#^4!VqM7fm$`r` z3^DATs;>=#;Ho=OXAK_ycmmKIGYYg33|A|b`B4|-SqdnEC`p`h9Y!$=FU?O;=Vhk3k&}mn#Q+lRN}qslzBj<| zreS=}qbAAG0;@IbYzWgF7PzNivg&g8nIH>JrwSFdLu&6dhgeZ-6q0E8#)+KYVp>Up z%jH~&^VLHRIbROsEAGl{V@oGpRSQ z%bw+CiKVmiC0Jo!e=B)AFI^@UYgi#&_jVU!2K&anFz$J!HPvH<^c!J9?&Kn;-m$;h z7Xpn-W>xURI8Jz;$N9A6`BTs_i9J*-o1cQ7RAJNmBFIbY_+JZMj9KGj@k%Gsk3J&b zsrJz%|6^F(B@vwI44_H=-`?7A8W@UsCEho=z#O$@5U|4W07R*3%|f_^jNzjq=p#s3QWEXDsn?U{jC z>9d?02oQ5SI}q@k^8@kzDbEnZvZ*>p&@gX2OMuH0gejg1`Tq{4us|{ctOySD21RW7 zPpSnp$^U!nR{qz`&8>~yrTo8$hq-MF?_560sTgH&L}vo`=4Pdi!ZZbBm|#Fu7_Dj< ziK!2K8uh&JCt_?&KobS`!PO7~`Ui`<3qKKn`hW}};L66cvR)})(JIVXA&PoY>XniK zs~}{drYicz$m;2WLQ`c;xRW??k*u~NSUt;h8gNhkuQmVaB`+dbXDFGIKW_)TZ;*t$)z+u5QS z_S-p+@W*2<4J#~}luW^pWb6tb)ebrxu$nIc00Q@hV zb|%odX(|o!zr5)&Qw*>M`G0SH-H!jYx4XHsl>Zm;Fv(us=b4|#FF`)7l&_|5tzfU0 zY9q_*<(tHJRd!m5y(HvZg!HmZiE4eo+Ih>aTu4{f9GBOjn*Rj?U9=BC;1%lw5Cm*XHY0T^fW3skk)CR1?SPg+pvIChzSXdI|9IA7K1T{AR!>c3{nZAj|yX+0D@4D)iaZ1A?mOs|S*^jhjfOP%OjyG2VEx)XS;K9S%UL-WooKFK(v6UbH< zaB!$D>XFll7Bl~|mK{saTqTM~NmUGzh_rm6(jKs&2zrTFoj|IChVEi5Db8*r`ykFR zYAaZL}E( zss2y5-MoMpW~2v>#zg@$l0Li?m3cJ*0%hrgfM5Zj6IlRx3GRnUG^B4w2$S>y;IIz` z1cKNG9;PT8a0*a7d7t=hZEn{dH!|Z8(#lKS13|@-Dd%JJn(`@~qM@EWo0qfP1Y1Wt zmseS1@(pvbYJ1V2@T_zBxKD%q=MJUg5xmU891jth@&LH${C9nG-9G=_*pzM)?sAfc*_Tt!>DUQ@y3Ax=tIrQFZMmD^f+xX>CeX!}0AN1N$+am%ZUPFPHls z4uU!6K%x%bEYE_Mc8@2sdvFWxl`x8yj0?zxtB#7Ly0knx{sxYYm#V;@_i^NZ;g7s_ z4YRvf;~X9hVRSoN3aAG8e`9BB(?0**-ddjjF67~YJso3koZYeGs8{1WO(HrOrj`Bq z9MY2M>T_ulsUHN~%oTtY{zGJ?T)Bl0j6+VL5U`^BZ@|K269jG`7-JaIpTbVa>MH!7 z2|`o|*A4xhYq<2TA_XlWerh0C!VLP!N`b|aLeTg0UmaRJ&LJIoD)J1h^tGZNg5Ks$ zGgVRFVESQ_mMJ}tBtbxz&aR|D*@%h{zlB8--lPz`e~v$ZB;)^*BH=@TR z7!oRCglPf8_(6M;f;ivbPFl_X2auejf?QDX z=27|o*6x<$|Fg5czU2Rlco=iPfMi@`7`#FE5ECY^{*nxa^mmR5fgdZH#nWyW`b8)Vqj8atha=9&d-^<_*kbgk`@=bkn|6lw9h>VW0akJenelZ_ zv|%zB24EcoDY_59Iya9PN{oodfy+B=>eR%%Z*5-}=GV3CVD`eL=cEs0wFHaQ;Bl|l zGtbQEmLiI&WVu~E8#;$X_< zfl>Ap#+X|9PYYx^iv-vt|84C#^55Rx^89Zh4^J#BH+ANHD@UEmH}eqaT1Lce&Sp=S zM4g}}U9Nd=TFZV7CuhxFnV0A$3h~1oRzUnT*+yJ$idL2<*Eh?RezeU;0^*sVUO|{2 zq5MHu0W7)i9u>DK3S-dgINQ14+7g_}6-|r4a}2uW1fzlqHvw>0EFr`MiUz$-qby-I zZfyM1At4~NMPls*_o1uF?1(g)oFVF~>!|)QMko*O+y(l37e#+A%N=W*^ zAYLLREJtAm3Y8*-ExkA?V8r~~2;zQF{E{#nhIa`X7j$ZeY6VbubWWf#v2alG;%bQT zcmy#B#u!SGG3Z#{=lb3$hdEH4G~+obiPca5GGt>=3au|G?KmF#0;VO#ILQWFyA)EY z(lQnF!xSS5KZ9IDV;+Fak~tcuB*{}*If0nD8@>byrN1&Bp$r1Vbyzjc%bRQ_DTIic z^8nXON{xMbk^2xygLfXYj35is}7;tsMb!rEmK9Y-Z#Ef2fwr&jR&iTsRMyctV{Xj?UvZm% zQ~|PjlIRrsHUvo%*B?umtd{>q;VnGL$XRiU(A25_+0*3zv$?VB#DCaW`u{BCY4T|? zW`QBzuqDJD9<>Fg?mwMmgsrb%U^-$<;syekkRdxSCNJs#cDDg4KtDwx+1>7`nqr+X z9}hY>gv&91zyitpgLD(VVGcTXupls2Jc1y0P!bNpB;%Lu6AbQ?GzFLxNe)sN#&oNo zz;M~*>3DPl3tR%EfR2Imf(17ZydM;jYAa0d!v`$S!5N1PV8EowFe0$%(T(~Zvg?Pc zl4t>tA;K(xgcjX^yNZgU%>DS65Ob%|GZ_oD16I=n6A&aB3E2O4w*wFeA_g59b6{28 zFFfZ#Yl8Ivtco$C9E`h=cFOXi8<_RMEeXDW6y3vuRWRg6S+YE!a?UNaa!c>iZ|iaR zf12E^U6bhA2y#7>`%feP-?j7qZtQJsF7y8`{XTRo$4gN53bej@I%C#$#Bx zZuS8S82L8L!T~Id9(KX;r<|KFGn94VC?^l#y#w+?Q0)otL1~CE!Ly^mz_e&uU6#Ws z%Mjq8(y6<7&;lociSX|Y!F$%whnLKUa)5}qN}%*Fr~R6X1j6_?WQM+48cISBeKzR{ zX$vz_Jg`d;CXp*l{=;(wOmne-dof3-{t|+59Dp3P`SGv?#~St!~No zlHGy2WK}&!$+h z5!TSKi~~?ffz`^|ouF#!Ev++up2si$Q!#4onw^dbLl8;QsSQC*_Me??JO0nc`tDNx zU&vFf&$4^px>jq5y+fFer0z@w+aq25{iXcalZD*6M<`>ibHV@F>iw;^9au78?}!QW zhgPaXCA^H1jHjNA;U{0=fD~iMW-{)fVz4$!vTNG%^_{7emuILHqR!jbUVy_qPai-C z3YdnUU<^cEad2$iJ2E;}=1crP2hVX}La*kxmJE#H=#By$o6mgm0< zdANB;Y8d@-7IE&`M+F$b3>F~^#LlJykQNi|$}q8_sxdy&V5_$C0`r`}8ut_2oOytV zb4M1SXq-i0cT2=7x*YeJPS*{jq1SKqN+e2mRVb!E?bv}ZMuvMO>> zcYr4$?iWzNJf**a{~dtfI+&*4!j=lLzJ6Nw)HXQU6Ru~C+DZzu0bwSmp7`0-eG8bG z$@pN_JD^=_lt`GGJ{n_k0SEBYTjpOF{LlNa`^S3sZy#1yyZ?~CyZ`9CkiR?sSP3}h z9k7~0`d=ph7VUTH?0IaO>Mod!I6d%ojHR)KB1Um$Hi$3-VVV!aY&?QR67i`Ug&6AY z87G7}rbwH|U%G$kvFqTpcg!S6SSV=l{I0Bpd!io-Z6C?psc^(nLU02$XP6XUDV&6u z#}~MHD9zYBirs{BhW)Ns9(>_ztX2G$68el&{;7AeEYgZ*Rkv|F*Z5 z`u{?nHk^e{15-P1*kXq;WRWO)lT?bvn4r;wmHG&giCel4i!8|oSXFa)cLPOa|4Po! zPEb^0eztCSAtTB3y6rRErZGvE+QxXH*&CDetZj@Jn!T}d9Lnaz!Pz}KI5V4-#qA{U zEB7uc<$hd;R~W|<>Lh2nvGw~zu)SF22a)EKKX}vPO&Xtuc&q$ zH+o+iASel20;w=e`1ya957w^Zny|KQv%>TWRr+%4c`Jfly zXpweV6e~Itg7!`h@+w=F5BNnk`lH2aQvnKZ&O?mtlk_~q_#PEz1m`hVe@dBmpP63G z)JKH^+0`zFyh7uf6oTM+00;sQM`6yd86_EkMUGPL6BCMDZY=+cJcncN5%X;qP3t-9 zFo~~5d8#9pBTNPb#2?fBwYBH?|5D-nIo{vd-r8Ja7_*)@p~m$WaY(|O5E}|$hA>Vi zYwI5vry~@@gE+zAO$w)OJ4Xfi1z}=0uQeCAQ1w%R%F6Zi{uSRuc0KxT-|DzU;nw|A z)AU|=!tWn|pt!d-4E-AlOv0e_SlryQ;-hIN-^SEND20XRm2(5kX~2rpWg>n+Cj*7k zEz!3-pp`*2J~}IuC14d>jsXfVi36pwt7)&==T{8^Hc7Q|<)pPs$|e>LFV0M|ORzc_YY2(-ZZwe6F565@yGAuR z?UL05HA>d_OEm?#XFCz!dKe2=P80kOhr@944h%@L>+rFdhd1&U(OeU7_s zgX->L$GqS=Ll29zycy5tNFY~SAf`;9CeK_u#~Plrb89ca?@-;T9gPXy6Pd4dM8;tX zRw?+7ymQIoH)e>45X4og&Ssmb)5nK>e3KM}V8dTO{i18s!U7)RT+0xvEiZ*s2O&$f64U!?FNR&*>^@s83~$j?I)b zD(cj1MNgx)Mbk#A8kL7FD^hYA6%~E!jmJ&$xxq7Zd0Xz#0s;FI-_3gR_t&q_gmfWN z3d+nkn8Z9gM>*9QBt~-m3m*gaO;TC^tcc7?*k6b03zOZnFN{n&gILi}X6RjBdacm&X3|5@MMvhDwS>&y6` zi+P&)5YKls3iFwjx|%ZdNHvyA_?kf(Y5kHiGv(?MJM{KcvCM$!JPkUh$);LkL@gJWFZ_x&B) zwv)zA8{1A}+iKj{Xx!NL#I|iTwrz8M^ZtCF=RY`i?%Z?s+3U5|HcKKK$Ifz{u3Uwx zN=6HvHEu#XrX7O={4=lL5JVeg=8;)1_4?cnnY-jR>=^d^o!e&u12YTapX$yxfco3o z!~R;M3!9g1*blM zbNfP-e6OV6mp#5er+oOMD{%myYjb3@JHMp~kLBvuZ10>rd~oedc2h)vnIH1If9eFw>DWQLn_?&JA>C%aw5=?MJ2X=b!F?@sPW zAPrFua|_R-AnF~U6*Z+K%=9)4y)^>xC2U}Z+6Oi6-J zM#(i1EdM9NBJoj-Rmo22Vv32M2mffjLn5Z#Wdid~c5!uhAw(lBg`I|4Nc$6wJiuI2 z2jl1Ygb_??J@_KuCsRzAc3(CXoE${oM zEV79CggO|1Cy$;Om^cSC7{)0bGxRA^0sq99|Aem<`C8xDY@7yu|M6of^{FS6zhS~( zcI~$-{49$@T3rHnJu-z98s{jk1vt4hXlfe9i;59G7OSX7ts1w$REE2Pb|2-vnghYs zn_EAk*hla1G@R!igO)%RDb4$kicF zQ~Bc0g*@%4cv-Q*BuaWf3%>FImZ5|i{IAH}%JMZ6PV>t)6btIv8HIe;q~S8}3V>uZ z&a0F?7^G?MtEFuKgr$*Zo$d=-Ex3!%7``B=TOb?fC7Suq>|IDS*wqQ@sVNP!OHYpq6U;At8f+?R*LYKy_$_z z1~cn?{w~h0qZb5HxFa>ON;Qfo+j`TCyz-5}{i^cVfXr!sJz#Fkh(cQ>nv@+TxmvhFIFkiiBdMv& zJtV;Uw}V9vu-|oJ@RsbfsUx7JXkJs> zDemJSSTB48;{~r}k&m~5Y78Su8%EYAOj6eTN5-zwJ_IgPr0b5VeTw<^@ti~3*ziw5 z3RDH%k%Jk@CSd>+7nf zzDo?tGxz21_G+20O9E9C8y-rn3a^1v-?pxQ9hyF>$FKZka0Ix2H3ceW^}6g2;OVMc zPx4##B0xfqK*H$Lf#z2rsvxdOH3l2B*BkW98|3B4O4iz~zlj~#NG=>>J*xo5d55)- z)!zRUptz~*%SZFCxKMr?;5DulR31;~Z{rTp85`|w>Z2qJH}k%z55G>t#Mrl z(1<;rDd<>@Be)eEWRwWbSN`QZrLy_XD?8?qmqL3httszL>h>)y1ZbGR8U-S;Fx$bn zZh+aBZX-ZT58E*y?w$NVOFCp~a%| zMJ<1H4Xupk(Hxp&%Wr-Yr^Uw6_FRE{di`n?h^@@C(PS<+0tjs{y&yd!0Th6x>yYU1 z#gT|Dt9n^g7uc~ML8h@_Rd(9@#?LW)DPsgWa3oHK;Y%=a+9=VV+D6GJfM`{3S0|s} zZb-4f?Zw;E!?9I5?pOS*9R0w3pog=k8+_vukmMhUyXRla+Y-zVsEDW(Ac?%jS4JLD zvDM9NyNUnD2q|hB7NgnB!4x&5mL4iuq%sm>>Y!T!!M9stM1lt_DjcTw<50s?PR*Gt zIF@ z){k-s&|DIk?>k%vhTWKn4z_7@1^l;g#f;0~0E^BHMAznSw-tV~6~_4Mfd>o}Nmk0# zF;a-u*J={K`5L`2Q0kFxIay?{u-IXj)MU(!h#ByI9ex1~yq+tP! z##%Vc1rb_<$!jU!N%?P`6Mqg^u!?2Soz&xd_KTzU`oxD2h}1jxZ-4^Rq1zd8`q}%U z`O@1ER*TFVzivi`!E?gbyaPF(Iuo#S%hbRml2WKyoSKefNc)cxNnnIDpnYJG=Dg*f zpPxcKH`Exd6n9&j3^^Gb(g1(>svMfhFI4ak@#lb$B2;-qc{mq`{Z~!p;X8_mJn!y* za6ixYvE{)fBu*~VV4Akcm240=_?gMb2I9fk0?n{c$l~jG zJ-OIWDl)9o03ZY`bQ^Zd}2dY8UBmJhg$ zB(ITay#e5@eijJ$;vWAAXGqzQvfY@4mMl?Cp`p=n z=|uyTk7%C2n$3O?K1xIy!6KuWa;=dq1ClAdcuQ&m5WbODJSm7{6-K_$U0jKOIX2!% zRnXRvEqQBMsaf!51rl zEbNEr+c&y?INsSaNpV>z4D3Q{;#qM>GqG%oS}Fv$l{JAT{oSTH+aDC3f1~^NcJ)bA z&11001B1gOchPe(6QN^VK#Disuo}%|qfjY6HVd!fJqK!HOS<*2{7AW*KZyt0c75V) zB>4ep%x#B~G-uH|^g6ee&DUypY>Vl4-ffkA;nFo*DqbdUw&z`El=KqzxYfbN5$SQu zu2`ZoD$3~Kgw0DZs86iW2h9;_Jx*WNhN2Yp4voH##)+%J;r7)R6hy4@)WU8q1)w})cH*1NEm&}pw9^db$ zjQrJ3`&>Y;uN#C$;BjeFX2L(eI`6y-f7kb@5RrfP;=o|DS}l^?S!%-m!uz=e!TZDA zw9h`eY-P!1aiTdhOQXxqvp+qruYqRBRdqwLPPZMt=_%aC)ZdA0l3#_2Y}x2%4R1%9 zJWcUBl&Xio+OV087&D>3MfzRYZ+f6EOJeI=lRsDx z(6eXmb3Od|e6z>*_pM+zsjrstMwqT*oN`WY8sBiNi#!5etZZVb+!!LlhrM(`{;G16 zw^aki62u7YBoP;wnD}gK(KX|X`fPI-E4bdwVy+EGul%9xxwS;ydfV&88oT*~*6&5E zvd0~4bDbZ1_;f5KZp_1OW|b08CiV8s@P@oCda}PWTvT$YxJ{ypbM{HFq)P%(@%XJjN}2r@~rDgP|Xzf)o%7<(&g(ETdCRJ z>JNqTAq05&V<#`C1DSJGGk-P@wWYhZ`(2Uh>}sIsgR@uT)rA{kH_Lg|SF^pkB9I@4 zwC^!IXc*Y{3^iw#N3!ZF?0v^`)a6%071nqZ*B$Nm6xrP7%v4)q)BS3G8aysA0tLLj zMq;`^eby0>G2wsuiN)*80RFe++Yb_U*Ev<@tu@Lx%Ac2zs`=RnOB&~39GRHWVcMaZ z2A49`8!I$7%9u=w`(;PuBbcuMC$Ah-q92?jbW!j7X53~nc^B4u`7od1{WiYCmdhMy zHcoiE(ju-?zWBt5CE=oS>yr-3!OdY|;1mG$$4+al&C|)(K!;{k@{+>wQKCnEEt?4>XK@ z&yjlN(96+Zp}uIQIzPbrgTGZA1=fH8m?eX^&;b+K5rBN^OTAk~_^HRX%MaT`V)KbW z%G>?y+}qVLY*zG!E%-8O#>I(CuRcL{k+r6cg`MaV#9YYetDI?~{%jZ|;qfV@c~76K z@h(Ifvt6PNmHE)~Xb-CMj-HO#zph1d;G0Rjapd!0Wf|tF=B#yfGN|2S4;6_o7E5@+ z=rwiI)me;;rz3lfOhmNxn(Jz$Nhy*I7KPw5weE4t90h^awQb8B@8K@7#$)Hp0-bf;i_P2wXzg!+nvaaUz zT(XIu47J&M>KHFCy9#ty&S?grR%5HFaldtL{a^1Bm_8?Dh=VdN{Q1tGUT2n`w%EV+ zK`T$AvHX}PwQ@e~>C-J^-|jeQ(_!ZhZ^@B^87-wnbHQ@$qe~bOcqWGlK0vYH`c5Gx z0sqkvbZD%W&e>UYEYjq+xCJRP(y4xgy4!q{;eaCs_xtz&CDE)OY=I#^BbKrAqliaj zgX$c+Wm4y-{8G-3DT01XO$>#_%rv`2<0#*-Nq4qr?DQN{v3aL`98EMtDE4ylcg>Lq zeP;b^2y{Auc4;m9INXbfbXTS)9c(7+xwuP8Zuddx%p=FMftIXH>>Q>z{@Csx@P6IWtCX8E-Aal0C1MqJ$n-Rge1LKoJQ~|9Pwyf`H46!!j%oUKDU% z5U@I4$HgX6)i4#ID3e+bS>i5%jV*sr!7PgSZ7b&@9vjHVX0TfEZ z-z{CAyFrI)FXP<^bEy#T3m{mczcrTLeps&m0kMuP{6ND|%Al;sTbRSuZuw&+p>XT* z1&J~1df>(VF)y`ZeSB|XA+$T~kSzPu z5>x-%)-Sb#%Y7oKy_J6x$q{2~-h>)|k{flR21uGRWBU1jtyMjW-;noas_UW???Ray z-{xIQdSG{;+d7>(-V`Ze1HTz3^qE}pGQ#{W835vZ_}lu<2m-fPR&?%w68zD9hQjR3 z>_{g@_y5Kk*!%@Oy|A)I@-!NteLmmhllCvtzeHZy19Kxx76xj`1bj=4BqS=ih6Q-| zOtg{UA)qHsa3;d)eh02|%nf*fF?cg9IUcnn!D?0(gZWWN{Fe65BuektY#wt> ze+VS@%%$el(01`omT^%qw1=ivpunT`U#ZVKkb0Rc5gYJ#imn|?33W4tJd=fXw{WBBOv+^|ZZ zaRpi6qTjbds9e4!m6G+&_dDZ7X!6Pe8<_b5yxNLA1lHAcv~+*~ygR%PAa_S5>U#L< zCTicEwh)QTl|Q`3l^rZ@+GbNL98ZY#^b;lW)c+4iNo-i58F4b7q@dNJz*1cMhI70z z5{X>>@;x`b^&6PaW-&g&BUrWpkWt}tl+)2}@EtPBk*>t55_I87Q))HMErA!;R#m^a z>oz1o2Vb^$P-EK%_&tVp8Ij?g+Q2$vZS^NcXJMDZ9R}L1wq)uMwvjb0t;|3ZTxO0{ zN2_j16WoIAav%#F%J0x99$-UmFK3C600K3AuMJEe=sH!~?hM-?+tm`7Edz4pW#A*4_=f^*u@K<$Ec zqG0rERPurr@JRiXQ2Gjk>J-vb&vPWOoQ@2*(ejO<{T0_f;hXJ#@djNLex^cA3w*d( z1F!1s4v)pGAXF@QK~S`yk6yH;@G*`cr%|E7RzK|YIu*uReZ!wgEB8F8Uy1|R6Nz(W z;6jJSIJuGd4LV(Ju`&ry+=c;8LFo&Yh|u(SKMy z@RJSU!EDXx%fJz_%~$?fOQgWpkA43jR3#g#I@ z8S8i`kGTaC{t*%4g&hdCs&Ma5r;JE0rW9dl0u)%rp^oTd{;XMP+i|$VY4u19j1-?b zM@J7ks%x)1KA;mxLO!gA8^KyDdh3p0>+3h>`wX4Gy=b9o$9J;kec?N2;6-__Y?PD-{7h0iY4|6WpsdCUeDk9eIemiYD-l zzR%@+Thi%u7Mtl5G2`}>8r)G~N$O*qE=p{!jc(c&MVnhu(FC0Cw_KAB>e%5KOCqDh*v1lwksw(rs{mTk%= z`gvf7)<8nK@mMooR_cdu5`!9j;Bw#*)6sxZ9OOtmo;u&+J){*|#&C3`~eR4GLj(*r2UKH70qrW=?@>ORcdOK+_}H#6DQg458q z!iJVpA}BkmUWTd4wb-wC_t2xw6QU&*=MI<&l_>QHTv^xgI0PQPZi|vgefe|z*hXb@ z^TT@0eLi$TfiyniLogHDZTl-8wJy3XUV`3S5Snys%>B`M*~)JM2@i82U9CW~J|d8P zP)OzuEd%?kNGW7(2K{1)gP%<)+){LnSIc-v1WVv8Ja)gRj8Ek62OHdQg{1J&lj{?7 zduyji_W0p%>T9{M3-r#M_&`PUMEU}95MR7{29CDfi(P=3TOPGTS9XDgd(i$7Nhunl@>*Z=Xd&n=HUIw`TMpW^dx+nwM_z_U_9 zFiS8^vd}5The&L<=;v|Hj>zB-#=m%Ip6X-@kQG~TcWn8Y`)O3xq9hP#NRh0hH0UV8 zzfuR$UZcZRMhnlaif*L|4yXKda*SDHL}ryL>8`e2piYDmi|~h8c`-grfdQe|K#(m> zM?sm%`+pcEEI4TNhBar2-mi?04@sXLY)R}$6`gU>fT(^;ML2kPWrcMAI^OJm}I13t-c}01mjJB)0jf z3RkI%l*DDQOzBY%Z&7_D^>KfA4iV!*&v#5-@{X46X@@wjQrQ6VyDc+A>kD6P>;`6| z+-FgcZ~f8sBn;R&>!F2(I|-TR5$+hbOOx<@@|HzgP94!?#&ZGG>0`fCk3sYHqR6=w>6xU4Ui+H!t)oCy)u!ZcHHE@J_uusnL`y&bE@ z#nmIlK1LJ$XVu0!GUjD*Xv}d0*HuXH#3Le?Fds7#KA)6nao5D(+4ZYNS&N^(t6Mnk|fL5}q7RU5Mr~IDKzk0C}LqF}1g* z@US%a=HMBR&vyAmyg4IdT_v|7xAtMN>D?L65d?t2i zaAuDhmRM9n{oL&C*W<^b)%2B=;FvS&V?0`(*(+57a5*lG28ebK?3HzTfNrRkim|(? zM$fd*rNj34f*DXwau>{?A4?KS0sSpi0Qp!b(>rtB{Uf*Q^6+yzlt1hhMVk|?H0+c47H^yC z8il>3_l3Qfo5Y5ab=e^{^SV}g5d@V_Q!;5Nm|?22QWii)-Wz%nT@j9+e~eYfTP^v; z>PArh4>~;Ty+~+Cu(i|Zh_%;$s9YKQ4?sT3cs)3r;#+A%7B1RA^go*IB5aH@U7o3m zK4ULZL8A((UOpzG@@2Er0bMS(wjs?zWB6KyB7d$PH#v(x;ixmb9JK|vxWZ^0X44eG zoR>iB`S3Y0PO+zFoZH;zr;AU2Q_ruKw2>81uE~t$g65821hV1zROgR(a?uvvg$cyp zGG%Az2XKjU7&wDQZj5r}2H<`{Dqun6@C?;*samy`DudhwY=>rP{e8=mV3WZ=r-S7u59f4RXs&KG2)eR z&_jf6wgi@^aO?m5`MW)^rmCv=qa}VM9=KvO!}dlP{456NU+~QZ=fiB6;Xfx3KeE(K z@f#qiQ!f`@qxWB*3ziEa>Vw`x>Igx-MNr`A{Mz{=WA0XWsEAS$XE82H9FlQgUZ^l# zn+_|95I+VEq%@LCQnOq&XfxNI;u`Y07g8Or4i9f4%0_ltFq^&sy;k z=e7!0jZYd=miY?>=nz!f!O)+GGAo({Xv{DU&PdF?=Ii^qbqoi*BW1u_^dO&OWu0GKsq%xwiVTTF^>%hJZU z8ml6@chkv|T{;dwzVlvYAF6X~@=YDDe>< zBi7)Jd6>b^p5>lnA!28Vi_ZQ3L8iu|t)f7}2pw8uP*a(APc-iD2+F7y;+#)muj}+pJv=YE zrzVVZFq*?O#t4s3S(ffq?hLG_j@>nmM7Jk(uB_cuU+sy{Zf9L%=PtF>B)fPnZ>;(Y zq=u`br)Zy)49cerG}(H9-&MR5OFK%NIEnP(m+2I&ReQz5bqyE!?2g~a)p2=a%aQ!d zbsX=RN`R>t1De{}E{_2_J0^jR@lr?r317BCq1=CtQek8(W}X-`j-H_QKQZYp9RO8a z4=_xIuLu_Zm(-xsXZ6~q7*Tw6bo;9`H!jr61R#j?Vhc5!ZQK%&?#Ux>WrDxlFKfJb z=T=gohf$angXz(4my^yLug&XlS&M@?^Sgezm9)GlD<_ zwz8Ug;1bGE+Z)^uB{2zt@v*Bh!1x19bkPfbi($@I>~!4e3V$v=nm{cmra#)Dw_bog zeXfg1!uSGJZrM%r$V&PpVx5;JE6WJ?W}iEs9RVC?{&=Fob6QO|{H41n3Ll1g;j z!L-Wi$#YuQ6__1@OK2}A1dY4x@(BX!;Zu?sfA#AP$KSWZSzoHRsw}Vcd|(EFFDyN) zDGHm&Dk~?>AkNvnO2u3&@qnlkbMJ^l=!5gDWpj%g7p3 zYgFkZ!-A71y7yj>NNwIea(?VDM0e&)aDP-5D+Wz{YRZUVgY8Hi&P7pVq%gxk+W`kF zYyD;-c&Y@Kq;IxwpV^Vg=5a^V`fL5v460wnhy>4l^1Mez+1)5=~pB+_RQ-A#sqre%-lX878)i=tG(gS4Cd3QCs zG+B{JnT=#jWLw@0>uH9FLj>uk|`8QBXs7j!Lv7bjTc3NTnox zC50I8NdgNC_AeoD$@bY|C!?{Cs#qW~D!~2k4e;6lR&lNHY5oCLfJ>4VCI4dM8c9D? z)|PFZ_c!+avU;N3Vj0z+&PW#c<%SUeDCX_79a#~>1TrrgGYlJ8nCGlG52o`_i!9Cw!T9{OO;ol=xYLlz6B0-1Gf= z)=OOGIbp}d2PvrdZ@UByKkyO%&gJ0;=cE8Sevtza8Yv^xVLU4SR!y?YrqLR{AC}yC z6SHm$3aCU>^UdJ@l3B%On#Hs&2p}Cn!|Vhi1<;aSN8OxZWPEHy-LXB(5cHwblh9Ax z&Ik+j>Ntst_3bdJra>DVxt%6nd95AzP)P*Z_gmgkt;<2X|It`zt z99z}v3i$6`tUalFScr*G>M-HB3seLV^Ji#lyoV z&$0Y%$Fm}Zw)|~C^U{@nN?6^}k=OE$6;ihR-s3%B_4;Xf34uEx_xqBzi|x=F;L>pR z#mv5tXbe=rUf!;cBY+0$_1JgMGq6&@#5-yE@8Pnoep$MG_5eGc{R-b(Pz_gr+ch4* zr(FrlX=Zs@Y9*U$5)*RNl$Nq@Q^Nl znWTc4<0C(EB2tza6iS*PIIKYJoF}}7e~E1R@4Bt^{F*HqYtdAA|F(v1!Lyf!nWWL0 zyT)|ZqsqPCmp+#^myc`fO@`*WHFRbGwR-oQN_}eEn#87-v9+2%^qI5$G~+Tb4kRZS z80JeqTCDT;m3YRDXuNCdnvgyCj>r=;B%idChiEo9QfR4u1t19IR+}9LrVze)jBYUW zV^N|Fv#F!fks^RSKc579!(9zT|B?yd6JS*mTkk98_n2=M`!k4TQ}52JQO!ky(;s>! zaEcZ}cE&kCX1?s6u0mXPIuz-f?6GvECE!e$);qUsNl+(c5aT$)vPX26X-#X^=oUp`h$nFZ7iYnrHs;i;0C!P)v zHcQTvbGPla>DgBj_&2O&GK0xSOtiWBMyoI3Pg!x*CXrXv%1i$Nn1HaV zA>nucoNs9}l(+nXb;BDT&whR*ViEz+q$e^Bxs<5Oxh!rJhI@4{Q1I8F{U~v{AAKEh zkR&On31ks=+8$exBlg6ZG$UBPn`Fz5q1M5jX)_bZk?R5&r2UK+57yPg#`lqbWXaHP z8eYK2a)L)#Q+>ov6;INvMF4H!HS`5dj2|ci{e}sCDnnYcZvH$uEWtPrFpKUCucnUv zpKpvskz<~JH>l}|dQFK!={OR2$SM%(DV1M&-7AuFSF9PMDLBVx5dSItJQA0JrYTL( zj((>)3*teIR?+4E9bCXlOd$_pz?JMjF-%A>_1e=b*cto(Wg5h5&j9Oggo zv~o*$w9phIR3}CItFwAmb|hu3WS;w~Tcp1n07WdNZG^8!1>QPusY_FgSsv4Bl+4yC zM{)9&RK1b!%2>aw)I4z)={Uzt*#$L$M{dKTt#&&%*0(72l3|A+IR1JWUywKs<~a{b zj>e+xjOfRf3k{3c$BK!LGPy%HfELUONj^MA7R$t}W9d;#o1oQdW>Z3;bguYY8vvh3XkGRufZhnvML>}J z+|I@)-W_g~gcKHnLv&0;htn;pH9Q~~2#q&4%|P3( z-*i}QIhj6w2yk9HF%xrbf5U$@^0KZcPOInJT$+BjH0Di*J>K}qkegq=E z>$~O;Q*}bxnA1)A!Ph%GXE=^L-#iK}wlEfv;_==UdcLAYhaF8aJ?JvzJDd)Ck(_#l zKwG{{=mEO$<~9Puk@KpF`=)C8MuD7v@Tv=@0ER%r*DP2-9rNDiYN?5f5fxUWoAR?( zR*3ydGJ^Fw@!DxL{BRqAjy)U>L9JhrJKMB0d(fVRxRKQ=NH-V757)_TE)a3iyj0BT zE6`tFH^jiQ;xy9BH8vB~4YkZ@Vg32L0)JHQi~8C!YwLoBvF!%%WYIGrlU$%FCVwhg|Sn> z`NV$Iwqk5-m4Hz6KIPxaj%gB&Z?-UAnBRJciD5A+yNE}ZCe?!W%#BQSxW;UowOnjq zjfoiaDkOYi?wI-qM;oOVCrz@FSMe~B9E`AH*^0(#7kS_z=Fm1Rk-(0Ze$>Vxz}@(Y z78oZWTcxvt&Phbp;o6T)+&~EhpARo4^}IDGan&<^eBG_wp6Ye|$K8VrR5lu15r_v?TkwIDxtw;*n~Vhe zN$F2`oozLA3W_D4w|tG|$$iRJ$4KK|*KVuYO~JsYlDqpNWFs2r=1Vfin(iopk?1)Z zG@f$}BxAo1C!!J`Rqs@4(!)FjK6lJ#rz~pH@~x}$d>Xvv=t9GtdDphKBG=3l>pLJ> zEgto1<6oiI1uUS8sp&{Ju%)3p8Wa{XG6~cH)jzQ)TmeFZ#`$x(o}{Q}|5%!;(FeJS zdhg?rKmiAbi0OI@oj-Qd_T0*Nl}w<$30!q0XWymn}{;%TqG9EQ8Ew9yYrn zjc``%*dc=HBKg#4()ghfh_SKfQGR%@rL^!>L#(bu43XCdbn&oVo&t7vH*A0c9q`_J zzOT4ULX?Pnl81m53f<#CTq%#^5;6^f@^lFD@eKO+P;kBlBVn_;GpiL;<|0WNlLUYb zfRG8WK7H}dREAUs$v(%8zoDo{;>?l->;K(aGc|GFg@+41ws)}5Z`S9qF+FC}0ww@* z$2oKzNW1s)CUXs%i^uf2RDwkS{Km@*ez+}ac=(IB1vzQP5t6W5h9q>iKk-%WT#ieu zj1^aG+E#HJN{Js5K>o$$a_gCNa-=e#@yJ?D8i8)u(LgNeXR655@?r7 zvFTX=Hym$>M+j%!x~)FvS9eBTXw>X}*31o-OWvV-tF@X+FyB*x5VyE+c&VgqRc#S$^<_#)$ax4}X*U@>Dz9_*~C&$lwPj z^s(4%UiKLD6vgv^-yJ-ZZ6Io)m#!|fECEGQO>LUJ9yyW-DfY85I%HPZZ@8@*u7dUi z5D4edtD2;OeS;e^hW(R32P`Nzft!vj>K4Dmp|(}o@Y_{uRYrx$6xezz*NemA0w9Fz z^|tem1oAY~x3Eh^iar_Gl+!mlTS7}k*2#@6x?}WG;}%E_4K8(R)$+xEK8>4o?G>@uKtxHm}0N;h}as68auESN!0Z7Zoiv9=BDCT zIqw#S)T~|eX-Lgx#Nz|niO(z%%U@ZDlvpPi6DE{*+3@ed3966M4S21-0LdP7IVA@f zLz0h~Lv!-&q=7Y`1}_E+&C(|1d8(N;#9oJ7rx-an;ABIRA$3P!G+=Hj+gxYbIO!p= zj9K?UmNdZ%Zhs;Y-odRms^OXbNIXU3J4a{QZ_KK9r)uFg6SUs{WvlQn=@@P_IhWpS zL#X94#M^dBG_A@d2uj1@5VqOhIkZ`Nmuf>>JdsF-%V8wnql{+^gsGK-eChKKZyUNi zW0O=R$w~KVzdf}?HPk%Zl|~K6)jxl3z*!Xio5562S3s`bl`}f~Ne~J($qJbz!^X7{ zFuL^;;7LKt|CoN>^1zt|Z0N+^Vrgk8K)wng<~`c+d0ZC|$0OnJ1hxTYW>iUC9x!I^gLEIlAw+kR~@>qLg09IH>z^4MGaDdSXE{0*8W`joJ$ zbSFOngq08!`s!&oy!pS#C6Zv^f`~8HmtpGi9qby^!$x{s54_qX#6{3)v@Td^->cB2 zDkN|@=BCo=+tx3U%It~mlEyuB3HsL~v8b}%V43zNtDIvCmO(*m{z@U#c7mzNG} zl&`gzMUWC3&88GLxsh7uYUk1{ao)VF7H^?w>DX32aw(obK5k1HpnxgN-rv9)I5fa> z`NBm$5Yj}48 znPAE~{jSw}^2L-%!2d zdLX1v*vVEO_2r&+{EMj+W*m#nDYaneVIty>EEStbCV1Q#th z1Z=lDR0Izj&XjdpJ7bdz?;HPF_TDh^q*|^^m-G1J0h0!`KaDS$V}Z?({D{Q*6p)z_ z<89OR!qSg=p3v|_l8--)K4Ebf87Zsr~{d#H)q%W z-;gJsNS84SW72S903wkOa@jGt#mZbDzx=)NZ(fqXY_~X6TX1a@i$!WhuMZ4XA9cJ- zMi{o}$nY#Y9<}1|2uaM~7)1FM`zbuXdBi7^?gfCK>!B+m?+#+?>SnCE7vDhfLXr0R zkurhOM!_MAt3hwpd}QF$)0iSeh3eu;^WHG4#5N>7Pf6MVE5)gnN#tx& zNU04@+FJ664pNCO%6@MW_$Sfi48>Me!U@QO-n?)Zo2}BX46;g3VN8}!k#nU>Opea0 zWaxKg)?!C$)tyGmR8|jz&>#L`g=)bJ6rZZI!-D(r=se?30-fW?!gg!Kh+ih1xVodj z+o@|~cKsu%uYVJuPn^%;qv!Fm7`QE(qq8rG=Sq_k{(y~|)D58G?UK90+A1zafGA2Q8h;ov|3;Vr2lp7PTr&7j!LHSjBS zzaiICm6d=3jmSS}E{$pxtn&?ib~VPkizF`M^-JKyf=r9893udgw72Jzuo#>kPU_-h zYV2{h17L`f)$i|5b0RU(&GUNs5}*>h^joSir!-noMcl9F3=NDNHyBinCGZ6ey) zge!_}RI~|@hCR*VS!e@eje5Y+vA@&*u{={eaWdt zzuc@l=z&}1$<1g61nGN+dG)n)5W$Szi0vw)a6iSTBcgx!`aIpMZRpTdB;MMp*pJoW zk1&%-?o;fABEC2wv7uuZ`gEdxUy`~&6%2gtn|@nAzz4HtmyLE_KR?$P>*-cJ@Vj}s z**mydR6<-uAH4Z~4UbVC)zAP4wMTARkx>;3M5B9-klIGUYr**)O>#5B87(CP({6ec zzDNwikoyS!K@i|j-NkY8%w?3N&bIFV-r^ZBNJVA(;Q`Je8B}aH9raflFcuOWqN&TC z0L`Azu&`_yWkTiiTbC6h@E>3RFp!JF689`}^V(p#g9)slyst6DB|ANpdrxg>8G*Is zXXZ}4*E)PD(Tr}Oj2%7mZwOuiqVR&h^dJ8q335nnd#&+VDhFb_cE~@iZ|H8XEC|Zd z&q9!nz*EIF+u6rOJuy7{fu$n4lOsNX{vdNTJy~5Ka6wRr$M+LtiR1}xN@YrZW6;po zLb~a8ylm1nxBEH9gW9hDlM0R0F2DizSOy6Ztc4ytUJ zDP1bD~I~$nkJ2Y=k`` zjHT~ftF%bV1T&>;hv{TncKDNFuT2Kjt zkNZ_;J!SnTyGPM+RKt>29$ZLVS_5gkz8eW4ehnJ ziYF*hOF$m3^@W%yJEy0aVpq0O>suQ?Cbo>hmKh;#InLn=&lS$IjteoGGBa)fiKY9k z0$3U>uj(a45;U1nmBGjK#*8{61MvWR4)*|s6eu#{HvD<^=lKdxjme09cBe~c8{Io? zZP`^t;G;J7l5fK~x=TYBw@VyH=`~44vA1Q;Rk9Y3jK-M~b&hYM{NdP@GvCs#aZA2Y|u@f;diDLrRz3t}SQse%7 z8MTkYI*j$4-lQ;^kD!M|AVz35=Q#KrY9VG9+;!XOhuNe9FxY|dBXgBhY(YXBpTIq* zPCx~1wV$)f=J{671^2G;28iu`M8^W;+6Jy~uB|qG`2TonPI(66+||DOZ?9Ymo#yFy zJkDGX@~(FY-8UW*_B>cptlN9G4|xpPrkZ`L02 zKc|L_0hv+5JYJtoLseCeo5CVX;}ad4UY;LpRqdg)xE(JoL!V-RuCKf);k8z_Vas8MErjM*gz-0 zpI4iZi7bf5NSr61abSmqLbl!6Rj z{oi{Laz_2%aN+va^?w7|A6)+z7c=Lh{|jIX)&J+x0TNL=YrX!@oc+880I#Ae zAlIsi74DJlA%=vk1NE5}On`0F_*N)bh6Qd(U{^N+j-pwdq}VD>QfwD*(1QhDbJK%$ zc#4iw>%m@VGwQ)6%<1%C4~(hwU=N%r_23FfQ|iGcw5fs~SuptQ77*I2zYY+RVgZEC z{%L@Gqp_E4Ztu}lef+ytQ&q>6oaXAKQcyV=)q6_PO69XgS8ddDXH`4J2+l$6w4}rZ zshzsm^#iD#E%ZNjqjGxfuQ~qf*50hUx5Z{b1!RF2NpvAn>5xtYNi_ z4XeeKsMoJp003WDSW5?D0BsFO>yNAKsF|k$r4oUhvlfHYO$R~N!GF<)IM)9Ds|IMZns{+`iAPGPCZGC3^nkLju>Pb$-!EUY4wsvAbt zmER3Y@o$P&Q=T->gRx+dxX)00O0WgiEZU7Oao?N!pp?s6#u(6Cp(oH#9 zO@i;-#a2eG*`-!v+gXgzT5|HIl3Bg-AI#z$B^g<}4&%6h7(+Zm`2WWIkJ~$YPW=D% z^`-o`h=(zeV=>;K3)FzmlKWB4pPqu|N%<&~_*G?owLV1NkAP8sk{ob{`4w-Z#dKe`~vRbJ!@`s)d)e`u3I1OKO^I}`8!U(Nh~bKB1U zxUsjfySL>3i+F7Qe@+K{F1(*jo$rM?1-PzlHacFNs#-8L?_67Kulr0W`WB{iq6RpL39C zdwgtykG)N@8<-5oFiCD;c*ldC5dM}TRg6X*61)VV+@cZ?9Xw}ekNi!J5H=T)9p6Fa z57yu>VR4H}vP88jPrZPiU|0r{ctvFypjCEbNw|k0Y03<7ufTc%w%u&R0}HL5EC{?Z z*=buYs5{_3E+^)AH1t|EYE4=hC1B9Tn>Ph)LzKrUBk;)kYx9Et1UB1{Bc=; z+Vh|CX1kxn&t(~bCi(AZ&zAp2dwctv^M4(WasCTlTuyi&i~uH$s$Y+kBXCBs5eNSe z;-IGSV3E@PWO88}`oF3W*d+fQ?Tu{x-{^1?|7R_am;U!A1Tw1mm?c4D1RHU1BMxrF z!HqchhdBA!<3Ile!;_Y%7(>DX%wZBoG+b`){{M&j2X6eola2q!S{_ak*?a>z;ow&} z-z)I}_Cgw}btD;r+S9-8R4+5Yn?s@WokJoAvU}d(X30H&*X(d`!z)~$_>Xj!M zE;Ybh3AYw{P0TeKY9Zzv4*9IJ~s@; zmL9xoxdM|WGq}w9u0n=y(Ds0xA?s{o-5gtR^Hk9eyUUR=jA(Rfc2K%(bH`C@ja`E{ z_04!S;JPH`E=hKQnXv2p%v0Pt$f>&XR;#q3?cT(e>Gx-@E_!{?Vc1 z|9!B3u;KsL@i4xg64)usdt&>o^)pncPO$qAZ~Td;+M9z^dpvKpVC;LO|Vk zT8jV;ibLi1d>iAkSX@cdWtlKvn&r>R2|4p_jt@~9W)Wh3IVCw3$q?@+St8BB&2qXe zJ|xW;elVv`almz1+7U^xM^isAR{}XR{({m~NEQ6bA@GjV7-7XB9Vr~zwO`0A9vnbE z03X0XuAB>K85dUVkaV8_O<|mf%JhfcI>Bea&|1TjO3?p~=-9nTl*8Nd=$56exxH2> z1X9s%bR>Ta^p*4k0P6aMC)q5CK!NZqq4~#gHbvzmPH#aH-yyp9S-zp)If8gsr}71$ znZQ{e#%rKW%_#`B6j2eA=D=t7!k4?LUr>o%o-J zoAZA?&sxs^6_kEY07&2sN-#Ug+256CIRG$CvyusltcLcYrrN{t3M;A$ZHe1C3Yi>7 zbLj!nE#TCsLc)Y4>|zWug?ZrgU#9@71%!1k6^&#i#90c9g|7RVS1224&ou`tzZSh? z$12x&DXu^}`~!JViBo0ZQ*>w?LrLMp-#QJPqoRl-#3-Qn zq4UZj(c@C7AwAL+mn`(Iq(~w98EUTj{1fwr6*(%mt09?{aWYh;`Dv$ExNUqpEWgPBcpzAz&SOhDU75b8k;rLQvavKRk2oZ{O za|}&$tYIZ!k!p3SxcdzJG%LY4E^rCL2@3B>J!*wB4~bNo7x5Gp3&+xfd?r|?)YmdU z;q-{XJkYE@bQxI#lQcFI9Z8#%i?QhZIrUPPt4ssM!qW?FEm~U5gvI`qO_QU;-~4}p z#$IfHVbv=ivR|cIt?-t6PzuU?g^4}`7D;NT8@TwyR?!ZTa->uAW07(;Pt{X@{+k!P z%d!9s=l}8EzT^LWe7LdyU(2JZJutVCOc9{D0&?JuNYz;-wc20D?A}6B714*WuuX$!thRa8 z!m=2_UZ%3mWODOzqmstZ*Ux3`Y;t^^3qCq7u|U4Ze3^3R?xfom0s>&2L$>XH6;0W) zm|xFs-||dA^<3wc?X`cprQtX4#xiTSheWRxZ$gE5{?tR5mFaM8@MhC9`f8+nZo`)-l*rOgL*jK}RY?q)W7^X*^{p!k6y#Vdd+y-b7CK0)Nof{&+N0Mj9(uBDS<4$BFy za3tkl9irM6Vp_ZXZgab3{wM`1iRJOoY3sG>4RsLZ~WIexWi zlcVkEd}#wA;cLN5(6WMBZF7w4`RaCqK^5}1a*EKa1mY%Kdr;~_r`@27P_c_Bm~0Da zl!=fe@?|jasD``G1)T?-GI>Z6?XH8$S-&l~7z0>>1VLQVxn>sqaSAN6AuaC8a5%K@ z6L_SJpW>h{tNBqQnKVBctw$P4%VI&DUwzoC zrhg{4Rz>PsvuZ67?Spm&rmbp$w`bfQ0PZ#{Tpi%`Y+Mfjw`b^D-WqO&s3_m%%$Gr( zh0M{9*_#HW2;nkdi7qgn(R-*cnc)%@=jxMX@V=GhCB9=0^Mcx*@a#hJE$yQFMe1z{wq+YsUo-%tu9S(I*J%6@Cr=oab)1ogi-GZh zgHuhkey=j^e_|+PFZu0QzlvFY=k}|n;M}5}chHV{+St*PjOm%!XmC2+agNdqHnP(f zEVGcVL!ChUO5NhB&))cV93Z+jg&l}^x6`{p4=`_tEiE?h*Dl||1f;>FhcR_xc(KO@ zs_crl=*YdPF?6q|;)K)?N!7sGNZ82D1 zi#ibYZI8Z6?Ets5Oe1?#FVMNZ7d$_=Xk8yQK|FR27Lv8C7)!&k#M`U{p zS1Jpj5x}gXZ@2NKV)NIw*!2pn1FY>M@Yh4=y>;7g59@zAod1(-igI|1I-7zu*nf>q zocJI6qoYmykF`9V$+lPp{U83K3+=dKkN712@-qOOrV4>oRtxUq=oYz`N&X|% z50z*`_Zq9x=H17Ursk0HW0hbn2gSMoflyKm)cJ6eQR82$s6c}=Fb#qim9-iaaGlsG z*+tigFbZqJO<#da->56aZRr(c&RFZ0I7iTi^x7b+=WX4~K=XSM{g@VVcbmRSytWB%Htkh9xR6O=Zo~ zv-5lmq;1oEQ1A5xD9|nX@*d?04AEJVfZ(71{O!L2vs7T&!5oPJeb=x@^Ne(AUGnQ}R-aoc)KoC8e^?#A!H(y; zob|?T%zfz`6dsg+gt!=aig&4>1nq2li{HAJMLbn^+06ze6ni@Ad8a%?gN{1Ov%tOu z{@uvoQB%*lv;AGTSv1yjQ)4i4f$JStrl^E8JFTlB6u`{Es|Lp zKE*>k4{6{@712fU?ZnxJ z-C<$v1Ymn;cr4YgX<=lohbD!2KD?XVpdv*j!oxV*jZ<90G(<0+;^%o54U>3`!bO-M z5T{@}N5vGTC@lwS_nPcL%|zr`RAHX2VACSCklyLiCmlb#i}oLn>vRSGJKoo%BsE33K5u4|lFWU(9J442u| z0nf4PZ&6QmGPmBh9kN_$6+@?I$DN4BJJ(YjxqHqqk*ojoW%*de|3eZT<^ z@6ZD9G4sxP8+Yy1U9UP&uRPRQ1=?M3e$txod9{$t3~bol{>uxI-fwHWuxjGzSEDv< zRo^(7vz5PMUt>2KZR>tj0a7m*(ROsr+*ek95WL*YJD8kT0akz5aw->>Xj((r4RWUo zNu(YnNj7C^V~=@-;|28^2aN>XNZ~TAP^mIP5 z_$ugM{mUD!J;X$r9e=-yp5N@M{xt*yhzUf7TtcOTY` z$)7KJfa z?uadnObuj&SsKF9d|Tawe|iP5GmHvjGApNRx)OMGt@t5)1Md*PvjTy81fnc0SrmY1 zmV2P2+hC+gD#d!aE|G~5Af9-28UaPuil zmQdBwA;&?QECB0J8BW6j$rS3|wOI$~Hg7FZqu!m5V3JSZC;)*f&0?zBcO1+(UBN+Q zBK#Z_Xa`~(-?Fqib6CV=`&O8ddjNA^4Qb1+^3bjOqD^hDUU2srxFoYgF}#B!Fw5%@ z%Ed<}JGyW9pg1H=~&`X9w+4O%0^G-_tlNrm!rVw~UyEIAYkUCA@ES%m#sPF+-rR z9Aj`B&r!;Py3?S%?iwcTR?dvw?ThN-Rcn&Qm-hly77I{jU>v6rh<%_@J%!P~1Kl{A zr5-lk!Y*^ucNc(H5lo}$v862s>s1RAp%f&tB<|&;^5D+<*A+jykfC5tE!(^$fMKiLm*u@G|k(6 zoFo7yI0I3P^8_wfCS7rcu*|`DmgiYfq6loGTM!kConn>_d~sSk%m`^%n-yxHBE~(` zEAUKoHwdsCixEp8F|3@F7TSA`g4dLYXhhsO6uo4|BzxW>X3~cLS6x(6e!`q{wF#Qd zFZ{h(Y(P6^uLZm3>ugZ<+N_` z)fG+Xuq*e36T8{&h;ab>o=NfkM349WPso_NpJ0-lDMGzu5a0&?&%L9Oo&SCBWRw4A zJrDQvS7$L5YzcP^qloZr8GuQ`}s75oe-vEEP#MmJhyY&)vFF=pG=o;bUOrp1Pau=|9_z=cONeP_ugp#*xLW2ljEb! z{$I;Ow+)-(^=y6C*HXJ)R3&?Df|BVFPj+eK?^96Qy`G$c{>?WpX=A5A^BBijO52b& z!teQ8@D+TXWhElTT_a?gXTE*kOf@?6wGLO>&9{dm89J`oh9WU!)}}#xO+7aDxr>|8RfL zj{k9Re6WfCv6hDi9DBv*8OVulU<&gry2?@5%c(-2FzNa@fT-#;`1yW$G0=4pECMpz7AcR zVBqZd?)oLTbSt`-@IRwc!}iSr;5>=TQqYw6wWz)wf7#(&(+=UMcJ>CI3whSe=?m7( zFVy5}C(yxgAUGo{Jr3_^e+k4THOT-Ov&5hXuIh))>o25^HjifW%-DmEFUBC&+Reu7 zJ;Fj0NDhwY`YQD2LXXEl?5OQH6}=CvwdG!w>Z`}IDA|WfWO*IKoJ%G1PF$)>1JB`U z8u|kf6v$m}?rN(D%Iw)QY!2>u#$Ywh=LEk@=|O3NevoJ45Cb7h61Et%Bijlms3Y&& zwYJJG&Hwz_p9cQl(R(eU2Wry)9vs^7 ze@2G~ha3KX9gma$U0N+GqS1lf_2^0UYpiBjpg?Ja3NOnK4ehIGRK2rgsFr(Z+%@y+sm#`gci`;@a*+wudn(v?0;pY_i*<= z`-l5`_WjSv-tlJtuj6UAw>3L%O%=t09#Qd^|Jk=P%QSxX1#(fQvrlT|d`>i6TU)Ca z7I9K8LBt%{8h^YJ?-J&mVU>Qz8@P9wToqzA`{N;Lkd*`p> z@14I6o{7H)f88>z`L`29{!5LQ#|MMDFtkrG*a2$(bUR^caW@2SW?1BWA#jo*P@KRN zP>+;!Hbq4ovM_id#7v({!`%(R1-tea2B!bH^PfYi4G}TyVF{)gF2V7Es)dJvT+*(y zLWNP5f1Sl&=!M)l*EjnNw6wH2@t2)y_XuIT9b@jgLA5C}Ommii^9!b$k66Z;VwQq9 z1y|>1zq|rC1NVrc0pG|6tu zkBwQO)BDeaB^&@BiWz!)cEv_gH!V#Dz_fx(pBuLo4`ly!VB3G}@0}c- zY|j66JT2_M`n>APt=q4zRv>o$9eUN5B-{?8fN69_PKUR%DLB%tApXpIyzXh<{||5f zb#UU^e;sf5|Ft~z_Fp}3{bg;xw5lzHhi*<9B4n|iaZ`jP7KNy?LGuz7{$dG2^gd7J z;yW+0^nbFO00iX!1M>n?-4(O=h@!p~FM;*;0tDiFO@fFm8Cp^U;w8$HY%xV?8Gzub zge4l!k}E`hy@Y6*rB_;%^9tBh$jS=fWP#@N6}*xo4Fs2BUcnCdAa0;2ZyToo0v1Mt zu1e`ch~wLotxe7b+ueWr_QVLlNzVli!R8!ro(B5Q6mzQ({}%e6y%R_OvwyI$|6R+& z^}l46F@P*>K{mG3zbn!G7P{Rnq0Obe^?6OSWn2ukOL6IRqLF-#7jmHRKedngof#>i z|L&ml!U(0m$bKw482a_h?8r9pV!9&(KErZF#;+Y(QnU!dac2js{oR+Q{!Rx~%-z-< z`1Xy`TsIo6WX4U)4Q;%p<%afQ>#ovbV@V|dLy|j14~VHVYb`F1E`0&GIMcuOiMY+# z`Nw-2&VLa>d?g{UQU2SrGlwOm>`VEzDL3>C>9+3KR>7spy!D-c29ib0` zM3^O@yPx2!%-&?PwB&BVXJJTweaP-m$HSnB{vUhtzmN7d^nV?XVgE^{d|EN( zs~iY~@vdvztH-MhXs^6G8PTrv?Huao2V?x1dnYCHnk7w{0jBGtbuY7M*n;0<>=w+w*tEP9tS!;iXwS~o-rO4q5h zWs5ZqPcjHT)!*e=^q;uh*mTE6cB{GcpgJ~Hb9<+n{a$`i)%2em&#ip>(@6i1_eS>p z&+*B@(T4u7<1y&}xtQ`*iM?DqkCw7)Bj}rq$5VKV-rf9*Qt=|2{twPluwA1_MqdX-?g;4G~J=V;jln? zhT}3T7TU`a-f9h8&XVLZOX84)yHUk*`GJ)#%Y_3>SuV6x7wpibg>f0hsZ*T3^;eLW zPOb1uUc$6CTS4VEVu_vytXtmDsXWVu;44VuG(u?!4qfNmu7JYgwuLUY2};t+G9c=U zcsNBEllg|_giomY_(pwWp^3UTtFIKdVYR^On{I_vX}z*KW|bk#L#=>3E6N_00Bz>M zfShN^Y>KEnyE>>^V_hL`h0r3qL91X?17v?GY!wJ+vm#sx2#zb+R4YU=(u%@a5tj?@ za&X!Kbyn4WaHzqkC)c1YkFx^cGArWr7NB(gpBUf_#LWHVhHxt=yh9N!CPK37XRt3c zHV9BUe>uxhz`9sw0#Q1DU1ZbMr;j((e)3Q{SB2YvN+bWiO6PsemEmpE4prZ=>tABr z+bXr!)hw-ES(`Wey^^7aAvW_x z^Z4a|Igp;!0PPq-8iDOs_Zqd!NwMPu|C2qug;Vrg`_0s}wm*bWa)xS|7|KyC18)s; zLeubxgu84UR+=aFG>*-J*53%XH8Do2E|~+l;sby6JG2NupavWatWMDm&B}=?{&WPO20thDB$!X;UB7{jeBNRP)ef4vZ&2sQ7%N70{B`{N6w{+C6-fVm{>tPsf2& zo-dUyG__6hC1fwA7DN{%?XRvwkV&83I)>PybzPSgIi5h#$hsRt1MDX=;) zr+y4387|+ln5!Vhfb*X`;_D0}pf9Q4;&SpgR>A0#H&V}DlJ&3kwzTLW`OmE2A%|pg zva+Dw%>teQ*d{!+fR6FhgMn3x+jGb|>M#FP2Nf8p^{OV7W04h`d3GCHwYt&ZCA<0y zK=3w8k?m(~I);ha7X8(kF)9m2xwwV>A`bxm@hNr_t!XiNRWH2bO4H2UXW%!opg4Ry za(bBoG9;Q6<_;||^%W`5=UH5cbV`PB#A`D=nBtT0uR{wB#Z;6*#hl1nAixL~;RKOC z*~Z6#EhGti-g5qy>_gIKQ+`rCHuDaT%`A8K@F~7#L_kM0AOA-(mg`~QbW`U>XR63$ zqwMlH*RB=SM&Y9wYABKKI5y;OfhgWM8^x&=_}tT;gUj2J#qk;rz(IQqf@xMzFZ~pJ zJh;{osdaX3o7M7;d?=(Zw7REG>~(&_x+DB1hlW#0s|oSoM&hv!F~`dx=GZ`t=&3VS zM8$QXL@YI0f&ZxNoAfRXIw%ZGW#GV}bu^q4u0egGKTkb_@VLX;!)d(qX8|L6GF*8d+JY~uf{g~cX z@TvO^AZsnXJ>}P9-@W8WTD4RoJX93^F;ARo`cK5Fvm}NXt*QrXp#S@O#|LiwpAG$A z%VW@gBE$kd=c`hFZTUP}l5dQmcW)k!XD5J9|2jTx9F|)PfBB%gxK(!CJ}LSwf3ib>d*g+%kv)Y0Gs5$gOelM|7-tbbN{!N$36cqF3R@bSK$n+AMlgxPP=|8{wdsz8z zba=3D%YO%Z8~VSN$EE+`cDaW$p!(|g@tgy43=eS@@Jsmhp9OqW9y&`vYCI3b8d;AX zuNA=c^%@Qb(#D_jaHyyMmlrR;7yrM}|E=Y5>Hp=$%RXrT<;BZKP4_AM4?*(@e!mON zzr1+qA)f@CMtV;Qt&RV$g|oU&1Bn+U{(L09_Nk};|G=nN-3q*k{vW&a|74T@XFZQg z|LL4>P5{36ALa~TICf6~mQ=FV73XiVxldIbW~dFhevng!0x_`fY1&k>?oq0S zRCi7BKqpegnCeRRH5jAn1Ds#=^go4Dn)!LPBcO@?@9#PH{|6iTzn;gV|AAA~2l;0{ zo{yORvjIE=`4_&uLD0(aL{@PqK6lmakobAa+gLj%V^275?#L?|t%>z)cD&)je~_n| z{>#{TS12q{`Ec?7_dW6d_YODlKi2XX^#6iPIUsWm*rbDBVqC6z7+4GG(Vhv;IQl*s z;_0nw-kaHt8$+cmYzHq-!*y8vwFRqra^$ll5xHcxtuPOD(Zy=xO$-=VZkP-KrilGv zaK_B3v4q7fDp_FDvm~J@d92=QtmNe_5!pM#uy<+znctyms*n}`E z2!N1Hjs+s(<&}?P5{D@8!<`kbqneS5)f=gzRZ}Y?!RKUS&03n3&dg`WV|3{-u z{@3+9^5&t(AYi_g^LS5v?_hdA`t@Fz+c`xS2=D@zXd2Md#v7|je*)4@`?9!%Nz%6X zEWa&agjjJSsu)cfuKUUhm^nDAC)tQue~OA*6q)1q3BneZT>9K5u$j}D$0g`d#WFK@ zZ*4#`6M-Fqnt7b=ZP;lPs|wG13Zu#{prvEd%;HJ?YdeOTFQl04SY%D4ku!YYG(Sj09gviUI(Fds5kYm1)kSpPdC8K!<9P~cAtR{oNEAxZVn7sVOEx% zyAeQhlv3Km=}rqsd5m-d@EoNGD<3mSmFd-*v*hdADiDm~z8WKJWjV`hn|c)S{&XO@ zj8$gbb7`zEup7wJ2GjLw14j5qi^HK|TdXs^o&ajYtF6Zfp^ylzuJt&Bt#9GQyIW<@H8D%m0@tj)v4Ra|kr|6uIflH)a*zaMM7?MK0x+d<0r<`&NwY}intIs#|C57}egA*Bx4Hjc%VXUCyv-s6q>_6@Es(x`9j?Cz55?4ZC@?z40q7J4V8#Arw&*6c3@)?$EJ<{cl!leG1*+gBMAIz2 zLgZ-t_U%bPRS{oeT*m2baLTnGv~PAh;qp9p&%xH5DwWg_yo!dcxh=`_27mt@Y~6ux z-=t&z*1TijHU=LH5wOHDTTTDTyqV(1!^Hm@9UkpF`9F>iHuwK)c?|l0nMFX%IpCAN z>M_uqk?V1s1kN~mJ`4nTl8c}*i!Y`!1L2JR}k>)9PN#E zp<}Z=8sHChwbMA24ye9HxSrb@sCKpEBgnoB9)7)}H53dSd-ZMiZpRZ)*@e8>)<&OD z%e>vR?jZbILkC%*jA!UNYb@_IqN%r`*=`2nD^;y~t!iqA>vC%~1}^f(U>Te?Me?PS zskP!vHI32j;(;>9jEDp-Tsn2Bg{$tmt)f>S@o{Ij+Lxl4Q+5x$H}DPtJSz}LGa5t- z1mz@7Z*f4wn^UHtB6dF6Pz^`HiUITo);|5+aw2UBf!`Br`QCX5o0h%%BLOYdI}eU7 zV33osW%_{Duan3}~PJ`?$(JBAK!ff!n zOT+w7xI8-kZ<9S2$6JI@{_67#CXMZogYX||{JEjvpe`SXCG&lBt5Xw{37jL4rO5)! z()jZXv9Oo8&K9K|Og@a~Sy8^H#Iz-?o1ld70uH6SMdhVvYkBbrNLyv7E~>#jOiN64 z0&yAvNE6S4|K|l5?d>0ea6-W+V(%wB8SB z5BikuJ_8>numpI4!;+f4lXXOJo)u(H?tUk0RKBW3O-q>MuIAmMt zxA6L^Vg*bmvLHp}FwW&0FLz5(J(-Tce-h6>D`e|KLU+WKl}P521oHm{VUmdBLan%|P5S_>@v^sdKtd zJUO;n4p^^WJ$QdArnBT8E^q*Xcl7Lk6XPi?!%2OrrG_E2O2K54T;EuhPRUdcpiOnZ zeS5-7(W?Xh?q}3>IE8oUA}!w)Z?mjo&Q)`Irz}HJ1LiE%T>Z)S?b{RgtrM|W3sl@? zV8fa?#{9m;(>eHf{lr(r9S)~jq#5?-X(LY&-v`MEK&1NZ@`8O33hCxe`^qDG^UiTAZZ(2V)Z-`y@O;_dhCSyfu3smUmz-SF)nW<1Hh*E4+jT! z{I`?i{Z0JmwLAv>f6t~|vhL6S2Yqw#11ddbi1@wt78 z@+4aj$u`hU8$obY!V-;V2{Uxuv2~Z*WaSIg$bP*sC`zAiWM^D_WSw1uaaQ;+;`Z2# zj9jgq%^Bb6sX6~=X&Fz^>f&G1`F}9lck;jPZ{k0!=P}QJHsw8vfA%7Jylj9okiIzq z-a}i_Z#gEw8ije<3JAU%BhWW=7h{m6;OhMBmsi8#(7L#rK>T;)TB$OT8U*o|bF#85 zb6)`qnWb(ke~3evEOnP@D|5FB`x;K6W~*p_^(Cv>$7c84AO`pFdxC#R=W!In_1NNq z;5MHzul#`ZOFG%T&1b>DVyMt(37TWvvHJ{6$}-2NySuk>IhoziR!FH7;@xQ+MG3lx z1=_tyvYXw#n{l{zG&(*G55|8vx*5Tn!w??AzZ{PakN+|nj}8y^4x*cVw2O;Ss~j1B z=gI6gPVw&D>;@GnDiQva#OdtI?yQUxJj@sW@yqDgyiL~D5+7{c z^M5#;plFsbYq*Eh|BMa}4{iO=(Z>I0J&(cvU5P30h4(WS(4%GitWorR!pY_zUgd9$ z#4=TtP^?eg-zzvqrOj#7{;8q=sG#?IDh)n=oM9G}-08u%4u*yO$dFp5Uz zyPby$PF*vYC1X@~Xt5oFI-p3e@WX|!?rR-X46%*9^KEH1H)?a214}T?Fe!Xxk_|>! zA;$4-%EG@vilmQE@%0e=G%LZ!r}JxYj|x?)D$1e`R^4?EN8*OhTm7lw|0b|NmqivL zrsKmo43}d8o8Hm?H|8IZ)I4l;yg>h&2IjSlL%qv8DYS1pv-dhxX! z2{rUTOHcv%GFT}Ccmw@E+S_yP{|@#y^nWdnN&nT9uT1JyQ;(Oh>tpDfjBAa%nf@Mt zkZawUnqKWgOR}xt$+M^$7$50g5eli~_BW*HII}>rOk1*?)X7+&bV8lChw{}|z}4;4 zgI|S?HK4ph3#~5s)v6kEZ&el9?^adOcubbGs>@%rs$6D?I2Fl4R5;VmN*6u4Rr#wg zF)ncc0vgxEjv;Sb%u8&lw(Q6`Ri@(lX(K9kv!2(wlz%s04p0+#8Xj1{E{D3E6+HCN z9a@MeM0D;3-cbeKq(<7f?$F|zc4)liF4lCY+wjE3}ur+e;UrE0|s?4ODXB|(S{Fi4*cDuOB z3k0L{EX8F3j|LpG{Z|pzU@)+`8^^~tJ4py}Mh=s$-5%n!9hT24| zMO3U>1%`B?L-mk(L;3}WiDNO%vRLUp+vGA^?HsGx9@L?j3vX;ljMtgMFIRWy{uGR! z02=u3A1Q`qjK?v&NzkdZ%|1&P_i#bE0EU;p6P|~9o6wbyhgosETfp!xcmhBIZ%`r( zT3EO$8Y}G=@}9@9;$y4azf)Agh#G3}c39U}S(+96+Xp(^=9iTbseEOIake|ja7nG&{*1WvnG>;X8k)P1hq8S4 z^4+P*_(_h4=KyEm9)S?107enO*^~w#jU#r+1dD8zMgT#)Ae49t?+}>AxP*5I55X_l zJq<}@s&R(kD=4%7h0_Fl1t}lp-eb(Y|06ur{NFrFW>d7P?*IQZ=l|J1I6ATP|Hp^N z8~y)U9)th;l}-7o%pPAkkCwHQ@b}EfnFiW_&}1g5nZblFsfSEjqJ!s2g6;rclT=u5 z$;c|6`f``!sw6f*Gd1SgPy+dLvFz9a^O==v0JN|v_v8n$E!w$9KDT0qvogz3F^w_S z*l%DNGF#d5lznbs*2ivo5PJ-y!lkOR3@uc#*^Z3GLnwl)rWTsX8bDmH01Kv@vCg0hIG zhEU|}3Ps@qnlcBLlNG^L&8z`tk#cS&h(#l7fLBYGw-U%&J8OVi~$-FEE;(zc-=gCEnWG3?-Z-aJwy8v zYyIMvM`kq`i=j3r^h3)1jEB0A#V!ugWWl*G7={SrH(7)*<;b)?Vk~Sf%1MS1V39HP z5dZYeZ*e&}ldWi~e{$ejT7Jc|YB4X(1}s~vDTS;)D%d<6YQv~rSaO+EE-;UPP1fAF z$fo}br^#7SP|Y^5jA|wjzyIx>o%YpGPE4s5f{kX!W;BUlI0eCb1f$=IxJ2(#Z;D9X zO$BFuQy_R(!S_~f1j6O=X1!3^7cqJSR2u-xSnH#j6Dk%FfsBYo#wf2@E~Xh4F0LPC z2iJkKjkRp2)ptdW7f%DQeOrR7F;LTEJ(K#4J!+Thy)PlWn-O;s2 zifeh6emi^r_Tuf&Oyj2E3||w3aN&ZQ=y8dv%=|dy=##_d#$?m1AaV*!!3gkC3Z~oS zx?8Q9%|$@Vr&9mVkB!|=lJ|V5{2xaLd$#}A-r;ED|GSpQ(Ep#)seS`d^;clq-fM$-SZlBjwfyMYx*?XV^y8f=#LWiYrqs7)ix4Z&!^mz z$q$zu?1f!UP$PU%yYYTPmR{kCLj9<@oA4{OB`YPDf6Z-$ntvw;D7~prBll%@g{+dR*-^%9_J#0Z=9Mds>}fT65}$c2G%v} z)>e)i*{3cia&4rcfe!@lvgUZPS>WHzkifdeP*e%*X)qM`uDkh4Q}9vLmWq1PLA9dZ z*Kbu4OdAz1ywz)v7@@I{pp2lrL~f#%_F8kCOQq#a+jZ$q=`U?3@oa}StpSNS)=?|m z8U0sdz%ft zy`Yii5WYc#1dOv{3hD9t@t?uo$;rt-0|T|6ueH9d0Z}_QnI+IqjcJ8Y5MpLjWmi!J z_4yFE;UBay`0eufPqE;Ij{#r)PV*YHafznV#-9GrjlV>)$BMf?>NZw!i`U{zr`=Ic zB3H2W-F1pyb68GR?v^xC(Jz0sBV90P+|D~Kz&en%NHeMoh0HBfFXC-vx}Kh9`H!hV zS1|)?vj0CG?c4s}C!^6u{#(am$bW3A!M3>58}us&Rw~pVn-C}l(z67(CGh@%tIBQm zNK z1iOK1&zq~gf+64lR4dMc@-qOzRTkdSlyLfl89;iRUCcpQ-qR*6VVU8U5jgaAI{H!bbaVzNOA8*N5ysC; zK2=S*BNiAK;9m(yW+{!dJGzieNP9nfQA z{M1nTX8oopif2sLfy{ny~HTLIWEvn#3rWUx4)Ew-3Oi=M8*_SI}Wj=!LYVdK^AR=ue zFjX8NVEk%XmEX6*{vDP3WV{OW5B|adwE~)UK|LE^E7z2#PLn~Ex2PVrAGvrF;*YHr zX9|m@pSMYX>7b1=H;#&I;vK7Bpz_*rks|>Ay8FHWF(L8)(k&ye3Z)&}gS`_fr}fz% zJ_INZ_v1%~>HEpcU07TsrKo^KN2vBEdY93-`bmSiIsV$(iyf^K8BZMlok<*663I#C zmLIqDTgz4#jbYL?~Q`~lz*c=nJcpYDU%9+!2lRtnPu5t6IM+JhaNT){VxLBExO~TDbQ(gd&G6HgPhkF#i*V?YQ{Sa(l zy4SezOiBL6wgruFJ}_%FeKN+;44XWqi3B?36OxLJ+{M_+k81MK=$dZGs@}qq%m?*K z%BV&gQI8t-sJZ#-ySzivbn?%Kr`5Rpj`=m?K!9-N4gE@h|?rs(m<)E5BVe72t^sOZ~Vrd#q^xTV7)F zugYnP)}_3?P@-C`@Q6^Y%oFy}D$~h>DO`zJVpy5WR1M$Dq1sk;{g^rk7~ zmQ@Uemfz2g7LE2d+i$OQCpuL$6ey(JzOcId*XquIO_EluuKU^2%eS>lOI)waD&);m|A}oBRw^TXQKJn3r;BHr?q;#j_o zF4QvAOzKbpOCMnIz4CQ{aEHdv`bL_7g)7Qw`8qvmgErwHe|bLk(>3!ga@oAWXb zV{r!h?;!Wt@EBM{Fj(OM(lTo@NbXao3ztj5m~-)^M}2Pc=1r zXdOfs+owoP+X(pRv&X1M-deFJhRqb{EBa#u@x&^9@0QpHgBlRpZT4VSM2NokPU=?X zOSJGX{y2yt3^FO7rseLCrsL8v99@Tk$J%~O5f8C4z>~HGs>R4A838=9O*UdxTO5(h zRaHUMcnNb=o6@2QK zMIT>$qNdXVN>ZkzYPCC;g`G3Ng)nAKvM^y}X11BR|84U#F5v8pnpW!MIv58wz1DZ{ zP&dj2uadr4sRuI4@gHY+o>C18f*PhZ-rMxubel&WlYZBs)DhfC;9)-sMY8z539V)S#Q zQv&!90y^;Z4AR1jG&Zv&rzR!wY>(&p&ul)@ZA}N*C z1V+28b`ICZ2|`B(l?di*SlWj8+9`tYr@WjbklvGps%eLXsU1QdA@2Zz^&)Q|DQ@zV z4Dr#`&HHa0e>t3wErV7U@#ZfpQ$H3v1l2%~3@XdWg~V%T*GHN7=^(yeWrzJouV^_~ zPsH~(0hb_TafzDG?GcbS{a2XG>Gj-mHidXg*DY@5C@8wX!X~cThX_8j124I43f@D8 z6sIIIzs4xnCUIaTZ*#fNW{GALyR`KfF1q@gi19Zhw19Pk#VD03)2Mj2am|wW51M9z zhU016=CegvQ2O#N_&$i}l9-V97Jw4>zx!S(bKo_u*eH@aIt1_MXa7no| zNx3A`eD&zLeBm(<)lCKV;|7KzEyCx*fd+fR zrC9;Y-zp=yNkd=Vd$$@@N+@w}kY0Fxftqz0xfcMwa5SR%_YZB-Tv-4;4ojmjKVyQJ zAQDR5Ev|0J+A7P37Btrq;vaHME&4X-0bGX0Q%0B5DmGmsUDKx*f)m1T1Se!E4#`aS z$bhjJ@tk@uVC6{ndR_bEygOm%VD0n*T%Z)Umah4Hr6)lmGDG7JX1!pU}-@HYWxc|vry|74dS&v0Z_z}YT#eCme9%nVR} zTEmpyaK7N>B$;(DGXOQ7|OGaOnGWp&jW8-SjwYr{1<-!$MBMj?qh zRBR-(W@K_sn=s{WW=cA%$pO&^`O6R38{SC9fPD-%<@4q{ zA}KAAM!CaK=VDC6d+XOPJ-l=T{|fzE!us^C?VG;mCuaO)v^Q*fk7#)4I6rQ1+QB;k z^^cD&gD$=zs<(jUubna=mk#h;hZ}_a{{1R2Q=zH?G_ptf?OWnWvYk%_i{k|%!!J}P z7+PGj?HA-2XP@&=>o9bTEu-Jj@zxj1P%68rjuWSWkZjP?Ptf{9558>~my7$!IW^k2 z42i{#kvSWfW${P<^zbPV*YF0-2V35}_3v5Ik1AN+@C%Z@CCd+eKczNJnThg%M_94f z7hJzaa@8hp9@qGyS%-1@e$-Rbk$6XrHL!rPQ@d|fU0^LRJ;1;9I;R{%;T%`?g&-Z$ zUin(5#xeWbVrs?1yQ_^VOu+vxWj})7De5_xQMPtoXnC6`eBPAOx);aN+L;joYZ!>N z3ko_0`y!M|l4in-Ezz)~V}8WACak%M@#@y;TnOE$1k^9X!*>d-Ttq0Z{|pHhi)o`J z9Oj7(-HG1KP0HHk>V_uff46w2ocs>8*zasnt)gY>sAs}Uu_vH~c`C-W23y*9aTReC zHsnxABQ`DuWhdpZP0k|A=0p3dGoMx6_{ip^*El6lO$4-18Uf+wMhIdxaAwJkVoK4F2&8M;_|MJa0xZ&ce?7*2 z?_7m4SubBj#aao&Iv4D1O0b}gbriGx)|gU#DEAXcprI9bXX7K`9{Wcl|^c!(h6G4`o9A6U*`p(ebpk6)r|mTUm8Z1bQ$zB)jGwK0&57tSY@ z_faA(!h1bO+4-8j$1Uc5{+FF#RY>-3H8UXXN}j4LRMwfpp?0ZEhFllz}Za(6_|XLL!>Zkz3)* zEl#))E_2)ThOkDVy*ReK^~XkrG4z%htwhVucE8JTJY?oyfEQi*kP0wt0#kglvZ+{l zVN25B&U1YGkY9~k7!giOEY$8>D++U`S`DkWpRk;OnHL%QOMf2ZH*?cjN2SR*xK!e# zgR`x7cJfrPFMF-rB(KDpy}J;U*>ix!_-WCj*_{oB^Z)=jY)628^Q~{seL(^)y9m7? zeQJR??D?(T!b||HLr<}D*w4%73)F2L0?8aF`uqy^Rp&D_QiSy2fLXY>qvFU3YW@Ex zGb1yyyMMLmWZ*F&*#D;O6%z`+?;2%Y{%*Gjo8;#$CR!%``=%wT{gMX%;+w@)u3miy zrRIm^a@4|aG;bGvHvOPGha<=WV=;7bVN_oS`R3gnF->$1(|CE$SL%ez$MCbK%v}z0 z{!idy^s&1oT2sR_$RvV2v-D8K38)fS_YNnnG}To!i(z*;h47^qAAR=@`^uP}yf`|4 z1*&(C1yp=46&2G^!nAC z&rKHS+|i+`tj@TH4+VFXlM01@n#~g=I2`f|)1=KLvdp0WDhyq{ZiD(cCPypw+Cl1* zJuXi(zRnij^`D)~-(Ozq_x>Bg8!e*eD`_;D5t-?@S$6(^N^wyT4nmP$Yn1RErZ|{hf?=@9Dj}dfe5Rvt5Q0AeHY&nGx zg+|<4#r03_IHtVJa*q2`>LC<4sY0?WIG<4HX`y9pZB?%a>oV{)YKp?si^)8eX^**( zmHZp{@^vwsTHIEDY#3(k*Ua`8V+Bs_IZhjwk9_8aP;mfN!))J#k>%*e&a|CA3k!cx6P+Jo?$mW_&8KiJqCbNr5gvlhW^U|S&wTs8~)@Xs7{C1?}1iP z>P`~Fck zCVX!gW!|l=5LT^dfZGhLTF==!_c6(9*T;(!3nd>C;1O9$1Wy<^uUWaE;#Zk_K5tOTRe1CE@O)6%E31+Ly`M3@MoD0 zbenL4sV{H?ZNpFmf%Ygp%TUl;y|TeuQUdX{5B$IUWJgS>5}-H_rv5wT3Cj;iaCc=+n|x=pZ#wyJS1-tz_-t;|ASy zHG83lHRsXS6b02CSH|L0yAjC#E)D*e;I zIZd6I*}%eZnVt_tfbKVW+6uRfl!wz7l7uZsi)R_e{!RaOgEECc6xh|)wC~G(Qe@>s zOYU7CT?|omHCA}UCO=n`k*3#BDP2iKyp{A>wgbZlN7p5;N4fVf-_By%{V*mZG{MJ{ zCkRFK*;a39mM6C!fy&Jv&7GJs6O(SNIgYt7gsSNC__FC@O%?29xhpWiRX#~5n?5y? zNtVnW8n-Ep3#lvONZO%UGJS-cmu4>^%_jysc^i_GqP_UXocbrOS%2FiQGF%letnc%P0;sae#s-n|lhH(P~9;82)m8Luu1uQDjQTJWnM6 zU2*&SJw@G(ZTin;P((LbmE3-P#siX;tr$(?Edg~2EEs<(4?M|Hv2Je8XqT58u!_a)|}vR=mx-KywTSEvT2f@IR(oHHP-o>j(NxN`Tpy2ac2fhO0cUu>+8qet63sOGT#LO?jb z;C!DNF}cTK+Kr?HK5ae71uc@T?|lwp<$zZC1^9Fs@!@n9Vf-lARB{fKP$t~iVyJQg z5wE=pAjdxaFHEfYZjib4i`swrpGhG&%nAQCG`FdsL}z6iG0S8$e1_tvA^V?jv*+Gj zgujAtcu$~{o4&0t{%SPy#lgn&=Tqh zq%UVffa4MVi);A=RLrrcb?WAv`{)kg)IvETw_r`j{TCLxl@pAaDZIOnwXN>gu>j%% zAeA~Th~CAN1^};#2`|?^wzqaELHF83QNXCv%b z4GJf?LEh{N1EtX&+B=>+nun1x5AL7{kHICoGd17eI!G8>8tx4au}$RN*x5e?yP&o& zf|R_Vy^{N5M&rXdMPnx}DQ9)mS{lU?Dk^mC#-VM2wS^T8n295e+l244&!F_)1?@MV?Pp>a-@0 z_{9*wdXI8^3h?p$8v^J}n#_Y}Il2X>9Ee@EwOQg~{_*YzG^tv;S|-|1Z*fq+dvNP) zViz_Q0kIt#G1$j_8yKsbuL^S6vtoVPw;G|wXn|UvOs@*a{RC8RRlW;z#MT*4#34Ma-ERU{0faFA=cu%!m-wlG(}tM{QHD2*g?2b7_wu8`Yg5B( zz~Vx~r+2PqX6bAxJ;*(|5LM=$v4Q+;5fqp8@%8hBQQ-p}2;+u9QrL2WlwH_Yj1s&1 z%}|Z`*D?c)*xWp7tA5H9HY#Mj=1UVAideU*G*dJJD*N9TQ|nRA-Sf6L^>wWyPf1_k z7r0^+wF7-Ma<><93$UGn3nlv-VR;1W*6lT`uag-LKlB{Zf+Rj%_&`e|7kyxCryzwV zl#6=+;6KJc&J|c`iSWq+X1&QLjVuV;%ZO#@d;p4w{Qyo8d;bbbEdn|0Vmz9GdI26j z7pov*hlAc`KFo*Qsq4WkFgl)T@?Ve-H$1+2kCD_^M3n|S=&n6cJ#Ca;W_a0iX&U^( zyK`UK=DBeTBIfc=C0|oQ>jaR^Lrr$H5 z?ikRv_Sb1#8N7S+22zRl^-6dEGa*kj(5ebQ;bar(f+-dZB45HkmKAv2ZDeeWQqmt+ zkNB<>u3V-dA25F>Pe-D5hn>ZRg7A1d5${0HeS* zvj>DYvq7-2KzESoe>S&K9+26^lm0AFRs7jE__zn6XPea^&&!zvl#bD#+2~H51(H zL<>02fR4J9$MVMwdcRtn1jguEb^#ff-XlfB#EK@1WBLrvL` z+I7h;2zS8PO&Z{36aY-s0(Y3dqWZt6fa>+m<_%jm$eT)H`L$O<-);uP&X=^K3-pqA zM8P0H}zb2YTvk>q-EDGu8>;L{2mSbD`*{b*ZyJTH)ryc27Y zrl*>t{06&=R@Pe;K}I%(uHCZ95mU91HCvhmPi#SH--fdG{{sUHsL&Uj+#B0{E@+my zm)k`zW?1Ep7I+dG+#^<4`7pIIqd|$wPU4E!BCi&$5rSL=!!X0`oYLJ7fmPn$cfG`fg#VjiJ??Snz>0Jr zhVDWg5#C8O@p6*uXEuC0N-znoEjq>sL9&n12YoJ#(^wAsv`ql6uAU^tqL&iPw zsSe*iJz{e8c4(d^hBZdo4tu!#VxJ%q_DxZI;sYo7xySuelfujLZs6kc1};zAS}E`o ziKH<;&w#2<@PqvIPxx}tFQIR~{j4?3dx^ty-Yn>FPE{!LEbl`Ubo-8DJwIu(W%U9K zBfy{<*?@c^h7gO?LbI0Y1`|nCqj=#S%E_myCGkvwXb%&`E2;svKx- z9Wcwc+|w369uq-59(#O zgjy&9adY!EeF~t6*j#Bs>$QO$aP#e)>?Jg_iA6-Do4M z=$p7~_S`H?$Gj0GGs#1uc8S9MRBM1j$y7td7*#1`{#z}4b3k4E&YLEpCoPR)n zB$%wk@V#vSm3v5tH=cs#s+}Wx+(gC^t$BE zuHupz%hF1uJh;?w?3ba(3{vSj+>pw~jK?=O17Mwt7(KC0rG#N}HYcvg)182WV$n8L zB1e<>(`(7ALO`jauAIGPN@|Z=tO+Z%)iK%-PV0fJ_T`G6`$3bHg`vj!MqMueYDk-diHYVZfYJh|`ur}XSYCB~6QVuBo8$p1OBnk?f!s2p#PE$%MXfAvG+b@01-jr`{zwN;gYYCx_t;mJvA}U zNn-M~)^u$LvQk6z2Bx+L8>&Q`M^m3uAmHWloVFp@N1{qopLfSj9fEK2zKSGRjWyG% zP?cKKCs>kKVT}L{D>iR?$FtqQLYFL~SAXe=u)4ME;dg40+b4I$NXbl8sWVEeVe`__ zPGR1B9+D*i0KC6u8yJeXi9Od3i$^b;PySGA3WO(iuVgp->Tia*Gj3-G{x=E{N})vX zcg7gm=la158>Ht&Xxr1N6%JMeU{@8s9vfZ6_Mh3BX?5^gh5u!wrN3@J_crnT^ zZ1()+g=~XynXkhQ{wr4fmNYvl^of~ZDs%taBMb`(Ulc+#a-cT0;V#Z?FL!wj`dg@7ccQxop(J^=mqBG!)Fbt z4&vjp)&b6{YP#=3;$H%uE?;Wjsl2}wISzy<#Tm{fzr8yk%wvq}jeAz;>)^ywqjoaD z`MN&Q-5l0%Ud`~)#>QDdY8fJv;?6os!?{QSsxmoX1*Ug1-2(bH~(SlYiU2G>ou%lF&AG0=|Jc@m= zoRF7;7_4LzdvuqUQC4c_#?e;j5G!1Bwp{|1vW=Tp8t~#eQweRaUAO7~B2~iJ_xN3V zICDEaKNKK8HI6@El?pnM+rDZMVdoRbJM#nO+|#4a^JsPanJ3$UgsKb0uFiqfRsGxZ zF8Gw?^_NcTLo1I>7`oa!T}-d31qlA=Ly{pyd1N&1QY&j@Rbk?4qA_@cR{jHv-80MF zEGspDm3H@Y4TBpVD3_1 zP(vD8Nl!pwf%WG#(g|Ib&`@tgrZ;0AwqRU!c5>e$=`y>8H@rmQEi6y0`c$8ie?O>P9MxHQQ%af8eW>1H;i|APk*-x=wz$G1V5v61(FPbjy7b3_YtSz1GbHVEppWJZZp68qY+AGg3gzFN58{{h=1yp=Yu=qCz ztYwgEd>0!D{wp-ig8+pp-XXd`=xXw5;h=7)ii zozZM|sD_mV>=A^NR>#u%3MFV)i!9HH?f;R^bAX-a>Hr8`v1zBlD5=lm^_LPN7G`)rC-h0E%_=W|1+FoFp% za}j|FBAbuEGBP`+NjTgX$J*CQbTkqk!C2_i$k01V;hBk~QB)2}=yy^x5+_bbfD1S8 znSY#}V5}3rpNa{ji)q}}OYnr_=tPrGhRr8+fM?LCmDnmD?4b8fn-$4CH0}HsNham4 z26z1>78$ZiA8!H-@G!)roo+bCIAOfUDk6}D^*yBgO?@`TO-biAkyTsp40ZDPLxOuP z9jm32^|V)b9!Fa2ttl-L*?fiGKohN!T3roJ#njUgqc-fPOb`GcuGY*F>|If9Sq5Ws zC889*zq|tTRzR}p@01{yZdQB;KU_w)|A2*l7pBZdD|w2sxriFX3`1&13h|7d1W~qP z3Q?8b-4Jqab>C5zfv{oJuXGlC-vSb!BleNaq zQ);IQ!7%H?12FY#DtY|TzAV+yKJr?~Km8$);7^nU+7=)p~#WhnF3JwSbA{ECW;wvhmH zQB4`JSPJ|gj){%E_)wsF_xAp8nFtE+LSs`fbKHeoiEr4Hw=6oP@lEXo3>$I$-#|fz zbV1&&F@&>(AhL~hO#}HaGy?6v4}6x4mb--^e48x^uP^?}x&Yi`a zUzPv#4B9MZoYZzxFj}%!b+TDz^A|>6(I6WGIEK1iQcem_yayy`#Y$ zjJOCUDm6&^y*85cc(jwM$|}CgH@r8!?X%tMk}EqS4Un_5NWjaPHhVfWY0VaYYF(d+ znbFKHxrX@CM3tE{0&)rct(3etXju)X@OO~P9#wzS-Z`nySwX$UhCtu7(arZA#GWT2 z5QXtJ%krH`%+#yhAYM#H-vY)dOIN&&MQlvgr>|60cciiwzvSt-=vY>yFvD#~Yu#*S z)&kLADO$Qnu$dCsLTGpwgeYoxhyG8f6tGZP$Z1D8%*71XKe@b`09Ai|=%~ni8<1XP;oqy;$5#)vR^Rl^yDP$9mA4dP@BDg5v zeWvcoPU@%mh755`&Mqm=%iS!2ED!D*@#Tmb-@M0Xn}Kf<*;W=a%qpHeWo+P3eE2b2 zKoE}N;)ufrxW{B`FQ!10e@9l2h>gMAGJzTA5TyGn6 z`Iz~7eO|S;)^6RWhH8%F{Ky$823Ja(mG1{`ZEdM~bBirTlQ@8mHTPIMnej6UF^mdn zS`z26G0rY67HMR&okHrGwk}c@ecS^LmF2PE+rNq5;=Sb~c%}$gGRkif)_J3sc6tS0cH#lu%;={7t7+YGL;AHC1 z19xZ;vmzlYu^{6p6Ct;I<^^2Jvfp;jHIUzJyh0=Kxghs&DIF~Fi3GJ=2?G!xRBoK2 zK3z9;p<`u!OZ(d5*^8+Ng_ZkJNr?}NqSF+fi_&^EeXz~S=WcP#HU+l)QuyyCY#K!k zkrX(WrD~S)xg-YR?Pk%oI(&dAIr?%Vqw3QUr-DOi2n!LKk)2BuZCiR@tma?qKL+7) zo6x^n_^nU=%3G%y5%bp?nW>=1O_`pr_voNu3ciVjEU2XI<>~S-u4E;@F{H$MS!m4p zxbL}C^>~W6gxbwzRwU+M&wCG8Lk$37DRWL<*;`d@vVgXAa42ZP9uYPjV8&^erOcMR zungu?tPcAH%tW|$%WI>P>kCmU-uY9^MDTm%V!BJgkfUlsh~y34K+<^N=iq%ZcB}1k z+R>K#<3IF{!ctMS0G~bnfSmciY)vv>mtO3+?IGdg)-rnbzPAE6#GpTu5QlYw()APg zBe-iJcX%3fTor+&a)J140nQLOYxd&2 z!f(yglbGO&*z7Z4BR7t*{!Zd5w@x~UUCDkU=zt2m0a;wjW#YHji_X7J83c@`6w3I0 zm+Aa^p{B}_R%=;OiPD#1h#Otm4P_DfuFjHxO$v99IN8!`S=iq;p`ZNV__^tgc@!L zZ)y$41MY+9369Q6&P?IVBurB<=T*5c!#;61iDktgHvs<((;#bmKZWJx@%}o}U_kxk zY?5nscTzdd!8K_ha-~SPre(w2w&Wgd6yknGnf zIA@0+413#9HtJZK4lhrrz2KkONkblChj-rAr8Nv5*E(DxQF&tn; z_rxhdUXh#iH7er@u?)Zdlrs*|y2%mHam+no>M{y%Cur1}`XnTk642fL*9E)WPjWBk zJ9*?wM%k^)eI2ssDPH&F@1eY;p;WmFwhr0{-;`2uBO33&0z(Ptg|;&^dxs%{aDKKI zsg* zE})$@ch8_7|4>2Zxa8#r;-US_L{VMmeH;<`pbsSpW*eKwG*Kz4w1PWsc+oC6r^V4~ z{76U?hVm2?v~I}yHjH4&JdRFhW>}-$Q*!8!ztmM6UBGL@Sm=?Z^Q=yTm(~wecW>O( zl&k_THQdJ#h1pn!MtUDd;+ud9!5|1M>!n%Iy=lvMZC{?yJXPu@+}kT*b0ijBS)xj6 zjaL!MohDufG>p2*`hfIMSBH1;Q@WH;R3{IvjU#iw?s zH_lGdf0+WV%?h_2_AADN(j924>f(^KB1%B219HkECNM5OxcrRG^w`coWV4Q^-DAk9 z?iN~@7ua~x-$1ZvMZW}76HSV5HSX7R4c-tNC4&Tbeq^T4RPv+NqaWa0?YkJIg?bt( z?kl9vj4q@&_U5`a#jcX9E&kD#PQCDgTOPu@0n&VbE%JA>gMmsp#+Y&Em;txWX?<+M zO~mW)A?jpQ6|y-n5zu>QJT8g4o6P?hd?x4)C%qVzt2QQvyXyRJ)$v;i_YETyanU`b z?rSxTyqPCmD}oga_N!>a!IuVCnD;`#wFKYFwoIcw{N$XCP<($ZQcX{)H8GMHUmoq7S2nWJ^V?Z_g)> zD%;QY=OogJYlJ?NGl`?xmBTEg;V-Skd(2y$SG)@=;Y1SgEZ&)N5{05vm={jZkRChv zHWa`Psa|;m#g@q8re$WC>FKQkGrY#<012`-3d-T@&f;!7G4YS_V%paZ@9J3GSPk8L z4TbHr679T~uj@U(|Dd{;D*E|x1`80y^w?e?tnGsvQ}bmMs&pQe{n-}9)o66?I8cl>WMp1p``0Ws}t{0BGt zS&&zt_2iH`{Ue`x%L=Gzw%aVad9WUMWv-G8H-Ev|8uGbBS$x%*T${Ce95@O86%&*L zBv{4w7zfp=!jL|I%S@CwsnSH^2}iC9Gsv60ka6a#k6&%T$TW{Q(YF{IU!gMLj%$-S|7g#Y7aSNtc~J1zX4+1kpO z8xSSBX{!vCyoiw8!$}Q;QExQ>ZYn4jP2RDl(xePjlK=^rG9}NOrkH}uJ%B!{FhJKQ zrtd&^@?z-E+17rlVTj*V-L%{y#zBaJ99}v@aMXGtT(}mqd{s6YWD9g9 zHzj*ueU#R>h2c;VUySD%l3S@n(BAe^8<1q%;gGls8d$KnBuoQw{4=bt#uEe`B_ts} zsHPHouy1Hzf`gRlE9(T+91-xB&2d9{ca!-FLxGt$-L*_QrJ(En-QBeS1(3pQZ0iF6 zz4&WzVMo%^NADRxzLgEz$3{`mO*#PsW5#?t zy?JVM{iCC_sG+pF|8Sq4{lQ>68EEaPSw#T??e3oDr-DvzZhY`T-sHs?2!A7U>HLvyKZqOTkt|C}uetl;MVl0(hu zZ*9&8rhUG&!zh)qq8MyQDK?*EO8r|3qA4}3cX}C-rv9t0sj>E{<{fr%%%modA9719 z*rBPO8AvCoGXR=T<#-U77Pmc4&6O#wO-{GA7ga3b|H&-QlI2QHkqVLd};f1_m}np5M~MA)K(FH2c# z2}$2Zq`0{o=_Jr)S+X`Mvy72yH{u#UYt|RK&)I>E{qs8>J=;)iuqF54Lw~np#pArf z0BRk-uOc6D6N^Y7)~R6Mm2c-q0<$VH_0hsX&6cX5wM26!>d&)541%`}7Zk&qEPo?- zCKG!$K6So%Y8I$~G`=#E_;4h8gKh-As?fWIVet~=kS@J7tL{LZcb}%9hkBe$J0TEN zxC%ja0x*~G<+T?jw)F`#oy2k1y9Gvg+Ox(%+TlQ=?dAVUlLz0$V7+n%f%TUVKT9qe zQQgiJVzD)19}lb(VzY1L-}x%OU=4m6Wr~*~W%m}IN0G+p5645`Uf~bd&lPS@a+-eVgv|oYRs(#V z6KKDE!BkPemu4$;E8l3qCLqeRUm|mb%c|Ec@~Tc5$^=)=Yp*yY*&AwuvZVaF-bsQ! zo`g>pX}``MTH}g4$k|c91!Q*(;86a#4`Pv^I5G|QMQ zsNJ*ND^>cOO4BYjcOliexyn30r{Sgc^5rHiECm8HuZ4DgSyEpLLNlp>=8UQvGTc0p7HmewE+{e?A4kThlj4EAAvzoLL=F@8lEy& zA5yiEZI4_RraHgsl?OpIct*GsIi}&l@+Solg6JTDr_bIvy{(``#hVjv$MV8l&XGco_Fl$`@LQSYX_H==a9{f)=33uMO}o zmz|}jp^^%a*PVQ7S~UPml7>;8Ex!)V3&N51JWY6+*&+P?7aOT&HF;!lAO43ojiWI= zS?y6HiwFja2(yMzuIbN?ff+$cb)2L@m;<4ZsQEE1BX8?}S!0trS@H?hewvXwvA?C9 z8*vnfWOu4h#Y)t%Y*G}V_S?0%Fi`r6lfEUkr%irX2riVl{fHs`eUC`302nhKQ`_NB zWT)3oco4vRHLQr7K{rVWk$5)`eNJ{m@@LI}aU^oY|A(j)Dy1zuyydY7PQX7Z zbN9#O1c(3cQPSAQ2b&v6kwGgmy)?2hR7kiUY&LnZysc-5cTPD7qT=9!N|>s*YF5-V zj_MQr=~s>KleK7i98ji*wt2S1oZUaH#{8eeOgAl0qs{K>v3#W5>Mp4Rru%9X@gi3nFo?da97o2BS1{c)cvG@li|CVQT z)q1|6-s4SlsmB0lZgo#8C_bX1lN3WWJMx{5K=_`dP6=iZIq&5L2T+@(mX>$)?hTM3 z=8LC8=zqe(B}_1Sr=!^|lS8>5QD_s?LX@t+fBrd)mtAZd_-EjCym8aH}_1}&9m1ELgaF=g5T4!__o%0HFd!*yU z#Ei2=sQESZZg%1>Qxft2RC?<;aFbcFO{c0;r+#@^(UdaNw?hbOT0m}P&7zEG>N+eL zAZ$FG^jJyXy}SGanF!InMg~m7Zm)Nd6t$>XqLFi#cZ7M%ZLzl70DkV=EvrBHVBMA5 zOX4wB=dq_!z{(*0DYgO7Tw8-iv|#GXzFwj!;R9tCZ2;4 z3x^3(+&pEq=L*FL%_IB$T6QQ5yiJG=P;37o%GI7*=`Rz-X%FHgqMy1NR5|Grv|Kz+ zs%AybkPrHVs0G8`;dxx*N?|*%C1n3U52)9YlE0CBhwi@U)P8E%?!F??FhN58sU>3` zN1CNgOHJ6$x>Me<0e(=Y_8Oi@l-nf%_$)#`(Tivvf;6xwNkxT1@0f}~oP$%0mxg#j za7E8zsqrDj;elY#EJ$HoD(&4xO57XuS&}vkt#7YdXF4|a!lKwz)ySewkR_lcp0c)5 zt^=sRki^m>bW_NcfgkcF4@M{#qJOl>7O+9ByzwcS@l||qgf7iZ0kopmlsb3Dn8P|Q zsz*&%XzbZb#4{E9xVD6RX_yj?(-AHQ8xySm57$5_zgf&*X@#nf?YHs_#8V;v3OUDG zdXEmWFdeKoiTQY62TxrnQ)KnQTk>p`&Q~<)cCzYDR|jRVjbEL!cKMER6d*Z)duE4Y z&J-PjObPbBO0Ok#PK2Cp_pN2Ca3{Hzm3O3q;48C%63qObG~&U`cVDUnG-&^up#)L# z^w&EW-A}U{PAD9qS0s{t^Y3#H`nDFqhWnr6!z17RcYJ=f_5a>Tk%#NOTyO9^wA`Rr zZ!4<9rC`JI>4w=k&w9WAUSo4nTWX+o6jNO!x{E>aC?hw+I1gZoKNL+X{(ja2Kx;YA zq;HG(1DL#j+QCIBRXqT#cCvC18xw`1r<`DFRn69;>Y#nr=2WQ8LXc51!!e=`HCOJ$ zYF&X|Sdg!*rGQvUh5__TeX2~q|A?X(r5wX#X$%Tb3*#^-y?I>@5eaW`Y>EU&D?#QS z%^PrW@YvhHQ;`NK&qE#V%YyG~MXrd~ zVj6xf;Qpcwk|dSy)P>x)2kxdEj0o3K;FI47PCRuJ?*ZF{?5d(3kwlxq7u0&GeV$ORuoxtGhd!>-z@a; zti5Nkz8ZoDV?T{00t)7yA|MJ&O+sAKq1WHp5~`x})TQT{5Bs)Dpt^z8gSIDGUU=C} zO;);cayPq{lOnGo?VMd-U9p*+n2>4Q*W)ss@7nGj#VeEYtmt_O9)&1@thDi)18SJL z^l`9m(=CNoKY`ERyh!Cz9C4x7RXtV->&9Id%H0Hw&{a?mJ>3>7aBj|RIlWf?V`Aq{ z6V%=0=aeS@?~?=n{paD)Hva2oif#Y9(aXJBlb_i{k7ngF2rOXO3*x?hTV9TFS$+4H zDy+5}01YODU=r*pLvJ5aMBkwyq9~0JyGoVOpdlUh9U+O!8md9L7NO>`{ag*o7=%>L zX9UwWJbG)c(506C&qy+zpqmtCY)tsV7eEd4|LFL{r~fBMM_c;8kz&*T_rc{}EjLhG zis?Qc{RSvQlwrmNL0N!3v>42zUi_#91!hIpb@NlUVl33Xg0oQPE1U!m;3{vyx?-}v zYp{heS<5}x;@DJPgl+kI%TmYx3pM%aukc~<1W*n9|KR-KwDkV#WNZK5Na)EBR#mH>prNbNV1noW0o{!WxqtdAjOF8DlDHMD@`SSnK>GAgc=SE8H`PchkP_YdhB2ZCBl7*^o&G(2EEuXoBqYAzRzYl)@ z9q=pxgQAzMJ;0Ru^B*M`rCd42uP^@l@$rGr|BsHh{C^{*)%mx#fy?==4@v;Ae`r45 zcJ*iW{g=J(BKUlo#tBlV*8KI%9P5h8d6$2He@qES zL0u1o^1KH^d8mi2QFjfcp8nHmf|f}9t4kC8Kl1(m56{lG`F}T4TG4;G4P0BM_(f53 z`LAYDFY9@7oA^!Xd=iKj*IetI7a(BY zAt23su5SVx6Uyz!!hy?-9f``bZCp0@LEWqS4sM|JKY`U@xmu+G=~Ja4ny@_bG&;!c zc$6hPu6i?M`=M6A@kifb0-PZ>%tm4Jl#APKaHY*JpAhsVxNn8@%5>-lk*m{Tv^D&~}=P6Bo0fd5|HKdy5Q?f!_ z(6Bqg$IGmx?Tc?EcXS5jgXa04FhR*Re$_ z2#$|@fN6F>e|>U5y8&3Xr0)0^jUNmB!b;U0`@HQ2k>8O&;;h{7EUEuvJ@`2@d6Vm!{jQOB42a=>_XhUFr4p{lJ4e@RqsNa3T}r}esgb~mM(%G7=(v?zO=zT(9{Pfp|lJqxncax!LZSQ}Mj}A-k ze~-5D-#1fq%ZUCQYD=n(e?JOYj_0j?>W#1mgs!C>H|WW-7NPi1imS zyG)A>LqhYGa+Q7~cS2#s90)#*SiUB)lrCfgn9c!3kP#1$6ej~Mh5VDGdQHt=IviE2xc`uOk({JDY=dRVc<@;ZpN&`9=?kw0g zZ~%Y*-H!p|*050Qt5ez+kgCq12QFOAf_W&1RCD?~fYntkpvMwu)tU1lhU;12&JGR~ zmU7J%0J8!9{ImBPxx3A2Ishy~Q6WmTAn?l&_dkFZy-rpb$6#9)D-H5r4AF$74Dn?o zz$W|8@!`2I|D7Ff-~Vl-NI~y~T;&_YS0@2F8)w5ZAVo9GFiGn~B9g>XYQqt{LEMsr zWH@UfxdBR&l!`^L<&5c=l&MPY%WEez#X z_aU4;Ox>{S)c$5kNK(WiG!zuoYtx^=4?m=E25|!K5&^$mo0};eq5kf!wg=kZpSjmN zol!6kEZv{WOJM^UxRpWW%}Y15)F>^4*un{StnAJ^)3Eq4^rksFO zf(tidgr0f<;LtT}grbm}>TWRa0?Id@h@pS3x>s0%`NZn_plm!TcAVgIdEHgYNNg(| zZKb1COGgd-f9boQe`)6bCr9UJzW>L`;mMZ&Z=y&pztX#($GP_rESL<3K`u@arx-DC zhlYeAFoE=5-A-U8uP2nj*S$(OQ+Gd;EI}%Kk7nr%QxpfUR+4#fxgvSFx&2^cGEHJ| zhX9?XlEVisb23O_lAr{$iRx+sKj6u966i7nTtJ3gUZjlh45jjxB+w0vIG&-Bd08wN z9%7y5Kc1?mVD`NZMF|v51tgiFi9^b7@dN=rhCD}S0_V~{RCZ$~T-Kj6jwV1Ygn)tQ z1gC;3V*WqC3?@?qCQ~N8YBR#HY_EMx2jFTbvmU7{p}pc>iGdW&5G|m^Af755mFJ4Q zKH`ZU=*5sD`mJ81XW;hsRpDYc*HmN(pgbpXxMRqQ#YP`cG?nx9L_es$ zRQm=2LczCkbM4A8$Q?JtD2WB?4Dr1xIqLk#Ahh>`-z9g4^Vm4>UK06dwX7(%})xs0(ZCGBKPV37W#d{ZlfQ0XI7*AfaKU#A8sk*>) zw@B&s(%CVV9#w3Ez6+;(A!zTa0z!&qC{u^Gh=%r9|NOI8Ng%yWs%VvUGkSF3J8{~X z0z=G4MtKf%rLec**4($s(jfn5BwjlFXOsMYesWrh|9N(}wf}9TNMT>_rIpG58Hoe3 ze~r+;n9MJ$>cpHfb*+*OrVPc(ye8AoiniAz?!+$T0NQiGYEJs+pFJIbcui0U0q+c?C9$Ha?y_17*cdiiO|yDIDyg|4q>R>qDUxZLZ6~nIK5{rFeo=# z_{<@xu3PSN4F}Gyzy8x^{Qu~phkMudF{C+FseG!^2C0l~NkIuKd?8(t! z%=RyxnJ>xO)L{Q%9C9?ACQEsMH@*KmI4Svm9iDIB|81m5W6zCV<&}DXdt2vA^Z>J_ zU=uE2r5XQte8snpV5@WlQzn62m9*Q-fEpi%L;e1mea13KIhILDK5M73Vwgn=KK)Ar zGI_nNSN*nBlzREENc@wBf_UFOB~+9D|KX|s{_ptgXzTyCk>bREDAsnBQ6S!1*`u@! zxCVjG_p%U;J=Y4|T(t}O_t|a~rP?JIJ==}KtKB`^!23mVY=zAM<@fN8{8Ikx$#dcM zma9xTRIQA4(Jx-x_jN>!{;n?&xY1C{UFFd0(m+RPfwc&OYR5P&dM@Kt8B93v zXCMt$9^$};B1aS&NlMav8Cn$lY#RR35AbODr*(d{8Hxd@+#^$lW3&et0S^dhTCO}N zrNgDrW{5iJT^{~-JV^?hsWnz{=bRhz5ida1Q6IW z>y!a}>xHjjd7W_{@G>QZ_^jjm%3lp@N3z2 z-iHOYo?jPR%!y*I;dErwcBeTm9XWJ63&xK4^h4&)ak+t?R=_lT;^d2(z^rdRmEv5t znJ}m0B0ZEiQJAEV&P&r~f^C;Nt(m1Q$NpkU2mYTwFzzYk2vF>@tqjmk1_;mCRtVUZRh9Pqe=*ztzqH{0N5=;q z|35lE-oF3YNXg&-ubA;~?fxxZ<*wA`?+n>9_&eW9*8WnM;V6g0CkmOj%BnmZOkv6 zkK9f$JkLtXy~pL5$K`crE)FfyB-;yXKskRhrQgfn1;`G7)1lel^!Nd4Pj0arj| zgWrSzz2o%#8r~xyyH_Hh=tGDvLfZN1;`J+lC?%9Ncc*8^yx8a)Wx|uQWQ0SNV*EAC zp0M5aQyIxt(hOBSm%0ZNzbZ-~W1V_&TDIs(g~#jE1=9ig8ev~e;0S^1X_Dw}x(%fi z5wOKz1!356pSt+HDes$tv1a{a#Bf@iZf>#btr+@vsLW76#?>aaSx zY3IJWPng?b+j+z3h@y@?={7B(e+M~wfOBwheFff;Derb%sA$oqo9_w5{}kLTk->W} zrkt<{CWv+$*EoYMI@2*l<@3mSC-|w|vJI;t@e9o8RAv}|K8;5mxj~?Pi(Vhl-I$R3 zZuCaAX>(2~nIJw!QwClmPI1(2i6*K|i;gZ4<@>K;3P<`6Jj9WZ>AOh=MZ@MkpWYx2 zGD5{Z%tea5-1dq8<63@W(yViFef`6`S6voUv~4l)_b5S>fcFkLc|{^=C~i+pBovRR zBpOP4ES|&Yewy7VTD~X}cM^zZ2;FhG(T|3^c55CR2YcEo-JfHr)c{uh=}t(hzr`lGRaR?w%0)UH>O zj>u|yRghZs8YMWoACoCVE9kfY)~att61sw31(>S--k}j@98vH#6MYierI-9n5Z!n{ zH8`)A_lV-*T!5zPvN8syiLwl46fq(CEYRgl!j|y^oj%otCWuIk_En-W0ONRH9DEB6 z_cGMT(J+ol$_ApXYMOfk*xmv`1Z7jJWj_?Z+Qaev^_yng1RIDklW6pPOlMiDJO%b! zA~?&^HkhS|voRsO^VFG!T_?`8t3~cY@r)R9cn28*4-j+P*35~D?AdBJ#VBI~0ih3e z!20FxO8HOnvyI&U93CAXZ|{E|sWeG-TC8al>x_uyn#o^b*6x~DH_s4df?%f+>e@6$ zDoskaR?K8q>DEl!1G_f63)u#`0+|KP97{r3sZE@Z*2~6^+byt>sDg?>>IFSWIp+W`|br54!%v{zjampM#=KREJ}4=L(z4(i5`X= ze?NjrB4qLY<(up8`r!umXx;~XIg9$OM&UhtDMNMu2qKcrU8iC1ZP8@P_zQ%xOHpwr zpBb=jKjGv?fyocYC?R(+84RIHT3|B7 z7tMXo>K%7O9sI{*crS-34#m_^3;8WU;0R`uFnRLO$Oz>VAssWgQ4TaxgQCVNa!o^cwy~XvszV>DS=)?Tfe10F3xl zW?LVt4P^{}Ild}400VOFOIV@ed4%I9USRl*i({pqd8OyMbMO>4F(}|0xSRm%!1)Iu zd@6G&eeh(*J`(06?3NJGM%sMesl8RS#Vp6s$6fBgVgF7H?a;v?9z)W99p7Dx3eUa) zeK!MCKmatZxlPjFl!=+~MfTD=eABm78DsQ8Nj;!%ZovA2Mc;CEaY5( zQY7h!y46ym?*n8)ro2R$LA9H*LMSjAi5RmU zs!&`~^iWhQo#bMT+>l4QzNHCKn8p`LHimDe6L5A^bsQ~BrEi;oWH8Hr7-E!^1;PrU z)a)2%S_0Jk#dC4oVw7?W6Q)nZ9(ce>0${?3ezE`}ieh=Mqz=3Ms~drj?_@LGlcscG z;XxU4ll&2X8Yo?> zv+)qj=ga4Xt|9t~XNfk=N_vB5lJ<p%YMOluBd)E(Ky>3}<4GP2dM*i%(EG;$yMh zj!us|NI4cY2xzh8Ylyz;s4u!H#Y3s?Cg+k}RpmC&#iT1!Yir=ajaXg|=ia9AD0jWe z>3$#M&>6vTq%tc-+(P46Kp8Ih$wHcNjWqjth_lu5U+L-Q!g64P{C9M8bmYbVIygPq z#{bwzQTB<_Bj1$?f`JFXodm)_`?5TTCCZi%C*MN8^qaQuMioT2yz!f;uk3%$y%ddPprCL9WCQdUAVBm>cIH3-?CtOG+x?j!%gTYOulsho7Tu|zcbtdL zHtd9lu>d(}djD})ivNFj zezx`h-AEBaLeKI4HAaJaC*Y=l_)dfoLph#)4Zbsv35DPi7rik6S@12FYqA|@(55&Q zd(;*5hq76~i$jW4;|%KHTF<^w@O^Ux(?XlMN))KPogqqbjD%1nzKM3O%;u86yqAH~ zx@6NUguDW;zTL$4VXZXhS)f4wtz1e4FPGNj(iHu)vq~vpP&EzS`E9TKKB-bo|GlSN zONfC@_kU-Hr@sB?@O&HpeIrFVfRtk6N&C+V%s-{Dd7X?urPk}e6U38I(V=5qadCO1 z+d&7tE;odwC9b_G^e6uD?+cxQH{BVwx(xeRuD;BP`?T)8eD3h^-F}sKeA&TI@3r>B zR0cHF?J};FI%AL&E89PAh!x=2N)!cr)1nN!z)6{=x9mgvtp-VN(*>ez1TxWQ*g5di zy+|~1WVZ`6W|8<@BHxW#JB&Qo^9p7jT9aKOD^@wF8%UwsokVK(`xln zp8X&~z9l7TG6#owauW1G1^{anpv9bv%Ctsdxl&KDEm7*9)+0&Q$dIaEzkY?>s29br zt>r}hH6S16Z$EM&QD#=^?}8@=gMqR4)MvmmyVJ4{o2mQxt2~pg?q&dP#b#9x)iDDx zVtAA)Px=Q!@72o7#{&k4Y1#K(r2@|UONqXw!)}7FYE%{>u2RemBMX_HK6yX7img|> z`8xT~NzaGO#1^y#866fz0xEz|#7HtjQkam5lFH8!9G|>`dNn)W*$2i)dsk;cvR^p( z*^q$sn8V&{m`MYqA#^&tA?8etmlKd9*)W<<*2C~)Qk#}kY0Qpqucm2A8|ZE!y(K91 zSCF+&R@To2k%ebUrB%B`lwUD6MbytbXdQd|RO6JR5ryHL@_{F-c6}MR+eH6vQz`hY zHHf^G7S68K;+em70pdXPL75BX_`@F9;R!Rm&>ja*SO8TqgSvqox;)TNJ~&Y=5b%U2 zZ2zk`5X$3;zzh5VaLT<0(+fbkGrGCBsZuO7`$CvIf1ICS}>XcEa+eROWIiA?};B zwjBG*E!F&AJN#eE++9ma0Zsm&$45T@KR-V^*z*5Pl#>6av+S$!0rj%LRSN@7#dZRL zi>@UWxF3Asz}?&xB7#%N5){gyySj_I1Fdr$4dBq)g*1f!y5s|=uYR!aE)J&Nmf5GmuSpCF#DSi_I_J;Oe6P>}G_=_|-H2!L-RBoHrsXoVT%u0b z;MJPW9%12y;x;qMbXzQsoh)|{cYeiDWMl|M&X2r6 z*#M=S&dZad#$V+t($6U2BqB*aAK3tA*|q*vxrDgiz9-CuK&V$k%pmAzkdM9JAs^c< zr_}5A2b%nd`B=2SNMomZa0*DuIGsj3{LCvTtLNe-kJQX4q0<*Ni^bN@(@o5xkZ+zX zpV+_0_Az_mJ)>!mE*B3}xG~?u#*SJCE6k_43;6cVJNY7($XGBXMSHofg@;W0h=ATC zxJcpuP`fCQxnpO_&>Iq?tLu>8pF?-OQw;h$DT&dqIO~Vp@(Q>OE_p6G_&=^2NRIq$ z%k%xbtG?CkXF;Z{36bV}?Gl{}0mVmm;%eB{z!=x_wtc%3kL7+;4pTMqKgEP%K9|`& z*LnYUe0FwJzW+Pk%Kw`visk9026C-e_4eOvAW3(-Y6EWD4On~a4jsF%eGJz0R!ft$ zYPG;du9NZCS=f53uRYF{+IyXu?PlqlF zO~kdQaI;T!@~611m&L(;smDwMHAr7S)0oq6{;RQa9MO{qrLUWd#PEM6#k;y*y^sTctE+&09BF ztY}!4#OgxHJaHcJ%`;?WWoyn#UG#c8&mJvulgdYzEOz5;jbSCMYmIl%_MR(EhP;lE zhgK2{Je1GK%_fAY`2V?zKSYM0FORjq#l%;sUOh=LLj8Xvcfo_aD)U+8>EFA5n5%(+*Y;lt#3){gf39^ zewcB{aTNGTWoeafRw};rW6Tus^xsw1A*p8PQcFoL?BbJ6AiT%89XgwlWI91j>G_@c z@iNgm<7JaO-zMvevp27wgUg$%F0VH2J;NqPx=#ZCWPq4ki8$RXU|L@m0qophP8p)*A?rPCK03Kb%hk-s=HA1vspV4IaAPuoI4#vJ z?Wtmkb&_4xunz{oe*Blopw)Y>b`jhPRKkyz#dA$ zSVQAjGwW}%luJ+qlnOPt){dST7n=` z8Wnn2u8eav8&XvaD+xjNU%f=`9CcZ!@H%uNW6gxjMX#BrmGBD@-bzv&R;bjYe9R(- z18?z%fOwIsM8yG|^6?E~f*V(SeSuj-W{A#16sncV|1m55OQ`)z=ueAkPb<}()}%R^ z7}xjHJ492&k&r*1%Kfw-jjNJqI}o(y)x0OvE|pLha5eoKBWcrk+B1^n^dKAlHVV|| zQmXI&=p9_q1z?l^*YTl$|95t9xb^?qNKx^ho?l$9%IiyPn~oQNs>$koyp(5~jC)&1 zV_-;VerX|kW`lNdzvX%87W7**u`ey<-}{g8Xjt^z<(5+Hh}!E(xn_@_7Dk}a=onTJ zhS`MJu%rqTCiye?F_Goffi~3SZjr>QZ z9IZqEY>fYPPJq%mGg zRnMnvB=X*UYl34;_&Aeke}bi&{SY>`~A zY-1^2St++GD^j|GO>5??b1K&s`CHk_)3#RRbF5X)S*v8NpWeHzss*T?eDDQ7)cQ2@ z+p>=}t*w*Gw#g8(&BD4hB-EEW`A^2bUw{6OlcUo6ud~zBt^U7}qDhBJcetV}AiZ-s z3xK-SV_XE8&ED=R$kgt38)TA7I)bPA>5(K)*?Bk7Q>{_G?5XNJ{^gLyKl;)r|6fEA znWjtGft&2VM@Q#g{)dBuv$L)Izlq|=|9Y)gtOsbQi>U*7<44pA08~h{^%V0?&O%y( zS&FimD{Pbjd|G$yq1~p%u3xL`@i-dl4n{L1z!0OKtx9n%>`;QW0 z%toz~tfktui2CY0%U`9tfIX?*L@lf3XXrXmzcNj$@+JEbERuQQqi`iyQVMnULOT(( z?(lu=pb&-^0V>ZT{Dd zlmPLJ@+45J7XlYC2nHc+S{y8y2Ls3BqmTHUgh+qOE+R{Q45rPs36vYPEmq5a59n@8$o(eX{~VRy|D0^& zzip(*t^9h*A;;>L!KaJ8ONqcozb`kq@ z`&vQIO#TXmyV^QHOve#*uJaBe;6osQ9irp}*Bc)5> zXA^~w#NfFtPN|Xq3B6AUjF(pc8sz`egVPgV{y#t7%KsZFk}CeFmwHtXf6UhDD(mOX z9^<91W+*4eE#+(+$}ov9wwu_X45`Njsw!%Vz6D>~G|*8%n>425Um*l9IGDLJ=kD zvPf+;vu*j8I{hy~l!&((AM_%|~ut{DUtaw@3otv=pD3DJ7T9)R(0Qx*=B=jDa2hSy5rwVLl^ z#-@m>(S3Pp@1wjktlZn}5wL}X^#)A)yrLRA{BCKtANQ{&`Mpy9o1p|z^7Pj`7~M}Z z{p>LzkzCVmGGLSa|LDw%|8R74e!h+WyOARIa&V1T=K(Hv(jeGLS6A>_Q0o^JRmb{C z_ABBfcl5uhNqigu(#NHfKe(J@@LYlbCSZXXP_0NAoPt$a|HB)#(^Y_vqtD(xc_Fpy z`n6uW#}-s<_smnJs@RPoPr24Bm?wHi}{d}33$MKj8oIN zw0AN@AtzK3ju?FaJLZ7rpZcn8Nh2zd6C1}=9~3_qiOOrXOfJUd?YamB)<&q>0lTFw zUoAQ5{;i>X9CA0P=3Aed@BVUPd*vdxlBCSM&QdRleabIlzpT=z|1oi#rpYpSV4C#5!{bvw{>#z9;a30KL{aHZ^%}2Q z)AEYe>sRdZ8L$HY>fatM`k(H90p;z+OkJI}mXEK4hF0d&Ufe%3kKJPa=~fHe z7(D$tAL0uwTXUi_oC|>=M@T_pgS`5!*wdJSI~2hw6MT@cBJnY#2u#@&CUdDe45<)XI0342BtRMLIylv+ZrN8Ng|G&&fGr-{kpPCBgF^rG!>2tmrTi$R~kJFmG_8(Te=P~>_U>=VyT92&cYop4`N%H+s)VquPWkDS zlKwZ7Oz-KhIK@jPeXvS{{&#p#%KvqGcDB|3Hd0jlH$+GJZ81>m4@@F=wLkPXEyXZP zA-o+U(AU(VZ(c9kd?vwn6w>*kI;28pAaq&B-+U!ik+{Z2ixgKw4h(1uvk%yhrr2{Hwx&zQx-}|MY zX;yE$3%HAK%V$<9>Aw~=mht;ArHTHZmgE1N9&O|QY@|3@x&+yu8+lNMpU}Y{q<9^X zltY|?F-j%?QJROH(2M{xbz`2)K?GAUhFOME0EZk=Am|QGM~1sdg&d|i%~zo=a4h?w zC>26|L?}g3Vsnm*0y`<+-yx7eCNz9bK%bMJ;3VlU$!W~K?}I_kZJL-((Z;er!XzoE z`V)m580^{tE*_dmWuPx-RQx?dl#99g>EiV(F|fbgynWNR;T1$*MKwxuuFVNxWAb4B zlnRt!!V0z?cM;*pyatSsT(t+JeH0#G%2lilPGQ6?5F}0Jd*E)$bGHf1i&f9Z@~pp? z+k~z-7$MF;2B}yn$beK2gn)s$*ePPgN9co5-^8zS(>y>L>m8Q!I2kA;w<%ppsbnAM zc`+LlrW#whttN0THVOn3v1!7ET%vd5z-wq6IAr5z;D4t7GX-DG)PHY~nF4r6W=PNQ zz+RUSKmF(#Y8CxYFyqX;{_Oh;>vY*Q%Nav^s)AebUQG?%TC1&&@L87z`X8eij!;*E z@0BL{e|%K(|2{n3(*KQ=Ci-7&fbIlewXLT41#HKTp>G=P);e02`YCw-=5Pd6uLD1D z`dT+j$Pi_iag;_4&boCCmnQ!fFhlg6^|Dt)hA?ycas}}hvL#SU3Erm39Q>@H{Q~6D z35DEobY}z}kZO()=&f1)&!$PDu4uce0YSXhPXE1LyYT?O@zQ+2 z188_bc*(Y8_j4;v^gkU@#Mp8QK%@QV@W7YMw% zUAHrhw{ciMZCAZ@r0KfR^0Zt5%4xVW{af0-E#=Zc|1B+XaURfY|0(7FJ~}zu(*I4A zCi?GffbKlN0#MBdyk2~BP>KR@I@*ME`>yPx-0c@@9xAV78yivo+JdAFL~`YF0}&g` zOXn){ki2v5Z!JLUDNXdB&;^Y?R%xLBM@Pq={C{|UesHj*|C=a{^j~j)O2TjcZGC35 zs37%&;xCIu?C?o;V^{M6f;ep)y6Lo(=v8?^x_$IzRfjN^Nr~oMqUx36Uc~n9Ebvkt zmw1(||E9!x2o3Wc-H#W2yo-{`IA<|g{@)q^SR=5S{1WA$c-&|BM0XT8tx?6 zqDBy$FJ>_RB-A_xE7f(yiC}-B<{h`}mVs}+H1K~DC}JrYpwa&4^Z%oR(}V5%kByWj z{-1{gT1@*h&8t;Er-SCpp1gWjMb5=!?OL1_T&jx>S2SB%gDZkLY5mPxi!J@#mS*~| zWWlxG{~Vp1`u4wr**G5Vs{Vz5^E9!4V=Nr|otIE-&Z0wemH8zXh=pdf9LRlh* zstZ@ASX)GvTsLwfdKv_4S}b?)A|;b)D|9JgeS%mn;D7G(hI6fAu!I(o!nj zu+2)AHAFLUj=V67f|7#js$#O#$0qI2-r_YZ-d3iT*AENbDx@Bo8R)DXmgEq#o2r$> zswORT#dYqtkV0BP3i9dN3EHT>2(hSv|GVLVE)%$jFG!>R-+{0H9i1PYZ2A8tN)!LD z*Z|!%K^=Unnygp!)T|QDI_rWCE^Ai>0|V=(6ovpStsVw|8b#4vs;!>*IhRiKe?c{{ z(f)Vp=l|R0f8JE-M*lZL`aesuzZA(|Il14G`fX9A8~tA_06??+@6-R|ljCjv*Nv2p z^na-U0JFLP0M#9>g%xZp06OufiM6EWwVH*SB^DmnI55_2&;898_T74f4 z^#9=0&;NFKbiTd+-%R-nxQ3h~n#$l&Y6pOaF-pPR6eqEuqZy3u;Rvxo?=LFK7n^3v zv4@ROl7LY{?o{w5oR0PYMG541hCl}S*!mr&aqll6MI%LIo~Q`9C{`5t|Jog>cjF|L zEd@#-Llh)9MT6ep#m%oboKV#J3%FEa7~fysfEZKO8;mf2D*soZ-y7WhlRlOIYknAy zo{Il5f3jKnv;d?6p@1Py5bJ$CU=LaE>%kqo?|nVs6Y+0C@u>Ip|JVBqcn>KiQwFYH zykxyWM#*m|;=KWm5qzquQ}SDHFk=yk(bG?XGV1gH>gw|4o12&G>7)MqA0D0_9eL;f z@bq;1{$nHM`IO-lF$QkPlu8f%2&D{x!@*&%cMU0=AdV>O_0$JKpE;M0w_^lu=@iLG zYz$nh6R`&{|0@GTCJ#}8-u|khtWkV7<%BW~4#nU{Lhqkdfa_oCxU%1)WCG-my^A=; zf`GsT{J;?Sj>42b13!_e4D@Dl=_LmI1EKc-ry!#wo<^eK9)JuaBpn5BQ-S!3IlxR1 z7ZmYi4w#%8okjrK21B=tXO0HFiuz)Kh9pVIgWwDiWJsn; z+yn6xX-qH$Ddbb}qZm&GAoJ7%GVs@;UxCVB<&HrgvIIw13@D>yjPEc<@v{nG`{4OB zjT6ac)ZL=Mj!+O|mL+g*0{c0;qH0DkA3wqAE`TZFV?@mk;wX*99#DbkEqp7d)&yUK zSq3RexdsBr5Da026U?EE^9a-UDWMfmGD;>yR&#p=cXPnUn8qN3lw-sIPAfpnFiCWx zjG>B#spnzP>s^keg7yM(WF73IgVTfkgTwuU!@Pz*ucp%Rew4`YkI!#j7;wGbw=&4& zkkEH-zH|^?G7kR#CDia>y}>rlPMspu76-|N39L#()3U|K2qz z1Yio@W+?4x7-pit_v8W15Z#ka9onTLk)jz&xr%~$hrk5J2*4S{3A{^CZz|)NYS12f zk{U4%xjKRp*H`)Sm@#nlfy;C_6pzLnJc)L}(ZS(4cnv9rFP?)-LNh|uq+i_afr}&o z??hDw-XVtQ48?=qfB)D2s+gny{;&TnCIA9XVT>k_-ixgg20rNZ_E%YYy;>G@i|B-@ z1vVTAj1fh5b1)L5pMg1<%2iQQ!-<@yJw+o0xmAe{Vk9Xlo}r#N&`ijwF=mP(At{|I z%A1mO-#cnLlDV_&13?ONrYNbmYz|Wp;!t}kZ0Md4X(yP=1D)WBAZk6gw?VJ>ayUeh zJT8K~j}fp=X}*7lWJ>uMz%<1(L>Z)cs-z*NjDu`?m*6Ow_ws!R^6_d~00GNTBsd8W zAaV-f?{Kw$#n$ZQyY^v>qp>&=AR-gQRHydw2(A-Vdr|`IiMm`Yuj$n#HG6psdfiIG zF~>wG2^5Yf%*H(xkyU`gDdb`XuZE&KTDf|5P~%CK%nM>o(Lbh`Dzemzrc@B_WG?zd za#dvfTErrX@5(23PY!Z2mD5k7v7lhECq!&Sr5vE?Ns&d^%+;PuRs@GboM1@{P|C3& z>vFx}l#dC;|3q<*B8HL#QS~A3j-nxjI8}hB%rHE6%l3MLE<_{~>_ShA&~32Ts`3Cx zxdO#*JGBtS0g@b%^+NNyC-Ww=sg58`TzaOoM{~SkmL(Xm9z$X!IZEb|4Imhe>$juX z7S^ed=Whn-yw?r{MUuV5f{U6Z81#BSndyv3$}${H$&@8?BSkoa5l2(@lTVJtdIKwG|sBomU?ooCahH16r~}IORmh0FmH`z5HaV?rb99wl!jaK6i3FFiC(E z#Cm!~S(qLR9$|sX54fZna>`*k*Gxjjh@RWrj)H`Y2q43Pq^qoA#hGN_i4phJRLw1& z12zDIOh~j8F|nUCjfu4kmm|F^2Jsf$e*Y4@{Eyq0Z*IZ$%XhD@Zf{?{0MCB{7uVOX zt}ZX0zj_H?UHrHw>uJ6H1^DspyMG5)H{kl++xJ&5UcLZt-}Elt2r1{{23*|;4*&e( z=IUmko4kDozJK}d<@2Awi>sTQ? zy?t}D*L(RN*Y955+<>?5z}4&PS644z?18H{m#=L#Fz{V zrg?`F@*pJh(AQq?DwV_u$B0_z&ys$s$7<-Ng>|ni2TI$&tZIh2S0ESVNO5B1!+f@2 zlJu0yL{Wq@j5P9PeVh{+y5F28iwHmK^$rK%mT1XjF6OQ*8pxl%yM6`UYa)L%IFNiY zor45&L=E+qx|#Tpb6%CzfXT&x91F2XE=UMk0M>)pYGMY9_F~c|2&PQIW?F?QhGz&} zX%rEZD%%~(BlAnjBwCIrR2d5^;e`+u&>Wlxz>!e%Ni8H)7bTT4fJ~)-yOd9%HU}KZ zRY6#+?=$cO?iRpO8=fM!WN4^-z9V6gNkRa}lZ*(unL5}|BqUTN3v1a|ZEQ#Ovjr|F zed$HTkl6h{#I!uQ+XXmfh;q#;KX9>vZ%8WEZqVx;yF1PnEC#*a$pE||@@OfQ!ev>S zm1t7|oDV()qpwx8{rBC=ix;n74kqzB`e?lW_v3#a9vy7`e>YR|TaZ^OPgk$^m%o5F za3Yx9O*BRm)a&g7{nX(iipVtO&w2ptgKPDe;Tib*&bQMfc>^ct@AAW2aTb{U`~Hp# zK-Jv`@19>=E&xn4GaxkJ#ZfYVu1U-mfO1V@1L0C-5z$rhzpT$gJbDc?7eM}VF`|ef z?&B(c%WFh1LEz;FX;w?XRmu?^!U#PBf5#v8cit)GMzxf=Z2#Wt{TmR_6nEeMH}H42 zmNaK8@c$;W?8thOXrm7iLNNnp$1({VjJQ-jrI^phlsx3=Rz5Mxw=LVUE!*;Cm;Vz0 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/clusterissuer/7.5.3/ix_values.yaml b/premium/clusterissuer/7.5.3/ix_values.yaml new file mode 100644 index 00000000000..7d18cf8a5c1 --- /dev/null +++ b/premium/clusterissuer/7.5.3/ix_values.yaml @@ -0,0 +1,104 @@ +image: + repository: hello-world + tag: latest@sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d + pullPolicy: IfNotPresent +manifestManager: + enabled: true +workload: + main: + enabled: false + podSpec: + containers: + main: + enabled: false + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +service: + main: + enabled: false + ports: + main: + enabled: false + port: 9999 +portal: + open: + enabled: false +operator: + verify: + additionalOperators: + - cert-manager + enabled: true + failOnError: false +clusterIssuer: + selfSigned: + enabled: true + name: "selfsigned" + CA: [] + # - name: myca + # selfSigned: true + # selfSignedCommonName: "my-selfsigned-ca" + # # Used to manually define a CA-crt not used when selfSigned is enabled + # crt: "" + # key: "" + # # TODO: Add option to use SCALE CA certs + + ACME: [] +# - name: letsencrypt +# # Used for both logging in to the DNS provider AND ACME registration +# email: "" +# server: 'https://acme-staging-v02.api.letsencrypt.org/directory' +# # Used primarily for the SCALE GUI +# customServer: 'https://acme-staging-v02.api.letsencrypt.org/directory' +# email: "" +# # Options: HTTP01, cloudflare, route53, akamai, digitalocean, rfc2136, acmedns +# type: "" +# # for cloudflare +# cfapikey: "" +# cfapitoken: "" +# # for route53 +# region: "" +# accessKeyID: "" +# route53SecretAccessKey: "" +# # optional for route53 +# role: "" +# # for akamai +# serviceConsumerDomain: "" +# akclientToken: "" +# akclientSecret: "" +# akaccessToken: "" +# # for digitalocean +# doaccessToken: "" +# # for rfc2136 +# nameserver: "" +# tsigKeyName: "" +# tsigAlgorithm: "" +# rfctsigSecret: "" +# # for acmedns +# name: sd +# acmednsHost: asdf +# # Pick one of the bellow acmednsConfig +# acmednsConfigJson: +# acmednsConfig: +# - domain: "" +# username: "" +# password: "" +# fulldomain: "" +# subdomain: "" +# allowFrom: [] + +clusterCertificates: + # Namespaces in which the certificates must be available + # Accepts comma-separated regex expressions + # replicationNamespaces: 'ix-.*' + certificates: [] + # - name: mycert + # enabled: true + # certificateIssuer: selfsigned + # hosts: + # - my.domain.com + # - '*.my.domain.com' diff --git a/premium/clusterissuer/7.5.3/questions.yaml b/premium/clusterissuer/7.5.3/questions.yaml new file mode 100755 index 00000000000..135235ae000 --- /dev/null +++ b/premium/clusterissuer/7.5.3/questions.yaml @@ -0,0 +1,446 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: clusterIssuer + group: App Configuration + label: Cluster Certificate Issuer + schema: + additional_attrs: true + type: dict + attrs: + - variable: ACME + label: 'ACME Issuer' + schema: + type: list + default: [] + items: + - variable: ACMEEntry + label: 'ACME Issuer Entry' + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: "Name to give the issuer" + schema: + type: string + required: true + valid_chars: '^[a-z]+(-?[a-z]){0,63}-?[a-z]+$' + default: "" + - variable: type + label: Type or DNS-Provider + description: DNS Provider + schema: + type: string + default: cloudflare + enum: + - value: cloudflare + description: Cloudflare + - value: route53 + description: Route53 + - value: akamai + description: Akamai + - value: digitalocean + description: Digitalocean + - value: rfc2136 + description: rfc2136 (Advanced) + - value: HTTP01 + description: HTTP01 (Experimental) + - value: acmedns + description: ACME DNS (Advanced) + - variable: server + label: Server + description: "Server for ACME, for example: letsencrypt" + schema: + type: string + default: 'Letsencrypt-Production' + enum: + - value: 'https://acme-v02.api.letsencrypt.org/directory' + description: Letsencrypt-Production + - value: 'https://acme-staging-v02.api.letsencrypt.org/directory' + description: Letsencrypt-Staging + - value: 'https://api.buypass.no/acme-v02/directory' + description: BuyPass-Production + - value: 'https://api.test4.buypass.no/acme-v02/directory' + description: BuyPass-Staging + - value: custom + description: Custom + - variable: customServer + label: Custom ACME Server (Advanced) + description: "This can be used to enter your own custom ACME server" + schema: + type: string + show_if: [["server", "=", "custom"]] + default: 'https://acme-staging-v02.api.letsencrypt.org/directory' + - variable: caBundle + label: Trusted CABundle for private ACME server + description: "Trusted CABundle for private ACME server, encoded in base64" + schema: + type: string + show_if: [["server", "=", "custom"]] + - variable: email + label: Email + description: "Email adress to use for certificate issuing must match your DNS provider email when required" + schema: + type: string + required: true + default: "something@example.com" + - variable: cfapikey + label: CloudFlare API key + description: "CloudFlare API Key" + schema: + show_if: [["type", "=", "cloudflare"]] + type: string + default: "" + - variable: cfapitoken + label: CloudFlare API Token + description: "CloudFlare API Token" + schema: + show_if: [["type", "=", "cloudflare"]] + type: string + default: "" + - variable: region + label: Route53 Region + description: "Route 53 Region" + schema: + show_if: [["type", "=", "route53"]] + type: string + required: true + default: "us-west-1" + - variable: accessKeyID + label: Route53 accessKeyID + description: "Route53 accessKeyID" + schema: + show_if: [["type", "=", "route53"]] + type: string + required: true + default: "" + - variable: route53SecretAccessKey + label: Route53 Secret Access Key + description: "Route53 Secret Access Key" + schema: + show_if: [["type", "=", "route53"]] + type: string + required: true + default: "" + - variable: role + label: Route53 Role (optional) + description: "Route53 Role" + schema: + show_if: [["type", "=", "route53"]] + type: string + default: "" + - variable: serviceConsumerDomain + label: Akamai Service Consumer Domain + description: "Akamai Service Consumer Domain" + schema: + show_if: [["type", "=", "akamai"]] + type: string + required: true + default: "" + - variable: akclientToken + label: Akamai Client Token + description: "Client Token" + schema: + show_if: [["type", "=", "akamai"]] + type: string + required: true + default: "" + - variable: akclientSecret + label: Akamai Client Secret + description: "Akamai Client Secret" + schema: + show_if: [["type", "=", "akamai"]] + type: string + required: true + default: "" + - variable: akaccessToken + label: Akamai Access Token + description: "Akamai Access Token" + schema: + show_if: [["type", "=", "akamai"]] + type: string + required: true + default: "" + - variable: doaccessToken + label: Digitalocean Access Token + description: "Digitalocean Access Token" + schema: + show_if: [["type", "=", "digitalocean"]] + type: string + required: true + default: "" + - variable: nameserver + label: rfc2136 Namesever + description: "rfc2136 Namesever" + schema: + show_if: [["type", "=", "rfc2136"]] + type: string + required: true + default: "" + - variable: tsigKeyName + label: rfc2136 tsig Key Name + description: "rfc2136 tsig Key Name" + schema: + show_if: [["type", "=", "rfc2136"]] + type: string + required: true + default: "" + - variable: tsigAlgorithm + label: rfc2136 tsig Algorithm + description: "rfc2136 tsig Algorithm" + schema: + show_if: [["type", "=", "rfc2136"]] + type: string + required: true + default: "" + - variable: rfctsigSecret + label: rfc2136 sig Secret + description: "rfc2136 sig Secret" + schema: + show_if: [["type", "=", "rfc2136"]] + type: string + required: true + default: "" + - variable: acmednsHost + label: ACME DNS host + description: "ACME DNS API server address" + schema: + show_if: [["type", "=", "acmedns"]] + type: string + required: true + default: "https://auth.acme-dns.io" + - variable: acmednsConfig + label: ACME DNS config + description: "ACME DNS per-domain auth configuration" + schema: + show_if: [["type", "=", "acmedns"]] + type: list + default: [] + items: + - variable: acmednsEntry + label: 'ACME DNS entry' + schema: + type: dict + attrs: + - variable: domain + label: Domain + schema: + type: string + required: true + - variable: username + label: Username + schema: + type: string + required: true + - variable: password + label: Password + schema: + type: string + required: true + - variable: fulldomain + label: Full domain + schema: + type: string + required: true + - variable: subdomain + label: Subdomain + schema: + type: string + required: true + - variable: allowFrom + label: Allow from + schema: + type: list + default: [] + items: + - variable: cidr + label: CIDR + schema: + type: ipaddr + cidr: true + required: true + - variable: CA + label: Certificate Authority Issuer + schema: + type: list + default: [] + items: + - variable: CAEntry + label: 'CA Issuer Entry' + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: "Name to give the issuer" + schema: + type: string + required: true + valid_chars: '^[a-z]+(-?[a-z]){0,63}-?[a-z]+$' + default: "" + - variable: selfSigned + label: selfSigned + description: "Create Self Signed CA cert" + schema: + type: boolean + default: true + - variable: selfSignedCommonName + label: selfSigned CommonName + description: "Common name for selfSigned Certiticate Authority" + schema: + type: string + required: true + show_if: [["selfSigned", "=", true]] + default: "my-selfsigned-ca" + - variable: crt + label: "Custom CA cert (experimental)" + description: "certificate for Certiticate Authority" + schema: + type: string + required: true + max_length: 10240 + show_if: [["selfSigned", "=", false]] + default: "" + - variable: key + label: "Custom CA key (experimental)" + description: "key Certiticate Authority" + schema: + type: string + required: true + max_length: 10240 + show_if: [["selfSigned", "=", false]] + default: "" + - variable: selfSigned + label: 'SelfSigned Issuer' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + description: "Enable self-signed issuer" + schema: + type: boolean + default: true + - variable: name + label: Name + description: "Name to give the issuer" + schema: + type: string + required: true + valid_chars: '^[a-z]+(-?[a-z]){0,63}-?[a-z]+$' + default: "selfsigned" + - variable: clusterCertificates + group: App Configuration + label: Cluster Wide Certificates (Advanced) + description: "Creates certificates for use within the entire cluster. Can be used to create wildcard certificates." + schema: + additional_attrs: true + type: dict + attrs: + - variable: certificates + label: Cluster Certificates + schema: + type: list + default: [] + items: + - variable: CertEntry + label: 'Certificate Entry' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: name + label: Certificate Name + schema: + type: string + required: true + default: "" + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: "One of the Cert-Manager clusterIssuers defined above" + schema: + type: string + required: true + valid_chars: '^[a-z]+(-?[a-z]){0,63}-?[a-z]+$' + default: "selfsigned" + - variable: hosts + label: Certificate Hosts + description: "NOTE: Creation of wildcard certificates with an ACME issuer requires a DNSO1 solver to be set up." + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: customMetrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: true diff --git a/premium/clusterissuer/7.5.3/templates/NOTES.txt b/premium/clusterissuer/7.5.3/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/clusterissuer/7.5.3/templates/clusterissuer/_ACME.tpl b/premium/clusterissuer/7.5.3/templates/clusterissuer/_ACME.tpl new file mode 100644 index 00000000000..e49a071c590 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/clusterissuer/_ACME.tpl @@ -0,0 +1,128 @@ +{{- define "certmanager.clusterissuer.acme" -}} +{{- $operator := index $.Values.operator "cert-manager" -}} +{{- $namespace := $operator.namespace | default "cert-manager" -}} + +{{- $rfctsigSecret := .rfctsigSecret | default "" -}} +{{/* https://cert-manager.io/docs/configuration/acme/dns01/rfc2136/#troubleshooting */}} +{{- if $rfctsigSecret -}} {{/* If we try to decode and fail, go on and encode it. */}} + {{- if (contains "illegal base64" (b64dec $rfctsigSecret)) -}} + {{- $rfctsigSecret = b64enc $rfctsigSecret -}} + {{- end -}} +{{- end -}} + +{{- range .Values.clusterIssuer.ACME }} + {{- if or (not .name) (not (mustRegexMatch "^[a-z]+(-?[a-z]){0,63}-?[a-z]+$" .name)) -}} + {{- fail "ACME - Expected name to be all lowercase with hyphens, but not start or end with a hyphen" -}} + {{- end -}} + {{- $validTypes := list "HTTP01" "cloudflare" "route53" "digitalocean" "akamai" "rfc2136" "acmedns" -}} + {{- if not (mustHas .type $validTypes) -}} + {{- fail (printf "Expected ACME type to be one of [%s], but got [%s]" (join ", " $validTypes) .type) -}} + {{- end -}} + {{- $issuerSecretName := printf "%s-clusterissuer-secret" .name }} + {{- $acmednsDict := dict -}} + {{- if and (eq .type "acmedns") (not .acmednsConfigJson) }} + {{- range .acmednsConfig }} + {{/* Transform to a dict with domain as a key, also remove domain from the dict */}} + {{- $_ := set $acmednsDict .domain (omit . "domain") -}} + {{- end }} + {{- end }} +--- +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: {{ .name }} +spec: + acme: + email: {{ .email }} + server: {{ if eq .server "custom" }}{{ .customServer }}{{ else }}{{ .server }}{{ end }} + {{- if .caBundle }} + caBundle: {{ .caBundle }} + {{- end }} + privateKeySecretRef: + name: {{ .name }}-acme-clusterissuer-account-key + solvers: + {{- if eq .type "HTTP01" }} + - http01: + ingress: {} + {{- else }} + - dns01: + {{- if eq .type "cloudflare" }} + cloudflare: + email: {{ .email }} + {{- if .cfapitoken }} + apiTokenSecretRef: + name: {{ $issuerSecretName }} + key: cf-api-token + {{- else if .cfapikey }} + apiKeySecretRef: + name: {{ $issuerSecretName }} + key: cf-api-key + {{- else -}} + {{- fail "A cloudflare API key or token is required" -}} + {{- end -}} + {{- else if eq .type "route53" }} + route53: + region: {{ .region }} + accessKeyID: {{ .accessKeyID }} + {{- if .role }} + role: {{ .role }} + {{- end }} + secretAccessKeySecretRef: + name: {{ $issuerSecretName }} + key: route53-secret-access-key + {{- else if eq .type "akamai" }} + akamai: + serviceConsumerDomain: {{ .serviceConsumerDomain }} + clientTokenSecretRef: + name: {{ $issuerSecretName }} + key: akclientToken + clientSecretSecretRef: + name: {{ $issuerSecretName }} + key: akclientSecret + accessTokenSecretRef: + name: {{ $issuerSecretName }} + key: akaccessToken + {{- else if eq .type "digitalocean" }} + digitalocean: + tokenSecretRef: + name: {{ $issuerSecretName }} + key: doaccessToken + {{- else if eq .type "rfc2136" }} + rfc2136: + nameserver: {{ .nameserver }} + tsigKeyName: {{ .tsigKeyName }} + tsigAlgorithm: {{ .tsigAlgorithm }} + tsigSecretSecretRef: + name: {{ $issuerSecretName }} + key: rfctsigSecret + {{- else if eq .type "acmedns" }} + acmeDNS: + host: {{ .acmednsHost }} + accountSecretRef: + name: {{ $issuerSecretName }} + key: acmednsJson + {{- end -}} + {{- end }} +--- +apiVersion: v1 +kind: Secret +metadata: + namespace: {{ $namespace }} + name: {{ $issuerSecretName }} +type: Opaque +stringData: + cf-api-token: {{ .cfapitoken | default "" }} + cf-api-key: {{ .cfapikey | default "" }} + route53-secret-access-key: {{ .route53SecretAccessKey | default "" }} + akclientToken: {{ .akclientToken | default "" }} + akclientSecret: {{ .akclientSecret | default "" }} + akaccessToken: {{ .akaccessToken | default "" }} + doaccessToken: {{ .doaccessToken | default "" }} + rfctsigSecret: {{ $rfctsigSecret }} +{{- if .acmednsConfigJson }} + acmednsJson: {{ .acmednsConfigJson }} +{{- else if $acmednsDict }} + acmednsJson: {{ toJson $acmednsDict | quote }} +{{- end -}} + {{- end -}} +{{- end -}} diff --git a/premium/clusterissuer/7.5.3/templates/clusterissuer/_CA.tpl b/premium/clusterissuer/7.5.3/templates/clusterissuer/_CA.tpl new file mode 100644 index 00000000000..3091b2c5e85 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/clusterissuer/_CA.tpl @@ -0,0 +1,54 @@ +{{- define "certmanager.clusterissuer.ca" -}} +{{- $operator := index $.Values.operator "cert-manager" -}} +{{- $namespace := $operator.namespace | default "cert-manager" -}} + +{{- range .Values.clusterIssuer.CA }} + {{- if not (mustRegexMatch "^[a-z]+(-?[a-z]){0,63}-?[a-z]+$" .name) -}} + {{- fail "CA - Expected name to be all lowercase with hyphens, but not start or end with a hyphen" -}} + {{- end -}} +{{- if .selfSigned }} +--- +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: {{ .name }}-selfsigned-ca-issuer +spec: + selfSigned: {} +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ .name }}-selfsigned-ca + namespace: {{ $namespace }} +spec: + isCA: true + commonName: {{ .selfSignedCommonName }} + secretName: {{ .name }}-ca + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: {{ .name }}-selfsigned-ca-issuer + kind: ClusterIssuer + group: cert-manager.io +{{- else }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ .name }}-ca + namespace: {{ $namespace }} +data: + tls.crt: {{ .crt | replace " CERTIFICATE" "_CERTIFICATE" | replace " " "\n" | replace "_CERTIFICATE" " CERTIFICATE" | b64enc }} + tls.key: {{ .key | replace " PRIVATE KEY" "_PRIVATE_KEY" | replace " " "\n" | replace "_PRIVATE_KEY" " PRIVATE KEY" | b64enc }} +{{- end }} +--- +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: {{ .name }} +spec: + ca: + secretName: {{ .name }}-ca +{{- end }} +{{- end -}} diff --git a/premium/clusterissuer/7.5.3/templates/clusterissuer/_clusterCertificates.tpl b/premium/clusterissuer/7.5.3/templates/clusterissuer/_clusterCertificates.tpl new file mode 100644 index 00000000000..a1e06520730 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/clusterissuer/_clusterCertificates.tpl @@ -0,0 +1,34 @@ +{{- define "certmanager.clusterissuer.clusterCertificates" -}} + {{- if .Values.clusterCertificates -}} + {{- $secretTemplates := dict -}} + {{- $certNamespace := (include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $ "objectData" dict "caller" "ClusterCertificates")) -}} + {{- $replicationNamespaces := ".*" -}} + {{- if .Values.clusterCertificates.replicationNamespaces -}} + {{- $replicationNamespaces = .Values.clusterCertificates.replicationNamespaces -}} + {{- else if .Values.ixChartContext -}} + {{- $replicationNamespaces = "ix-.*" -}} + {{- end -}} + {{- $reflectorAnnotations := (dict + "reflector.v1.k8s.emberstack.com/reflection-allowed" "true" + "reflector.v1.k8s.emberstack.com/reflection-auto-enabled" "true" + "reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces" (printf "%v,%v" $certNamespace $replicationNamespaces) + "reflector.v1.k8s.emberstack.com/reflection-auto-namespaces" $replicationNamespaces ) -}} + {{- $certAnnotations := (mustMerge ($reflectorAnnotations) (include "tc.v1.common.lib.metadata.allAnnotations" $ | fromYaml)) -}} + + {{- $_ := set $secretTemplates "annotations" $certAnnotations -}} + + {{- if not $.Values.certificate -}} + {{- $_ := set $.Values "certificate" dict -}} + {{- end -}} + + {{- range .Values.clusterCertificates.certificates -}} + {{- $_ := set $.Values.certificate .name (dict + "enabled" .enabled + "hosts" .hosts + "certificateIssuer" .certificateIssuer + "certificateSecretTemplate" $secretTemplates + ) -}} + {{- end -}} + + {{- end -}} +{{- end -}} diff --git a/premium/clusterissuer/7.5.3/templates/clusterissuer/_selfSigned.tpl b/premium/clusterissuer/7.5.3/templates/clusterissuer/_selfSigned.tpl new file mode 100644 index 00000000000..235c03452c9 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/clusterissuer/_selfSigned.tpl @@ -0,0 +1,14 @@ +{{- define "certmanager.clusterissuer.selfsigned" -}} +{{- if .Values.clusterIssuer.selfSigned.enabled -}} + {{- if not (mustRegexMatch "^[a-z]+(-?[a-z]){0,63}-?[a-z]+$" .Values.clusterIssuer.selfSigned.name) -}} + {{- fail "Self Singed Issuer - Expected name to be all lowercase with hyphens, but not start or end with a hyphen" -}} + {{- end }} +--- +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: {{ .Values.clusterIssuer.selfSigned.name }} +spec: + selfSigned: {} +{{- end }} +{{- end -}} diff --git a/premium/clusterissuer/7.5.3/templates/common.yaml b/premium/clusterissuer/7.5.3/templates/common.yaml new file mode 100644 index 00000000000..494bfc898d5 --- /dev/null +++ b/premium/clusterissuer/7.5.3/templates/common.yaml @@ -0,0 +1,16 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* + Generate certificate data and set them to $.Values.ceritificate + Let common handle the creation of the objects +*/}} +{{- include "certmanager.clusterissuer.clusterCertificates" . }} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} + +{{/* Generate the cluster issuers */}} +{{- include "certmanager.clusterissuer.acme" . }} +{{- include "certmanager.clusterissuer.selfsigned" . }} +{{- include "certmanager.clusterissuer.ca" . }} diff --git a/premium/clusterissuer/7.5.3/values.yaml b/premium/clusterissuer/7.5.3/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/clusterissuer/item.yaml b/premium/clusterissuer/item.yaml new file mode 100644 index 00000000000..6d61fb60a94 --- /dev/null +++ b/premium/clusterissuer/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/clusterissuer.png +categories: + - core +screenshots: [] diff --git a/premium/grafana/14.6.3/.helmignore b/premium/grafana/14.6.3/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/grafana/14.6.3/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/grafana/14.6.3/CHANGELOG.md b/premium/grafana/14.6.3/CHANGELOG.md new file mode 100644 index 00000000000..1a2845d15ca --- /dev/null +++ b/premium/grafana/14.6.3/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [grafana-14.6.3](https://github.com/truecharts/charts/compare/grafana-14.6.2...grafana-14.6.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/grafana/14.6.3/Chart.yaml b/premium/grafana/14.6.3/Chart.yaml new file mode 100644 index 00000000000..f4add8569ef --- /dev/null +++ b/premium/grafana/14.6.3/Chart.yaml @@ -0,0 +1,41 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: metrics + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 10.4.0 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. +home: https://truecharts.org/charts/premium/grafana +icon: https://truecharts.org/img/hotlink-ok/chart-icons/grafana.png +keywords: + - analytics + - monitoring + - metrics + - logs +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: grafana +sources: + - https://grafana.com/ + - https://github.com/bitnami/bitnami-docker-grafana + - https://github.com/truecharts/charts/tree/master/charts/premium/grafana + - https://quay.io/kiwigrid/k8s-sidecar + - https://hub.docker.com/r/grafana/grafana +type: application +version: 14.6.3 diff --git a/premium/grafana/14.6.3/README.md b/premium/grafana/14.6.3/README.md new file mode 100644 index 00000000000..d73670064b9 --- /dev/null +++ b/premium/grafana/14.6.3/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/grafana) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/grafana/14.6.3/app-changelog.md b/premium/grafana/14.6.3/app-changelog.md new file mode 100644 index 00000000000..fdcf29df2b4 --- /dev/null +++ b/premium/grafana/14.6.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [grafana-14.6.3](https://github.com/truecharts/charts/compare/grafana-14.6.2...grafana-14.6.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/grafana/14.6.3/app-readme.md b/premium/grafana/14.6.3/app-readme.md new file mode 100644 index 00000000000..4c12740ace6 --- /dev/null +++ b/premium/grafana/14.6.3/app-readme.md @@ -0,0 +1,8 @@ +Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/grafana](https://truecharts.org/charts/premium/grafana) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/grafana/14.6.3/charts/common-20.0.9.tgz b/premium/grafana/14.6.3/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 zcmV)OK(@ahiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ%avM3aFxbEO6bPy(#_AO*-YId8Cq7wHyY;m!@rbfLv-3@8 zz$%c$QL#{6Kv8CU9I>ylueVRKfoq|zBqd6=dsyd8TdV>Si3E_yOk^e;GM^Lw@N@=4 zR$s!o_rvy|Mx)W_bvokTMx&Abx7lnrerR^O{Z6CbZ+9C%G@7kWzwrZTJOeJ7C!!37 zKQx})R=RWF$pd|#Fvu|R>7W7t3>lt4hs~mK9g{-`GBhROasaT;&@>bUYcBHe0)@+L zc@I0tr)U7)ydPcGn)PO05&xbJz`rX108j%yoTCAtQ4o-jiFW`*p*H|C#sWGxJajR2 zNa)rbGC#!r0yA{TKG5OqFCTANSb+ilfI^CiKLCqX1qOln=|P4ltGI|dAr6>$_jBYs z{4e0)aR|dDn2-?Mh7l6;pH^msW22j%Vu3VonS~K@M43Yv1oV)F2p!HLWhgvU@8wFW zV23xPLBIuMFr;+}DxxTKh|iGE1k~uT-|I9Q{cg8%kCqQ4bm^c{194-On#QyyUQ}v8 zHFF=0k?HE6|N6RFZ*}U8TI0`^ImAAL*hirNhUO4^eEcTlf5m|7B%D@&qP|6d6!B9P zWO0Q7TLx&L(W@*pF0DqrQ9rJH?RmX>)_WBHUqCNH^qDq*QvTm;H950S@&A5j$NyjC z*#os2cZw#ILGc>~gHWh8`Cbm~D$uizX3HiHa2V9x_%1R{!Dv1dTf z1H%ueR6#g}KL1P>C=4SHxgbCx|1Lh;Ad^jUEI<&FF#?>Mif`iQt>CSk3unuZP`JPj z0>h9n;t)@^Az$iu1Hhb;s<*l^RZTW`>P37%yBOx+$hkXZ$aic^{%yf3OX^QmjTOd$565Z%r~L}$cv?Qb*^-Lt+m)wd8q z7k_KWwbVDx-&qtq8ntdAW~~y;dX1HIOER8-P&N$_{mlbPmJ*ES^lJE4mCj{C{JUm@ zWy~m3E|?nevDvEtFh`8DM~gw7xGt5iFW=Y<8!)07hgw3et2oPv&DOc_SOI{A5KZuX z8nAj@1Q@(}m?0nd2)W4JU!xfg``m|P4^cou;9@HOW-|mP_!Dx$9J{WE9$?5z_=0-a z=Om}7lys_)D1t-_KXZ8RVsHs0PJ+P0h+56@em$zSNxB`wRFot>gV?W)A;pfFZF}H4 zkUQ@I7%zdV*o>GwEL;LctfEzqkozd83M!fH5{x0AV#GJEO_lVPDt6`>O3;?~HVC{W zz!TnW@^DH*{&qU`5WrN?(3NAVznAoqIW-a>-ytEbi5`EYzKXf~4*Pf>&4Eu`G~}{| z5SsYJFh^YnIFk!^koJnUd0Ckc@%?k{H?Ts{IquLH#QmX%~r zD|im4h>t>u0zxqp1^~5Q4V5{33^u}mBIqEo#Q!j9W%wT{M`sQm_cxbna023aY!*k<7s}wF{Q>FsqzvavhBmacHrzjkNZtp05^)@6?V7)`o zz4pE34I%7j>>;|O49zW8Bi7C^#0%`9DLSVP^q@3z#FAB@KfCr@iX4Z`gJDP}*h6}~ zNrnC<^7%fe#1rw!fdL$24>KGuPUyM=@Q;70Uv5aO4YmeOE-x#3-F@VIoX|Ge62!_rhq@@o&%<-9g<>a&2B6bu zH0I*x9L)u%Iuf#fh<=L@O%!dW3U(XsaHV1zl6#4$aP{Hh?Be9^^kg_1C_^RmJcYU{ zm!xh9Z3E(3pylqT1er@|4As+aMku>N?16;$$(KVujqDc}!_(vo&QB~zbOuAN4RXQr zD(3F`bBKggtOxVNdw@$mLtLNgcS;-l8Hbd~FQ>$x;Hjhsi92L()xJxVc*!5JH4Z?v zSyf1$co#gLq#z#~gO4doU)VvwOpx(Ty0N@U0^*VBQocSVK4l@q zKGSG3;-OFrpW+R5X2^{^6kZ7;$o(k9L~JkGkf7d&lD(#13rN2ZTno3PTG!fJ zf)LN4-1gNQxjV$f6))ZKM~InSkGP`%IeK2i>@D6M;%4QOZCpNC6yzhM6Ekn*&qOsc zM$~Q~Pj@bFI__`v^Jh^1AdRC+HL3Fs)B_SSs{T|)7x3jvH3cLP(jW)&<0>c&hEv3Z zNcnFg$*ydg7f&~vqmBQOyPMJP*X}HHg0I#CxlnKM9R1FPd7;yz1qzoBGZZ4BKw*dX zpmO_v55W7|)5OwN;O&*IUTwax1$LTx$;FvZ!~BIA7}KLLTWWkRF=f`aFVVLwhjtgN z*8{zWxkVk3V~FMfTb^Ml7zqYCglskdhqAIPDF#Y%452A07z-GBWJ({|zygMcyt0GK)y z5BOi{M)%@YMIrejuTAm62Bh2LYaDu9eylg@t$MRNXt#O|T_zA;xh(K!U7#ll{P_Tw zH+}i$pJ0zDi-oR^fAa_YKlN6l(X2H(b%)IB=o6d=9vY~lgE|+C>U2q)^-s&+bxkkw z2f&~)q0$JCKCuqiyH2;lyLI6+6i$R7sQFd4pfHXyqGTD4So8R}Q)_euVj*&8kPW!# z*34Fh5u1$=6;?(44shNUO7XBt$sFmQ)wo0eDSaTJt4ipf)hvt)ja~|vd7lF{T_^Lt zYU6)~sl#RX<#*SEg~L{@fQ7@d^Ix&bJpkOL59ipa1q){tq+sEcK`L3QRwFeRGB^^- z-Sf2vK&BM{?y=9uYN&S{_JMej5X!B8U|zD=kO_;7*0ePnST{} z$fgaRAz5I)kC<-MtyeJ#LcA~~cLp^V*2S(zqTJ=g;QcJ2Z3&9KL=3pU?3 zEd&ckZ0}rKQ3o(n!~pad3X!{Spro*rj(wTIkdlH_e=hw0K@LMMn1o~wMyDs2=ho3# zWe;5Yo^(nK(FBFU-$Kk+{OSA? zaYfhNucTgz(ciREuIlIrgyt|1HO#L}15|)ensF`)G+}A8b!hb}QzINhN0j4#WZ^l` zLm3K6xVfKn->$B2&qsCkiB){Ur0Hsgpv(E%zs(UV^zXrvL}J{qPZ{()>`%ex&!8@S zw}rFPmoH$vwEQ{i!fYy6j5KR7@^?7*jCDg;b@Tn`Md)05g-$JFi$*>Jn)yoEf`>*cQORy zkUUU*UM3L=p+7~%IMqPhxw?KSYa-tTHT6dSj(Z{nLut*=P_t4=H7~#FI(FNpQM*a= z;z!;;FnFyYSRM>@K6?@f;)&onvQ9107x~VB`Gw3;Uf;y;5kg>2LV4u-(@(;tmFV41 zKLNFe2X3f1la7LU+oa%6N<*}BBAVt8LA9lFbQc7~x(qMqrA36hemFiY(51%okY7?h+qpigPLK zn$uomuT#HggfjDugzE1=NHogT!~xC1-xQKQ##I^CmIw*h-)-VhZZ zF*+lJtwvIpG*~w3%~p(M7eUxO?zP5FuhASg8y)9p-0LC7>B4cdIXOP+P5P~7v*AG4 zpFjkiaR+w#ZnM#C^~RG{vlL4Pu_v~v)o7ZcmZwLrS#KIwk7g60)^Yo&(K~J(b)9ab z-#vznX3J@Jx=tTDZ3lLHy*BLj+=c_2lS!)$8%J$8?zxSz+i^+}b%?7}q}7=6vNc)Q z;M%FTESmP=(d4L$+D)h9wkQ4WxH*PSx9fJCPW$K>9!;FC+eS{?b-Kr>Kk0OwNu%9A zYW4d))NMNDG=*M({WSO{y)J4VBNxKXq<7qCyPaMKp?;&+=r)^8 z*g0w+ce?GKi^j*DNxM1j^_s0-r{CywyGNxMQYVDWnXN`q71TJ&*cwB`qthH75>i@)Ae=amSf7kD=Ru z?eXNeanwWOawhQJokpG32$uVlU<&$vvn?bF_W6Q>Rj_=U~hH!Sc{7oa=sdrlO zoJ7d&x{bcun)G0A>>eGp#;DtE9;4$U2eury?KcKiJf z>a~w6747YM>S5%sK|FU{dw`hLbUoY2EGA?Jbx?PFJZbk~*KIgQ?s3EIcRDU=wcX}X zx8LX=H;%iL@wnS{TgROaa*mtsQM=V?PI`@YznqWHVThqS-V|e1Eg#`t>!^D)K58EG zHQVYpd+t%^sMDAnxyR$SbJXi~JCkO=+dJwtyT?wq)$7BibJT0N{qCfFeB_oQ93mHQ zOkhzdA6azVX||4zo6hmL=N$JY&1SRHcHE<*N!M*2yOVaeHJk6@cGb=2&(drfE3 zp7fgi<3_L1I-bDJxHoBaoqn@?AJQ|i+0DgvI+NHs9*JBZGQ2>wV0svPd25ub&2GI{ zU9YL$Q=975TkAD7QWu6H(TaPuzO4ffV=@PiOySM`t~t|~Y)61u6z z7rcHwq=|8?EyQWxW*C%rc@qqJ_10P#C^t6be;8f?s?`(6w)Ir@!2i;RghFCRV2nKS zP~kHBB8Ww9DbNcTOQF7~0>BYV+4$!aE@f4|Cd;o2k#{+Nt8X1Od&kGkMyuKFv>Kh( zq}_2~tJ66eAHk!si;mmq2=%)Vbz75e`?%E_H{qB|_s#y%5klRyG2rwCfgtc|YJbEb zdKpJrqhqeYOxD3+BO+^SB@&=axP|h0 zN6O`WhC)=Y?17UwMlmkxNH0$4y2#}^Ds+WQJ_Ifnk>fC2f_tR+bZ9I#!rKHg+W&ed1>Pl;6R7Wo#4n1L>cmYl2rovBth~jXMCs%y!6=)2OMBCYOe_wA4@u#4Kv5BL{=|(m{!LPo#mDwDx3fNU0H$3a-7 z#m9m50vHU3kj?5~UDRT`+F|OgJinRxB;*TLT7j)Z58$t_L9^cM)EYU^r1#G-L=*fe z5A3zF|4AO9hdn+5GSiI%ON3L&@^S|7**PNu!BivKzBr2g5be*USom;Wh)M>II2_#s zy70MN7kX^^OzkMQm!tH&t%Em&&44^#5;k?disTgMqaR5BdjOL&LoejFh*5ymXv24UmT6+rn`LbpmUfU%$!e3X|7=KwY5C56)pP8bS z)85QkwNA59rU|NKidz|sOrbiDeb4p$OJa=155&$$6dyDqSUR z)z%UNNu^~0IkKqKncke=o(xiQ&=fNC0GA*n5nD%nQstheI|(2husU7lkYw~cmx`q% z%y}?CF!Z>n&7gE6;QJ(kEDF&<@(^14?nE$zK0`{^fDVhG=Pkhl3Gaof_6Bh@IU!VJ zH1rPz6LCbyBUhb-vqHq%5C_sEVjMJfkU5Z6DQF^!K;(OTRxe2e9-uE~I+Ge2WFW-! zzOo1Y@sAKq{`t>WCfArGc?|}*PVto1?~gQJn8(!=H{BnCcRDa%{ zn!heb>aX`_@|^%BeRWNZXI0C#rZOfMln!CFC#EPoqQX=Qt z+FwS^24(=()7-sqdRR>VSM0lMK$LWUD*;;7g``_lJ-M%?YRS!Zt*UajEohY@nZ=JU zMYTAkqMFkSRrboDlhG+rtbqE)!!2hZ!^l(2kdGjzY(k^9O)on9OIj~@y?9JhP{+`@ zN4_hhzYqZtPR-eoj$a0JMk3GUvyLL4#T`=>?Fl0r$nNv;Xe#Y2@g+G@1p@#Qx{-b! z5T4FhoCqkTQ#-_$%g8cmm=0p!A#=N@_1H7fEcQ5Rf2Cvz>eu>s9jYuUzDie||7>O3K6% z8&BrgKUqNRaU?W}=kU{eAKGs#4`@6iL}*S6&T^rUhKf3%;y_HniX27(LeKnp#MS|# zi)BGn64B4f^*8xWIMM1bC*@I_aQaUBd~+5ii{&_D>rrjW?+GaeIZ!XCL z3Wo|GRamNLMx2$Mm7kKrwh#%eSHh`D%nK((kfB7rH<@b4MRVx8l|&*qNt9%6xb4y; zfFYbCCh`JEA9rC&6)`88Afd>`roIVPQ#wSSe+r;4vqRZb7T?}rpUZXcgxmhbe2!cU znJyyy;B~qKlXi*M;^n0hb&=|uo(&gl6fXx z(S6N%$9doY^#m8@C~z4_3tJ21p^$L#N_g%rn)Tix3~-IlYkDX_sgdy%sKZKb3&uw| z)>wrOr1fQC*;00S-`c?>Fg^T0x1u%yg@Mib8R6mvxR|J9J{%~QHv=iKxCf?5SPWbx z5R>!Nm9CWrv#Jspt97Gp)bl&7rc?g6%AVO$G)4-?FhK}C4~mf0mFo6Fa8ani%3Nlu zb=%p0969%h?zuP=+r|<^KBush zQlaO84`Pms*tg6)vIQsE&Ahf{OYt!3O@sJ9i!IxCmWCEH@&G3CE%TPTan-J>D5YOH zZhE}4?dG%+qYx)+1TK=BjmLF; z@QQCHPz*Yr#Ea|oYXBeUA#KM2D)50?QLF&-P28PQcQT!c|5)FIHN>4v-AU@xUSbI; z6a*p0OPj15Sk3N{Nwey;QzwQ z9gfK&X3(4sxk$LQa-_6kcc_Dkzyu@DmD`r^LQnH0*^ITr?(t1_YK1`W0YKY7lh8q2 zC>^n-hZ3LOho1HOeolWy%L{j4gOf^)%*zzNznvj)ab|`l8XK8J)09tC@l8#CC?i`A z_{4GXL@8h*P)Hbf0CpvfcdNy0iKc(uxm1F%?rY$?KQ5EPoS9CS@h zK65A7L-ki2-84;-F+}kP$#BH(bB_bthG+3SKth@DZ^D}wCl;f79Nb=xK8S5Z9XzO| z!9}wJHFCl+g<=Y+O>TiPCb?Z3RQ8Hw#Se)e89dF zs{D-BTbjGn_tbji!uo(K@o&_wt8(3mH76Cxdd0j{Lw3UZYOGWM`@q9gq@$ceHi(N` z-0*zL+l>LKz;LqHGRioD5zJ~u*E@?JfE6ntjR z`E)lJ^9G>W>NI9?jsTig*LBLnq@5}!$lfwmrFVj26IGt=Nhf9y7AyH9HdeXFL$+1! z#x_D>nrnkg8M7*L#6s-Ql?K~9=R=*mQp;*{;$ud_0}v2b{cV{!tI1N@cgD3$|Jpms zG6Yj&&sC>F$aj;DDK!-pIkz)fi$KQ(^ah|Co4%hmzFf z*~$V#u`FcLg17H4%wa28ppYx}GcAK>Ta1tF(rxd7%luYlXF)_YRMW7k8N*a`iCe50 z*9}9R>UTz+iW7?TdJ83gXBTtDPKixp*LCG{A-C`u^5&A0QCsgMp&~2^P{^e)TG4+Q zFLrSg00btDgXW96Apgxbe!j!nS<9ht1kj}_z!b8bFKRU)Gz*Me@PLFWphb}wr*uAa zE>9Z|0hMS0xyr;N+YruK#WVx@nCKn67ajE*;)2Ao=?`!`&3^~I{ zLV;!)p-(J?78Je#iwOLQ;#ct)U+Y3@j_nChLKx+w6Y`<7feI5P)VDvxgvXpRk?+b3 z68dro3;7Lbl3S&Ny65 zl{a#!>8Kb1mmd}=gdQK`8u4kJ7p2C@SWA=0Rd!%8qwmqOI1&N6u5#mC(X#R4`7pdv z&DX&NTcc?XI^DRHOM$PVz;;5h<3M<0eE+TI_>pKa@BpZ={sSGLa{x?$3+F#}q`GvY zk|9rgHGeb(VHl^AKrV1m5F$sUR)~cF-DD-k_ErNgis+Fg^QkYtnG7A+pODziDhEp5 zm4v!|>#wm##)n*>kfw_JBYGG{ex1(LNwX>!yH9f-9I=_yCW$_s&}^8~D(Nu*BQ_Hn zu<Ldb0d?fRAhmp_qfQX_{-{}QZo-*ZFX?f1_R_=(Oe(N|W zV0W&ca)p)NXBJ8>qU;XaE)bMB_uV^_XHCBr9Q6){(?o5^MZLS+ZzN)4zKHMmc-#dc z`Lw+AL?WpKML1P0N2G~86*Z-Fr_xS&2EvN?yj8PHt%$@>pC(Nv#iOlahQtA34elEl z;vhus>N=C0ywQb3)0s7-DW_H|>s;09;fd#g1q`utH#549G|}qAO6g6g4R?XB>6f|` zK`th7B$iA*GckRW0cFbvPujRfP~YMR5}#k%Gz*U z^5AD7^S9-&lg@w2M+g6oTrq-)l_yDI46?D6P1^ay(A6y}{fs@7n)vHBL_EHsrkYC3 zFFsAu^XfJ=YIfQn;huq9K#`D3kV@LMmmCznKU$R3JbWz8x$eM}tkYSlFn<#wJ|tXf zQs5OKM0biv;hTJ>+K9;~eoPc?)sQn^71i105+J4OE$>+3SYuxjS4ccMC_orGK{d`M zQEYP&mV?Yc`jQwXJt7nGmet!MEB*LhJ4o0t;u*X88iOITq^Lh2*o${ zC?5rRLrunFVM&gNPueBth&UuZ=cX2;=7V6vH=IFp{HJhuYnD8U(OdPOm)|FdWwq*< z<3Aq(7)}L>CffAW)@wkecCVSbUmM6!YY~`$7s!|Aw=f7Kh?Id?@aq81Ou|GQQfAFdX`_9|OG!6OiPsqx z>4f#}oDRv17a%m}w~blHe2mhQxeCD$j=bRHxWu3P{&qH^5P6+E6J;lbU>*iT|@mT_O;(~ zD!3pKu_@Pw3Uwwfsu#yQgLDM5uAMd^YXmn4L$=}Pgdv-YzW~q~?#gxoUFKP~0Rud{ z2kdR_sc;!gocTDmGY*wvXAq*A7SBj%d(BDrG87=+MZSX(1$*1Xs^a*;^ic;UTuzIa zJYnWQ^r0som>K31S+e{&ab*?#GL@6TI$M^96hb0`DOFi)e!La?y4ut-C{UaE?9;4L z+<41(i7}+84vZ_k;915s|0nP-osZ{VsaM#3!|)sl{oNf~Zx=F!&%Z27k;zb|O6f&I zCSVv}@hhE<4)i8y24*3NU%g!`ID8~{lhXVsj-z7& z%;O8H1we7DsJK-0U!Z2#H7`{Mr{b)T0v|mHi+tO=>A-eCMZ8N33_&ox}CElObTSWFUE!s(P z7ZGpbDw>Z`$mfqZ0r4Gkm}GtrKr1erp#m)7T#13OcU5(atsMX<{yi37gy&1JaQ;lK!as{N)5=4JPa7^k@wubZ zNe@%^+rQS=)r;O~A9MWzh$aW1+UoY+;_4b$JwR{ENIgJrv@Tw?n#?sJ`4^{sgKz6L z=f>2Qp!THBq7g9{aLNEKZLl`*tqVHMyLX7qq|z*Nd<%{jOhf3ROr#tNwNo_&A(4sA zC8LokG+Ytd3nzSm@XbLn5ejB-fxs9cKOQT2*ZL&#_?E#Kb=nf2f!)Z!YF$-P+p{JH;nN#>c3z(3lkK@C zsvD1?)x6!f@wZaF)8DjyibAf96f`XsW;|b#c-xChg^9~^dre(N^r2CLAbJPQn_YSa z4H7lt8FnjD&nO1`XW)@3@X!Kz2l*-WrR87%P#BW%KqostkcUl%atFXg<7j#SSQsD6 zcw~CXArIt2PhgO?QA!SXdZNzAJu%jncXQ11MhFeeNmlY~Re9IO=8;1u3Pa?xLm1#Y z69j*_cWMDX&1{y5)Ce{^5|>a5tCc)RwC}2^xv1j)OM?k7of60M$65k52IapyM{lt(6Z2e2D+bZ!@&P3bYL^&BMeL%SX znXqWBJP(QcPJT)lq138WzKs7Jp%A0gxwSm|F`p97VCD{}V0!03XNK-(nB9pkdq`IG|%-{0rqw~x2(_5fs#hq4oUhQ*<)rBH+ z!U3Ss{M8J>;BM^QQ;zaJIOHNl=I#HLDjFi_?h9C=kKpH<>vvo$6IX?iJI)#Im@wn~ zCE0(=4>W$s=Yqm1{Q(HgjEl{ndU^8Z{IZ%;AQ|v&$0xZ)`%{0UtJh=)N}7Fp^8W4l z%0^H5po1A^z#8;DaHAC9*aHu%V}u!@NLpYx|A;kZok3GyYN?vti}{vx>^6|4j2o+) z#%!QraGKAEYne=c0{@b#GuO)%Ag+Pi%Dh&?#XA*7^lEr4AtfNYmjZ3IT zmc7ZmGyc_e8xN`7-wEx04Q$3RoI^ip6G&r~fS<4wlr^xx5OVPtL6zjfFfL=9u7md! zO(HK9j+PcjWu$358JjilWW z_T#xn#`nlE1_DvWIGe=17!vF=F4qr^6^^c(0EInpjaYy z^YdxD-9A>a4VDQd8|*K9Sp_Cyq~cI5KK^o4#L`uBOHVub^D5m*b&(Jl3CicMUNsl5 zlHNFbsXUn`Fv@ruX%nFKSx+RoiI@GT9g7pRUH>l`qVv}}oWtLV4wvrC_PM zd%zyJL|ma0S3z?M#9r9C`BB@{+8Fgfq+~5bo3;mshyNvG-~akwyzpORj`w>MT7uGl zC4*W2TK_L~WX8$**SbSORDZy}OCD(5N9^#wEUKqLza?bqp#hlEqUK#h8J0$wp?&v~ z6&wd>TexD0`9<3Y0RAqF1yccBFO7CQZB^)$oe@YSH?Uu+tDX+yH_{#8*Mz$tQ0h$b zt-xSV0xC{>Fk(W6NX*AiX8`DA_f0Y;={*tZ0qf0E|5{HeawmLm_5A zhh#2B|Kuzc6(Ps1q=PvGo!+DK_#i5s71Fxj%5uvqH4ZC2lC=@5L>Bph9biw~$)}xo zoJ8iSDA2YMZ+QSHF)wXDTPtwMQrx~nCi2JH=Kh0up$WelXbakb3ieiZkwB=dHF111 z*2X$HP6aG=$2b2Nd@~N@bl)V|VjKzs)S)p4OK zYDv(^kkJ94$eUP&uuh$o@m`@3<;*DI;J~LN7Y9-N_^#cbriSK(*OuG^$n!#U}4Kes|_{P?uQmL|C42Xdf0k?E>EjqtK&V=?o$f z;H>T?RS{{tu$^r92DzBVE-uS8@4yk4lJSn`q*&&-$#bqq9lMBoN<^Mus>crV(e?>L zDnZu!o6C_-{1W@U@?G@o4cEJ3yfxn*nEq&vlRwF1Kh>pgoA*>z%mD@A^ z;gpCp{!R5$y7iqzY{u7%PDD`kg(WjX30~u+X>gegtChZH;@B1i9$CiO5kn+0d{;!l z+rSfh=MR67M@9-9>ckTCP{xJYSLYty#Xh-p7I+)C(P%Upy-w!`nVhwe{zC5U%bzFr@O+;g>I!&!1~5eI%$dr@m;`zC)${;V9q4(SM%7c|A`!uhLLJCk%?BY)fvef6 zsk&X=-`9jSa{>Jp6QIh~m8v05JYNjvb?x32mnj^i*V1t`2~Ce}_IGCF`TB9Qi$@Qk zwNgr#rOw%(T%HPR^)Wk93gHw@`6Q%ja-CF57mf=o=5K(MtVsk z*JZMS%|=KE*Q`52I!Y#Ygw)4%Mo71tN81FL{0&1^;eDbsnj>{><5*q=XWgbqR5}?E zGiyiOss82+SF#hC$sw3Yasccf`?(`p$ys_AiUKMAnBb7upDGTC{b@{A!|T&jd=@5I z#wHC~MKu+pR2?Z`l!_GjjIxAPs_rLP<$BCAW|yW1x$LrV)G`b+yM)V`XbDHT$RE|h zDY}}YRLpw0L=4aXKJZ<924$jjc{vV?*F>th^lVFVpCmF_?o;&l*Ot1!oo7w`PYGX- zQvX)zf2~eCqyIGf^#SJ&9sgt4-e5T>Xi;Qayk zaUsYTclh4)a$)x@ui-CWDl%z946?X+UXs_SiCL8gT70b5YJB!q`JYdk{8iObA%Hkd z0{FLalc*k6)4l!L-1+&RqWxb7%0GGYU%me~d;RqO-{`ixyZ!$qo@d|us=xIT2+OBN|={wmgO#+W6?UZFyc>ayD zu=Ta}$?fh>tNFjd?y>BDCI4?WyJ`O4X|#6y|0SMp_WVyzyA4nOiWm0RI&{n12EWxK zx0vXq2W~sF+8^dA;{S`l7oxw+%l~-Z|HEqj-{>}4N&esLcRI}-|9^?c$p0#n>;zAR z)Tc7~8o^&?9bJ!gF9Lma(HsVOGQSHM92D9ucy-l$Jqo1I6$N!V8-Rb;3`^rI)W^Qd z<-bl^E?Nt=OCEd)o&U8F{67xUD_#F8z5eMFEdVRlf4h;<|C^1S{{J$MS^sLRx1{^? zb*3PetN$rgTh$SYw$b$q9J_cM+6XY@Mdf0)?E<_eBSOlu*K^CPXQP3ZS`#eo>uH9C zH7y4lTMBG@L$`PI6x)IR{qEPR>ofCf^!L%-yX&*}m**8}T>#+hYIOJO`T6kf>g3(| z==|ox`ON@SiC^X4u5bC@lS#E~@Z$8>dOUvA>8*X0-dea3fFQ&^n}F({76*S?RAX2o z-KnA_muF8e&Tb06(uE_w?x)rJ9K3QfaNFL387%XV%oM6yja$0>W_a|<@L2R7jR^oh zU)-F3Jh{9ygQ#EJUBAD5bN&A6>~8e_&DHtsNEvt1P}AlLv$kx=dP=Bfi%l|u0RAGj z7V!nF)^grTws-#3W-kT(t602h8=AbhWcCWcW) zS`e)5ys%L%H9x-56a+2yC4|E3t7;|XdhDW42jE93193Wa`kT))3Pzx(`IT;L%~ zgJygrS0H=k_jjedT`F!5UV~~i8(p%YQn9W$|Cd~Ge$g`meWIr;NV*vT1j&0(pm~n; zxRceNRaRfiP+2Pf$U(9EBWbik^qru^;xczR&c=`o_=p}4C{xIY?FjR|3S8e<6=VuG8Cl@+qFmf37H z(u$`2YVETJ6|ImY-$s6r3c{+xjRe&ntq)hkOdlZzetrMu{BCr9dUJj&lKY9=fmEbd zlXrK74zjKe*C|EB?Ry$KA?#5me5OL^++%-QuYANJ1k_w!n*6RWuKhCu(0hPOTDkYh zgU;U!gFwcSMk2wlxIRp-Lsz(6RX7g%zE~aItuns}L0I@^c?iloSD+V#NG()#UUNIT zvwE&FuHBCAM%Smm^52IG7#@a^pLemiTc^aiSLJU{ZqM(|E^bs6509-XqR+A**VXT? zuTIaUxLrD3&5hqlIsA5X_kMJKGa8<(1tp&JX(%VBr{}}lyR)m&I>?xd#+Ze8AnZdww0+vv$q)s^Z7?AiI~ z_U>Z%WVrUl>;^cWk)!UNK2v;R6Y)jvrh)Un-QJwso!q?DgvnK0HzQE`)_Bv{?a9UE z==9|B{Omc}RTuKd6P+)*U(f%ZN4A~Hy}rt=9l;Yulnq?L^V|LQG?!BOU*0bJ-1>jF z-Rr0Q{~E1b{O^lAM*f#$4PNQHUbw`R+Eqz7Z`dWdSRSK}>-#vyD z4I!JA zG>>(Wm9C35dHss;U##eeT=^^Kh+z$HMFmi~EEKUiq({RO2U0yGdRxb zqUX3qJ{z^!7qE9ROUsO?WR33tmgO#m{45WA>Nhty0|15Cma8&|GH z-p-ULMpaB{sb!Q+P_FxknW7u8BErq9;%S#{*j_u?;M)8;MGMPT8dGah(jup(A!A~0 zDIlrAcx{~zioHy9w;GSoeoV?4p`ubn|54OEi5b^W6G6j^z!!1Dy1KjpyUNQ|D==bY zh{8D*Nr96&Y?b=!%*cape#u*7r4QdUcIf*m%Q~j#R@OC`5YI*7_LsMW`vM!urc*`W zWlM$InhxI_YmeuEG^ZE^MGg9xbg}dl)q6K26mCWw%;n3CA;N>{v3n*V+Cz&@hR8;_-H**`CG03_4}=E z`uw-u+~xm$k*6sBmot>F68EdwoR&>_F?|tHwUC|E;xw@N@~jd;VrG*J0A2)s_T)Rh zyqBi()2T8mB7g0J@SKR>_#{VxE6TYSXW$gYszyq#W~yd+VC->Ks)ATr>nbI*jD}Hg zD9TvjgYhM}a~PxvX+Eq&ODm?Zl$|k}sdXDP62EhXqt|YjPTw)$)LF7}s_HuJMHHVAostRsKSTotmIYSJ3Q_{w>IS0r( z#9gJ=l+jK~{i{hQ%WXzEt?rc)E(W|Q-8A?d5G$y5_!BsnH^r$N;f#`D-?u!6*arb| z<(;i~0wSNIW9OF0Cb|&5uU58;LN9<-+3xdO*figLe&@4nDVa#a$~0m1R-LVs=eW_I7tSnQ<2H865*-C5X=nw)@ZsVWxQvSxOSk+Rh*COHJ zPvGZ^zr8z;@Bf=(HjBobczIp|hnUg`(Zi$W(NRf~YqRi(do6D3qo4{SMueK3^lT8f z)K&BH!*4dYxsFKR=J48s^q4_b@eI$jN^)X)zD+VdewA1@k7psFf&Ygi;tF|UQx=ro zQ}Qi~t7VMXiwSQcW>~0}N*W398wnexrf{077Jw=tZIR(|1O30${$r-#G|H9#qHh4n~U4?5@*`c`R)6QGyCV;iW?W7|C&k#GN{<&(6=T&Tl_n-~2kdyBL1xlHd4 z=aXVZTG?IvGvfT!}9_=Y{0oxy2IKpYyWTi`)t#m{pYIf8`e8IEk2)7)2SP zk|_*cNpl$V_N9znEM#XWZE4y+Dk=&;b^W)svBty`C9I!czEoI<)D(FKgUTE+=q5-leE*VHz6^_V?3K9qYi9NAYE(@N|>% zkA1$Ug?O%dt!903O4D4Q8GFu`(8@0MNP?ZjAYPPeFww5{D@8w>9jrsdFJDY_yHGj< z54=($hD|wF@H?x&3F$-Gy>2OO2`SG82GLgrG-H+Y{pFEA0;Y$?Os~Uh7R}>$ToM>>_JyB!Uk-YBYI|Y$O|xOD<5P|H*t7 zbPL)4R_cGfW-A^4-|O!3f4$5j^t>}M*dxTYp#i!m@W^tGeD;kgfu@&hs)1$+d<{j= zH2y?Y5C#E_H9QabF*=&#?J?)pvZtuL;#ruEhI@;?G8?9yuL*HTemTs{4sRMY2COTVH@ znyZekHCNRuTLXP*?X&j{X13cs>pX?}ztQ5JZU9)R|F?UY{Qs@p{ZB9QNd4ao_8;2- z5YOo~EdW+ezJdwBw7y*%fC2km7y;rT*jWK~R)BBW3SegH&J3_K1MJKIJ2Sw}46ri; z?92eW=UaY?^nc{L0m0kQ{?~~A>SXT!Yxj2g|BE~-Yn2@AZD{{`;=G*hPi4v=q5L1n zOO!;y%6ub$N-(4>25TAu;!au0)w9G|>7k(CgL1Bs-Kpj~)%;~u^Jq*FQ@0#I*9{S+ zXicry>};mq7KI<)d_Y3BDK4VU*AT*1?f)YWJ5Rj29TRRmn+k#|Dx644@(r#}B)+g%%l8fP@lTHd+P%DuD#s2VG1gj=q z{g~{6shUqsmd<4^RT2VfjAFeOa-R^rj>%z0s1ulfPl6qg)BIZ$@2nh#s=?}gG)AG17!uT1%%J9H z?304NJ3;Y3K~S`ov|MI3=lSxbqGYx8q%`hgIJ>XXRxqzq8ELGjmH0W=Gsh7$v|zRSyRgv_rp)6D{yN{u{&^jEY5 zbx@Tz9?F8ryRpQETerU(K(WNETYGI~ea@F)lRdaJQk{aJrMP6VlcX%7%i6L>vSZM9 z!7J4}ja!uy@p^&65W8Hq)KKi#Nv%VZ__dXuu_n?p>MtcQENLJuu@`HxRDq-yB0BD z6)Zi;YaQaVkZ^5OdYsgOIU|qPQv$rb7OZVTRGMS|1_d5=AWhV?-dok1suKK^UnzcX zRcfnBh=tg(=!+*QJWq%3-!tst-^EA_QRpC_!70++s{whvpn&DKlZ0w zPkw>?Z_P%(ojLz+HFx&^7kPw*|3VJ-HZ1>Y-h5-8|Ehy)+W1W$wr<_03r80z+4RlY zOI(TdRG+$h+o^5-mCm5ZRR<&07~iB&FKqc*sJ8)NpP^}}M3JNky`afN4Iy9^swrg+ z+al0f?IvWVf@U?b)NqK!p*6i~$%#v*d;*`$*Vo{cID9FCphr5Lc)n)czV>m3d@y1p z04JUYFy);-;A*>rfDI5-DI-CE+-e2zWwJzw=>lT5h!vw=#Bx~bdg+qs8!_zFc^fC5 zSIwYaOol3RY8thYi-cA#8*5J09Tc*6(1+7<3v}W7Stnp8uU!^GG{N^zZBtx-o26Bn zQj&>J#GuR92f!sh(=2dC<|yEjkgfJ4E=k&~cN*RkyH}u}jSUmq><{#Dw#)r!F^&JY+SeE*P1m-4SMlG8*f7{HJI`?q)Ob z-Qxa<`$70KV=RdEzW}ls%_LBhTmFx;y7;c7l*LL>6# zmy+8o39d@C!4>=%)b$S~>FwKsVxoaWFKU9~Vvt2{^B)7zS=$-quxe#CPmzF^H3zXa zfV4-;FhmplsRWWD%OFJyb>g3XZEq3r2v}Q0@(D=DvLFEPqxl$x88Ey!D4i*34kza? z1Y9=36YM~SE+~yq$oFrlmbd`R`|}@W#52O!0atD05ld1S6Bqd;ZBJ*_d1*8b$?_+-4|phXlUvqEA7+;~K4>ob`g%Iljx zA@3Q-k@w#wyd<%{mm`t{GIDWUTCV+7W0+CsS|?jjCrf8rcobw3AgRy)ZA zRApwe-FDF=&1{@3xjfPnxoo3c%~76U*DSLCZR_rbAJ(}4q1#F4|LnGR`9ELg5lnGQ zcRzf4_dcwD=fhXJ?_ukAJ$xtkJnZgx*lEV!cs`G9-tVwWgt1G6u}g%pON6mYgt1G6 z@ohat`rka_#P_Ek(RfD4{i$sY*;FxHq5rkp?bQ9htyX6j|M@bH(DmMx4E8n@!?MZr zb#DnS>v{Rb!K-SnbC>Wc82Q%=ud21`#^KWX8(%_PKDJxYsPj@SfODCO$i={0!sdd-PZv#Ku+Z+)q zXXw8Rf$JN4isV1#gmc0ebY^qpvopR0;Kzu6EAxN#`sw(;R;#&w4&Rje%z>&a=QL-1T;8W+eMAJ-k< znIt5$t72@v2f?g#*owrpr^{a{5#{@p#;2z=8jpaji#RLx z{~__PvwYV4U(I%}n~wkKcbc8u{{Iq>i2r|+i1N4gB{}@+tbMJBeKl_aQL*|g0r!ci zxnbyiqV9Hr@UtLeoAaZ>@e?FmCon%z;VXscX9p!4te-8je%O9OY>*Hh5z3#SR5qwT zU-HPJog;gEodEv4sj>^@FQCsZs6Q!n1jHR#7mR#PhIm_FV+g`)n-SjQyn_3JCV4Gu z=gvgTb`pNBejy2y4uo6-jE-d-5|_i#<5ZY-fRD=zc>xM(-M|#p^)|49nz~5%eM7S~UP2VIj7NQ-9#SOzL_rWU}S;gs-_I<|_K*HR5 zb!)8)7)3?SKLvbVh^;maUQB`Xm}KB2Y00Tyj*T6Glf#kB&R7oR-#~3{@h;YEt>X_> zf}l-{43^f%by2n9Jp$iH%pY46Sa0T7HL`Oi^RaBUaGvB-i*hNc1%T|1R4Xi0Fmgrc zt~;rU>OW~Zm6Br*IaO2wM9NS>;pTZ!_u)SAJiS0wkZyOZh62BN6?k-wKE zO4fwPnAy%m9N2C{+ihsO4Q;ofeH$CvZa@12?`K;-?@2#J=RW}oDW(kh>;v(l`ID}I zSrz};Z>8>kZ#A0j?(Y2OB_83?F-#5iHe5b}#n<)h7=9>s-;m$e@zIbagODsRXE7+0 zC9M~L5s^1QpPr@ZDSUZDywFwU-|1Qo#T5WT#31$u;NuLjnJgq=YFcbn8c}O|z zo=HpgKuVhX6#yvyT~UPpW%`lE%BtFYi`Vq`<>R`wI9UTk_Hgjpz)PK&OrYnDp>wYg z=4d!KvQjc#7GdDkJ@(xT3aZ!_*SjQRvSd@KY-Fna*EuDNm5d)l43VE!fqAg)`#Avstf2mDE{7BIYdqo@z&?fvBfbKYT9E#AV!d(o<&> zADy!EtDV>Kcj2|nW!A)MQ0T_#lx&Qu|ED@b-n>p{hdR%1O&X~GPqhlF_Xq`f`Tfda z28(*~dY_p6y0!5#xyEhQ{N4Hl!2mj#EoD8*NC>BDndt>BP5-H-d1EsrSw6|9L@fm` zl^ra1{X)k!kDNKm!f z+qd8()s}?bs4{J38V75sI(ffR6sCN7J4x4naduUu^Kmt&XnjuHj5(}uHmP}9r}OdY z=we$}9VPl2AGcNg3Edvb{)9dk%3D+w3-v$Zo?#kBV&=bz+$nneRp2Z1zfP~8j{j_Q zJG=ZpFY*ZWE+DRJ274?9dn+nnb`E`AoiJ}wmnw+`71q%j3##UabQTm|70H=bZQ}sW z+);Y2fB-26#&H0{Y~$a9|NoGt9ibE|CcNdvNR_<&$Q=ic|hFGGZb2r%5HtDw@vvyFLo=(|aGLkx0B;g+`+AYD6-& zx5%F%=&{*yNZj)U7P)0@t-JWU!K_}=>T?_h70Ul1CLv}^AqGD0{r~NDGoAml-)ZdP ze_!O0^1m8vG4@-L{B3|=S?0G@W-Co8Qdawo~Nwc`|3NS+?3LxZ#n(%J_l z2`H)al4J|7i|egEW1!9qxsjK5+sDx6LEnX1pb(ZzXr~YC^nn-E2ZUibvn-@}+PdCS zZcw~J5F#`WQc_6rASGEKbxQ;Pc1a#ks3*RVx)KaPf=u!RuDT%VggA&VbF><@zS-?v z5nz82*M3x=B_{em=_!=|7S2oMfA2K9t!)1HUHtcpJh}cqryj)f?KlDDA04xMKuX0h7-$d?u?7M&wyMDF0zlJZ+=~~V})={s*TfPBO z+?QTRb@1wBOp(vlb^~&r!4D|*>Up{=kdbc3gm`QC0L5T7bOZX1{dmMe|1Ko!v?Blz zsP9DVKa7ZtC-xG2Za1UvL!e*p#sckdz(qFt_!|o{E(bf&`aj?)lK;ao+?oQg%KyKc zx&OV}>F)eLUgQyy{mq+`(`|_ReA0Yfd0$N1Qh{HWSV!X5W!1%TAF+!pVO$jenCb%H z0lNs05cov+Z^)ZeWxx2JX}B~JUD9H?`jsrTmNYI2|6EQR0udOo842<4`I)vqe~z8s zPbD#Kh=;16D*s6w0msxVPP$a+O0MsOEe81Yq*T6+Y?0K2=k4Uv?_NIrJ|sqScXPSO zC|0y6yG3Dfdu-zk_Fe2x756Z|z9thfnte%@w%u~yE%z5*?!-ekXu^xb0KW}M6qKyH z3II>utye5BBhjqKg4B)OCyqlRKhHV%vAk%#))lh<$qI9!{zoGAq@Zu>S)u>+8|_|N z|LgVpJN@q^9+Cg|*4FaGHTsAGNC5=nL}p;F5#I2Lp)vwfc^N$n5pY5T8FDL}Z>sYN zIkkX?#~}=t^|jImi)mLi-flS=d_@UUU}f6g&-qDvV<@07Rd12&U94h746T!&R}@?~ zFYo8=bX(CEu{EB_orUKuV?6dw~Zf}P-@l=ooiMNP}d6n|+ zn)7W;Z6pV>&r4wD+K;NlNEXmUE!o*4hCRJ8)m81B9YRS91~XLyC?Y=+KaSfJSs8;h z*t~uinku@b`j||KojW5^jb~;?@_XS7$!R}3S8@uigrAu`NgzWKGDEQxESZ^Q?Q!O% zGowuxj^-vAQYB^rr*B&QnL>sh;8N$DPB^$hFPOnrVn}>suZ`;4o8hTk0sEP6@#@Ha zyFD%bbU7;e^#07$iidRqu?Jr1VZ0&?Kp^}Cf#jZI(Z2c<-LG1(_7mgwhw&=C~RkZ6L(*-a@KD$Aaf&_!{_c%a%Ds{Hc zpX1H1ka1K&T@;T)N6g|fmEX$BRUr3NQ_`%l5d9Y65V`TnHfYJ671Ov37yACR0D^zV z%hxQ^ePG#DbSv?SUDcFaf}6KzEnPdo7)2tW;wpiW^-^X;v`hUPn2S}C5k~nYodQ-} z!g4LXswcsWP$oJd;hLX`$z4!bmQXpx%I9S2N5U?coR#uqLX@h3F?8;c@9H^hm#^xu_we1exAvkyG6`4QJTZ6;s@DPhEkcQA)J+xES%9ES)j=V{6YM~3 z#IeG&4b0b|n#}6OyoBY>z6&GM0-nPu8b+QsvO2$3D=u;FQ7Et1`yZ+=z)UuoX|EW1 zLD6*_awX~&Ijy*oYXRQuSo3T7JSgJt9C3FipD%Xune_ALbo&L;>@s}iVaigRD8n_R zok1_M4S1TsfqAsCy?(t8Uf*A@$#0+#@ z0D+GlfX8=4u|+t2_U+s63Uw1wWd#7k9VUBN6Xe3?rj}h ztQl3N@VwO`Xhm_+3m-GEfFXus4^f+2{y2m5m)qOnNS~yoGew93gtFrAgfe{_dfxXy zXHhb@Ia>W!hR8srAUcqLrl}!M@=_T_Maeqyd6&{RH^}W!W>=Nvf{-xc5YIkiuG%S7 zt24#|>#koT=qCuIE_tbCENZp9HRSlVcLN>DS+0_0%m ziTeSCs3`@b^H0JH%v0AX>Yo=w>lpCxC!pU0VRb!>e_srNOAr;Vlp*q#fcWBYJ0Pw; z2Dj##PC8=5H9h$g=-EM;>STRLT%hLA81f}ee5EU^D_mZw1p07HkuP;=%=UHLnThzd zGlFTOx01S3vsz&F@L6Nq9e z!uQm;1;jl76B3FIM>rQ=3=aS$nw3-VKzs&RxQv6N`Ec{uCwYMa#G6QWTiw_rmR~9W z*urQ(^($Fk3bN@M!d!3ns>;`8b$>s*eD%zJZQLs_hSfD!a3xDd!3Ho@TU3^K0MZBK zdC3XSXOqoF(mC=G1lEp*=HU2k4$@LWVU4LLp#9U&V0DDA8j*` zJJ%R-Nuc`%deC<`sS@H`acHyBLOC+t<(mW^k60xo_NXH6q1mXB0XIXOg%C~f{hEkB z0>AITT9*!FFPI+%+t6wnbKp8mf!E$I@J0y$Uj_F^PH|*a-#XqKF_nbZ>=Tet3?=8@#B~h+No_Js?UYt2Dkc+Uf6lqh zBq3}hJ!gtc*~vP&M(s|ff3MT&ruYA5V;BGb zB9Gkv)nJdd;{@)az$42!dZB$^6qUcF*EJ(W-XC#4*WF*^Ww3SU>SD(AK*D>EK-X^m z1N5*fIFBJ}86ndfI1Bs%g4v0GvCnmXTy7ZuV{p04R9A~fJN>1_+F+#bxI#%%+&n>_;DeaL2_v>peGi7;PLP2yTrkd z_u$Ky66>9eda2LhJ-YDOb$CTcP?b;<$+Gf%LB4#cgq*kGdBJU>iLZ7jmb~;ygeT{5 z4+$v6bc*OHPETa^3_(%*cParE37Djy=u%Bz!7kpfzJ>kEmx`1xRet(+#Lc;UHC@8) z_QiaTT&#o1zmC9JB>ydxx!Iq7MB^DD_osHS(Pk3iD*3OSzW=k;>bG|1KQHnKCi5XZ z*vZJUEeM5~>6B>U>xzlxxRncztLv^KO0I^IpI2ygy;b>!RzTP|57DY|elGtM=*}_a ze}-s^DGT$j8_CS`1XKGSPQn!4yHl{8l>4Gm?t`3nX$eZbPDkwP(rZRJsN$w;=C^^L z?QO2l`p!*xcN!W0pKfnw|9g=~2y}9=sT%C9$a@KhUs=9O z;IcxV%amP9e#_KaDR(7nY%XV|==)r9mBFycKKCKPC%y*}Dn+`TB(;;IzLq~x#(0(7 zbp;=e)7ck%lxgit;`0(d8RDLF&Qktc$m5a!*bJDz5cmxo2zwBkL>!#xc-UKY3fb35q2aBZt z5EZqq;q0@X9f9L483;>V7_bA{Y!HBePPgt`{w?q)PqnI-;-5BEzXxL@MHh&!>bNh> zj^DXB`n{SRd48eO`qdI=%(7^o_73fH-XX$7%LOTgxs_p+{AOHI5eZIyg%7+FVLCuX zLWZM#aD4RY@{kMo$sceZZ0_u`zY5W9DcK&T_u&J620()G7#0_>&p|0}U`xvyk2+yh zEJr_?q*4Z>WM$ZUk?7K5Onxh?)(X$OB5$9_`<(i_as*p2f=b8>U=a(yt(Q8NT)l}c zeRk!x%%Yl}i)15DsC#-YnzbbKQuq21o+|w>%Li-MH(_);&L2De%l5{mlmBPw|GS{4 zN%hF`L61)ZJ;MGRG>^3x;4~a1*}%w0!<%9UeftMMrVW37*X19&EHk(*v*<500Bs_z zaAlGS`^tA!^GDA3rFIQykiu+0h5^{z+3K`vLa}WR{1ytt>G^B$6CZ$%LA|#Eu0cO^ z^RG8bh-lOx^daL(g?LMT5S$9Q8PrW9kT(;7H~{7DZGO@E>+687E2Eo#9hx#hJEftD zMm4}Bq1pkxX$S6bN?;!1>7Q-7RQB;vOa_utIl^R6K>RV~9LF{oq-Y$Uh9tRz-SgKK zCIc5nX*J;8sW2F5tNUqf1;$c$6lK{d5$WDh-^BaV7Drv?BKlsf2=lQWc-F+yN+9Q$ zsZ7_*wxt5_oj$elzZm4ljsLK@wZ5_L#DCaY%Kr;_+Q|Q68q8S%=z^90I88Gl>$j89 zWetrV&QHv*U~f+%@(Tl`CG($T2}!~<`2$wv^Gt4Fk@0Jr`v)LE{k}15Nrp+7MLZ3p zo&aQJgkqlKpB9M26lKt;$y052w$C`hw3KkK_|Gvc65fs>@x6%7iW9YkIvqp)~*m&YN2m!t>@96YeG8fTai=q|x94l1j>g=C0gKDhS@ ziH7LTTFogMyn%O+g$@XktdESZVH81(-=dh)X@Z^{YBf#D9?lJ>(uc!a2=KUo;1)h$ z06)>;yn%gGK$%ODcZB6A#p4@Z&Xb{3rfoG=r?DQDnc1IPP%%tPJ@coq@ijM6>#SXi zTKVZ471~(47G>dSo0BY-G92c*)uvgu((KLCWj+lCTD>YH9?4WAQ1I85GTVeu3^RfG zNyBvB1{Kjz4IJ5>sp0uLR%Zawy6AYnNo2}h)bxKIXs$(jB+RNdy>WI-ot$SGFbBIh-yzq!VAxb5>B!~3Qrxbpb6-X2;P=GWGIFj z_5%5aiB~pk&Nd4rt=yzjTPhbee5G_8lw~HEVdq>g0i|M6G1D+lJm+U|rf$=*8Jwm1 z_@|jutVYK2W&k9~2;wMAVSE!bVnFxk!#t;u-OoNy?eVx{k*)EpI0!I3jOunzAraOx zZMAB|l?7a?d%Dgz-ELY+r5?Caqn!@4#5Z)5I**<>Gxn9OSjuB=ory z0Y__CvA>BiKF*kydB+c)K$ykMMLA3|SO8Ll(XF;^>v*t4^ZN%N3P&)FLTvdWvFWPa z#*hbEmRcg_c?mH%mj&&;t}Jr^0)KY@vRgl+ViXdPVDMhHe8l!jN&#`oc0vJu@b!(V zSK5iagzy|c$E;GIV`JPX83@?c)@3Q2h zmb9YF$0oU%6itI;coja5OsTHz+sd4PD^;$2QyFW$HcKI*fIJk*G-)X0bg)*b0@>Cb z1IV!Gyh45#nU@Ay*r}z|4g#tU1VXp4JSgg?%N)G)W~=g~;!s9-b~emW@|+ z{*h9dn1OsH5Jf?$MNL9P9gImwOPzTVQkK}&XLCvV9y=lXS{fobX>H4)zJu6x0q`37 zcon}5&{T&ko1T;(^p`x)>)SB*aJ7$2H}t|#gDbrhRz7l<TXm!-w9 zDPZ=~IGi7=s|vRUfpUdJTV4GYJ_P#7qG?wRIvsto8oH@QjDQql7#Q@@NqPWQOU9BPcOR`2DTXG#1&q)gEFNaWwgl6Z!qi1< z#wJy+GCA>QBiCk~9n$9v&Us%9rs#{feld4^KQEm&|MX9-|7VU+I=lO4WBiZx9XtN- z?%wXw|8pVF=NA5-d>Sm|{ugh`x&MW``~#N^>h6EZDf^Jm^8%QL){}UHp7RlS)C*v| zkN(Pns*}MmJa3FIkLXdv+o=H~x-u;^Pp4XX6PdoZ9+b-OB|_!4{RDnPx|iXx<*9@3)S>AF!Cmlw!UKefFNZZ*=;>zd=FZbL za&Cto+@Nt5$%g57Z^|`MQGVC;dJI{PpaAH{`9nf-yuY>l(?9x=19UGfvChh>8MTBd{W9JUD<4FIieXem-s= zAHWCm0D+a8?hs+AB>vD(t^S9jA&kcuhebBSApySsAr6RCfvql~I<)24)5MV+$50u*{{=XiY0{?e3KzK4h}9&TQ# z>@Q=#EMvbsdW2XpADv02aad7AoOClHp513G04pqD7S&bu71x#YjGbk3?JTTPwy4Sd4qi%ZX)0LvrZ@AvpCwaK@H9FCVxL zu|55JPfU2*sZTWA?wY96Cr#7gfTW7#Ep1EsqDoj1gs;zT9w|XlV9IpVvpZN6Nlc|f z2}OTx-GnoTz)-fCer*+~fjC!LvR9r8$@Xzi_eMhnM3_P}M9A|3jUXAqG47t_un6hY z^~;gfSuDalyh+l8B*sMRm6ZdqLP5&YB*`KxPm~M-dPL3@IjzgQ5#^4!VqM7fm$`r` z3^DATs;>=#;Ho=OXAK_ycmmKIGYYg33|A|b`B4|-SqdnEC`p`h9Y!$=FU?O;=Vhk3k&}mn#Q+lRN}qslzBj<| zreS=}qbAAG0;@IbYzWgF7PzNivg&g8nIH>JrwSFdLu&6dhgeZ-6q0E8#)+KYVp>Up z%jH~&^VLHRIbROsEAGl{V@oGpRSQ z%bw+CiKVmiC0Jo!e=B)AFI^@UYgi#&_jVU!2K&anFz$J!HPvH<^c!J9?&Kn;-m$;h z7Xpn-W>xURI8Jz;$N9A6`BTs_i9J*-o1cQ7RAJNmBFIbY_+JZMj9KGj@k%Gsk3J&b zsrJz%|6^F(B@vwI44_H=-`?7A8W@UsCEho=z#O$@5U|4W07R*3%|f_^jNzjq=p#s3QWEXDsn?U{jC z>9d?02oQ5SI}q@k^8@kzDbEnZvZ*>p&@gX2OMuH0gejg1`Tq{4us|{ctOySD21RW7 zPpSnp$^U!nR{qz`&8>~yrTo8$hq-MF?_560sTgH&L}vo`=4Pdi!ZZbBm|#Fu7_Dj< ziK!2K8uh&JCt_?&KobS`!PO7~`Ui`<3qKKn`hW}};L66cvR)})(JIVXA&PoY>XniK zs~}{drYicz$m;2WLQ`c;xRW??k*u~NSUt;h8gNhkuQmVaB`+dbXDFGIKW_)TZ;*t$)z+u5QS z_S-p+@W*2<4J#~}luW^pWb6tb)ebrxu$nIc00Q@hV zb|%odX(|o!zr5)&Qw*>M`G0SH-H!jYx4XHsl>Zm;Fv(us=b4|#FF`)7l&_|5tzfU0 zY9q_*<(tHJRd!m5y(HvZg!HmZiE4eo+Ih>aTu4{f9GBOjn*Rj?U9=BC;1%lw5Cm*XHY0T^fW3skk)CR1?SPg+pvIChzSXdI|9IA7K1T{AR!>c3{nZAj|yX+0D@4D)iaZ1A?mOs|S*^jhjfOP%OjyG2VEx)XS;K9S%UL-WooKFK(v6UbH< zaB!$D>XFll7Bl~|mK{saTqTM~NmUGzh_rm6(jKs&2zrTFoj|IChVEi5Db8*r`ykFR zYAaZL}E( zss2y5-MoMpW~2v>#zg@$l0Li?m3cJ*0%hrgfM5Zj6IlRx3GRnUG^B4w2$S>y;IIz` z1cKNG9;PT8a0*a7d7t=hZEn{dH!|Z8(#lKS13|@-Dd%JJn(`@~qM@EWo0qfP1Y1Wt zmseS1@(pvbYJ1V2@T_zBxKD%q=MJUg5xmU891jth@&LH${C9nG-9G=_*pzM)?sAfc*_Tt!>DUQ@y3Ax=tIrQFZMmD^f+xX>CeX!}0AN1N$+am%ZUPFPHls z4uU!6K%x%bEYE_Mc8@2sdvFWxl`x8yj0?zxtB#7Ly0knx{sxYYm#V;@_i^NZ;g7s_ z4YRvf;~X9hVRSoN3aAG8e`9BB(?0**-ddjjF67~YJso3koZYeGs8{1WO(HrOrj`Bq z9MY2M>T_ulsUHN~%oTtY{zGJ?T)Bl0j6+VL5U`^BZ@|K269jG`7-JaIpTbVa>MH!7 z2|`o|*A4xhYq<2TA_XlWerh0C!VLP!N`b|aLeTg0UmaRJ&LJIoD)J1h^tGZNg5Ks$ zGgVRFVESQ_mMJ}tBtbxz&aR|D*@%h{zlB8--lPz`e~v$ZB;)^*BH=@TR z7!oRCglPf8_(6M;f;ivbPFl_X2auejf?QDX z=27|o*6x<$|Fg5czU2Rlco=iPfMi@`7`#FE5ECY^{*nxa^mmR5fgdZH#nWyW`b8)Vqj8atha=9&d-^<_*kbgk`@=bkn|6lw9h>VW0akJenelZ_ zv|%zB24EcoDY_59Iya9PN{oodfy+B=>eR%%Z*5-}=GV3CVD`eL=cEs0wFHaQ;Bl|l zGtbQEmLiI&WVu~E8#;$X_< zfl>Ap#+X|9PYYx^iv-vt|84C#^55Rx^89Zh4^J#BH+ANHD@UEmH}eqaT1Lce&Sp=S zM4g}}U9Nd=TFZV7CuhxFnV0A$3h~1oRzUnT*+yJ$idL2<*Eh?RezeU;0^*sVUO|{2 zq5MHu0W7)i9u>DK3S-dgINQ14+7g_}6-|r4a}2uW1fzlqHvw>0EFr`MiUz$-qby-I zZfyM1At4~NMPls*_o1uF?1(g)oFVF~>!|)QMko*O+y(l37e#+A%N=W*^ zAYLLREJtAm3Y8*-ExkA?V8r~~2;zQF{E{#nhIa`X7j$ZeY6VbubWWf#v2alG;%bQT zcmy#B#u!SGG3Z#{=lb3$hdEH4G~+obiPca5GGt>=3au|G?KmF#0;VO#ILQWFyA)EY z(lQnF!xSS5KZ9IDV;+Fak~tcuB*{}*If0nD8@>byrN1&Bp$r1Vbyzjc%bRQ_DTIic z^8nXON{xMbk^2xygLfXYj35is}7;tsMb!rEmK9Y-Z#Ef2fwr&jR&iTsRMyctV{Xj?UvZm% zQ~|PjlIRrsHUvo%*B?umtd{>q;VnGL$XRiU(A25_+0*3zv$?VB#DCaW`u{BCY4T|? zW`QBzuqDJD9<>Fg?mwMmgsrb%U^-$<;syekkRdxSCNJs#cDDg4KtDwx+1>7`nqr+X z9}hY>gv&91zyitpgLD(VVGcTXupls2Jc1y0P!bNpB;%Lu6AbQ?GzFLxNe)sN#&oNo zz;M~*>3DPl3tR%EfR2Imf(17ZydM;jYAa0d!v`$S!5N1PV8EowFe0$%(T(~Zvg?Pc zl4t>tA;K(xgcjX^yNZgU%>DS65Ob%|GZ_oD16I=n6A&aB3E2O4w*wFeA_g59b6{28 zFFfZ#Yl8Ivtco$C9E`h=cFOXi8<_RMEeXDW6y3vuRWRg6S+YE!a?UNaa!c>iZ|iaR zf12E^U6bhA2y#7>`%feP-?j7qZtQJsF7y8`{XTRo$4gN53bej@I%C#$#Bx zZuS8S82L8L!T~Id9(KX;r<|KFGn94VC?^l#y#w+?Q0)otL1~CE!Ly^mz_e&uU6#Ws z%Mjq8(y6<7&;lociSX|Y!F$%whnLKUa)5}qN}%*Fr~R6X1j6_?WQM+48cISBeKzR{ zX$vz_Jg`d;CXp*l{=;(wOmne-dof3-{t|+59Dp3P`SGv?#~St!~No zlHGy2WK}&!$+h z5!TSKi~~?ffz`^|ouF#!Ev++up2si$Q!#4onw^dbLl8;QsSQC*_Me??JO0nc`tDNx zU&vFf&$4^px>jq5y+fFer0z@w+aq25{iXcalZD*6M<`>ibHV@F>iw;^9au78?}!QW zhgPaXCA^H1jHjNA;U{0=fD~iMW-{)fVz4$!vTNG%^_{7emuILHqR!jbUVy_qPai-C z3YdnUU<^cEad2$iJ2E;}=1crP2hVX}La*kxmJE#H=#By$o6mgm0< zdANB;Y8d@-7IE&`M+F$b3>F~^#LlJykQNi|$}q8_sxdy&V5_$C0`r`}8ut_2oOytV zb4M1SXq-i0cT2=7x*YeJPS*{jq1SKqN+e2mRVb!E?bv}ZMuvMO>> zcYr4$?iWzNJf**a{~dtfI+&*4!j=lLzJ6Nw)HXQU6Ru~C+DZzu0bwSmp7`0-eG8bG z$@pN_JD^=_lt`GGJ{n_k0SEBYTjpOF{LlNa`^S3sZy#1yyZ?~CyZ`9CkiR?sSP3}h z9k7~0`d=ph7VUTH?0IaO>Mod!I6d%ojHR)KB1Um$Hi$3-VVV!aY&?QR67i`Ug&6AY z87G7}rbwH|U%G$kvFqTpcg!S6SSV=l{I0Bpd!io-Z6C?psc^(nLU02$XP6XUDV&6u z#}~MHD9zYBirs{BhW)Ns9(>_ztX2G$68el&{;7AeEYgZ*Rkv|F*Z5 z`u{?nHk^e{15-P1*kXq;WRWO)lT?bvn4r;wmHG&giCel4i!8|oSXFa)cLPOa|4Po! zPEb^0eztCSAtTB3y6rRErZGvE+QxXH*&CDetZj@Jn!T}d9Lnaz!Pz}KI5V4-#qA{U zEB7uc<$hd;R~W|<>Lh2nvGw~zu)SF22a)EKKX}vPO&Xtuc&q$ zH+o+iASel20;w=e`1ya957w^Zny|KQv%>TWRr+%4c`Jfly zXpweV6e~Itg7!`h@+w=F5BNnk`lH2aQvnKZ&O?mtlk_~q_#PEz1m`hVe@dBmpP63G z)JKH^+0`zFyh7uf6oTM+00;sQM`6yd86_EkMUGPL6BCMDZY=+cJcncN5%X;qP3t-9 zFo~~5d8#9pBTNPb#2?fBwYBH?|5D-nIo{vd-r8Ja7_*)@p~m$WaY(|O5E}|$hA>Vi zYwI5vry~@@gE+zAO$w)OJ4Xfi1z}=0uQeCAQ1w%R%F6Zi{uSRuc0KxT-|DzU;nw|A z)AU|=!tWn|pt!d-4E-AlOv0e_SlryQ;-hIN-^SEND20XRm2(5kX~2rpWg>n+Cj*7k zEz!3-pp`*2J~}IuC14d>jsXfVi36pwt7)&==T{8^Hc7Q|<)pPs$|e>LFV0M|ORzc_YY2(-ZZwe6F565@yGAuR z?UL05HA>d_OEm?#XFCz!dKe2=P80kOhr@944h%@L>+rFdhd1&U(OeU7_s zgX->L$GqS=Ll29zycy5tNFY~SAf`;9CeK_u#~Plrb89ca?@-;T9gPXy6Pd4dM8;tX zRw?+7ymQIoH)e>45X4og&Ssmb)5nK>e3KM}V8dTO{i18s!U7)RT+0xvEiZ*s2O&$f64U!?FNR&*>^@s83~$j?I)b zD(cj1MNgx)Mbk#A8kL7FD^hYA6%~E!jmJ&$xxq7Zd0Xz#0s;FI-_3gR_t&q_gmfWN z3d+nkn8Z9gM>*9QBt~-m3m*gaO;TC^tcc7?*k6b03zOZnFN{n&gILi}X6RjBdacm&X3|5@MMvhDwS>&y6` zi+P&)5YKls3iFwjx|%ZdNHvyA_?kf(Y5kHiGv(?MJM{KcvCM$!JPkUh$);LkL@gJWFZ_x&B) zwv)zA8{1A}+iKj{Xx!NL#I|iTwrz8M^ZtCF=RY`i?%Z?s+3U5|HcKKK$Ifz{u3Uwx zN=6HvHEu#XrX7O={4=lL5JVeg=8;)1_4?cnnY-jR>=^d^o!e&u12YTapX$yxfco3o z!~R;M3!9g1*blM zbNfP-e6OV6mp#5er+oOMD{%myYjb3@JHMp~kLBvuZ10>rd~oedc2h)vnIH1If9eFw>DWQLn_?&JA>C%aw5=?MJ2X=b!F?@sPW zAPrFua|_R-AnF~U6*Z+K%=9)4y)^>xC2U}Z+6Oi6-J zM#(i1EdM9NBJoj-Rmo22Vv32M2mffjLn5Z#Wdid~c5!uhAw(lBg`I|4Nc$6wJiuI2 z2jl1Ygb_??J@_KuCsRzAc3(CXoE${oM zEV79CggO|1Cy$;Om^cSC7{)0bGxRA^0sq99|Aem<`C8xDY@7yu|M6of^{FS6zhS~( zcI~$-{49$@T3rHnJu-z98s{jk1vt4hXlfe9i;59G7OSX7ts1w$REE2Pb|2-vnghYs zn_EAk*hla1G@R!igO)%RDb4$kicF zQ~Bc0g*@%4cv-Q*BuaWf3%>FImZ5|i{IAH}%JMZ6PV>t)6btIv8HIe;q~S8}3V>uZ z&a0F?7^G?MtEFuKgr$*Zo$d=-Ex3!%7``B=TOb?fC7Suq>|IDS*wqQ@sVNP!OHYpq6U;At8f+?R*LYKy_$_z z1~cn?{w~h0qZb5HxFa>ON;Qfo+j`TCyz-5}{i^cVfXr!sJz#Fkh(cQ>nv@+TxmvhFIFkiiBdMv& zJtV;Uw}V9vu-|oJ@RsbfsUx7JXkJs> zDemJSSTB48;{~r}k&m~5Y78Su8%EYAOj6eTN5-zwJ_IgPr0b5VeTw<^@ti~3*ziw5 z3RDH%k%Jk@CSd>+7nf zzDo?tGxz21_G+20O9E9C8y-rn3a^1v-?pxQ9hyF>$FKZka0Ix2H3ceW^}6g2;OVMc zPx4##B0xfqK*H$Lf#z2rsvxdOH3l2B*BkW98|3B4O4iz~zlj~#NG=>>J*xo5d55)- z)!zRUptz~*%SZFCxKMr?;5DulR31;~Z{rTp85`|w>Z2qJH}k%z55G>t#Mrl z(1<;rDd<>@Be)eEWRwWbSN`QZrLy_XD?8?qmqL3httszL>h>)y1ZbGR8U-S;Fx$bn zZh+aBZX-ZT58E*y?w$NVOFCp~a%| zMJ<1H4Xupk(Hxp&%Wr-Yr^Uw6_FRE{di`n?h^@@C(PS<+0tjs{y&yd!0Th6x>yYU1 z#gT|Dt9n^g7uc~ML8h@_Rd(9@#?LW)DPsgWa3oHK;Y%=a+9=VV+D6GJfM`{3S0|s} zZb-4f?Zw;E!?9I5?pOS*9R0w3pog=k8+_vukmMhUyXRla+Y-zVsEDW(Ac?%jS4JLD zvDM9NyNUnD2q|hB7NgnB!4x&5mL4iuq%sm>>Y!T!!M9stM1lt_DjcTw<50s?PR*Gt zIF@ z){k-s&|DIk?>k%vhTWKn4z_7@1^l;g#f;0~0E^BHMAznSw-tV~6~_4Mfd>o}Nmk0# zF;a-u*J={K`5L`2Q0kFxIay?{u-IXj)MU(!h#ByI9ex1~yq+tP! z##%Vc1rb_<$!jU!N%?P`6Mqg^u!?2Soz&xd_KTzU`oxD2h}1jxZ-4^Rq1zd8`q}%U z`O@1ER*TFVzivi`!E?gbyaPF(Iuo#S%hbRml2WKyoSKefNc)cxNnnIDpnYJG=Dg*f zpPxcKH`Exd6n9&j3^^Gb(g1(>svMfhFI4ak@#lb$B2;-qc{mq`{Z~!p;X8_mJn!y* za6ixYvE{)fBu*~VV4Akcm240=_?gMb2I9fk0?n{c$l~jG zJ-OIWDl)9o03ZY`bQ^Zd}2dY8UBmJhg$ zB(ITay#e5@eijJ$;vWAAXGqzQvfY@4mMl?Cp`p=n z=|uyTk7%C2n$3O?K1xIy!6KuWa;=dq1ClAdcuQ&m5WbODJSm7{6-K_$U0jKOIX2!% zRnXRvEqQBMsaf!51rl zEbNEr+c&y?INsSaNpV>z4D3Q{;#qM>GqG%oS}Fv$l{JAT{oSTH+aDC3f1~^NcJ)bA z&11001B1gOchPe(6QN^VK#Disuo}%|qfjY6HVd!fJqK!HOS<*2{7AW*KZyt0c75V) zB>4ep%x#B~G-uH|^g6ee&DUypY>Vl4-ffkA;nFo*DqbdUw&z`El=KqzxYfbN5$SQu zu2`ZoD$3~Kgw0DZs86iW2h9;_Jx*WNhN2Yp4voH##)+%J;r7)R6hy4@)WU8q1)w})cH*1NEm&}pw9^db$ zjQrJ3`&>Y;uN#C$;BjeFX2L(eI`6y-f7kb@5RrfP;=o|DS}l^?S!%-m!uz=e!TZDA zw9h`eY-P!1aiTdhOQXxqvp+qruYqRBRdqwLPPZMt=_%aC)ZdA0l3#_2Y}x2%4R1%9 zJWcUBl&Xio+OV087&D>3MfzRYZ+f6EOJeI=lRsDx z(6eXmb3Od|e6z>*_pM+zsjrstMwqT*oN`WY8sBiNi#!5etZZVb+!!LlhrM(`{;G16 zw^aki62u7YBoP;wnD}gK(KX|X`fPI-E4bdwVy+EGul%9xxwS;ydfV&88oT*~*6&5E zvd0~4bDbZ1_;f5KZp_1OW|b08CiV8s@P@oCda}PWTvT$YxJ{ypbM{HFq)P%(@%XJjN}2r@~rDgP|Xzf)o%7<(&g(ETdCRJ z>JNqTAq05&V<#`C1DSJGGk-P@wWYhZ`(2Uh>}sIsgR@uT)rA{kH_Lg|SF^pkB9I@4 zwC^!IXc*Y{3^iw#N3!ZF?0v^`)a6%071nqZ*B$Nm6xrP7%v4)q)BS3G8aysA0tLLj zMq;`^eby0>G2wsuiN)*80RFe++Yb_U*Ev<@tu@Lx%Ac2zs`=RnOB&~39GRHWVcMaZ z2A49`8!I$7%9u=w`(;PuBbcuMC$Ah-q92?jbW!j7X53~nc^B4u`7od1{WiYCmdhMy zHcoiE(ju-?zWBt5CE=oS>yr-3!OdY|;1mG$$4+al&C|)(K!;{k@{+>wQKCnEEt?4>XK@ z&yjlN(96+Zp}uIQIzPbrgTGZA1=fH8m?eX^&;b+K5rBN^OTAk~_^HRX%MaT`V)KbW z%G>?y+}qVLY*zG!E%-8O#>I(CuRcL{k+r6cg`MaV#9YYetDI?~{%jZ|;qfV@c~76K z@h(Ifvt6PNmHE)~Xb-CMj-HO#zph1d;G0Rjapd!0Wf|tF=B#yfGN|2S4;6_o7E5@+ z=rwiI)me;;rz3lfOhmNxn(Jz$Nhy*I7KPw5weE4t90h^awQb8B@8K@7#$)Hp0-bf;i_P2wXzg!+nvaaUz zT(XIu47J&M>KHFCy9#ty&S?grR%5HFaldtL{a^1Bm_8?Dh=VdN{Q1tGUT2n`w%EV+ zK`T$AvHX}PwQ@e~>C-J^-|jeQ(_!ZhZ^@B^87-wnbHQ@$qe~bOcqWGlK0vYH`c5Gx z0sqkvbZD%W&e>UYEYjq+xCJRP(y4xgy4!q{;eaCs_xtz&CDE)OY=I#^BbKrAqliaj zgX$c+Wm4y-{8G-3DT01XO$>#_%rv`2<0#*-Nq4qr?DQN{v3aL`98EMtDE4ylcg>Lq zeP;b^2y{Auc4;m9INXbfbXTS)9c(7+xwuP8Zuddx%p=FMftIXH>>Q>z{@Csx@P6IWtCX8E-Aal0C1MqJ$n-Rge1LKoJQ~|9Pwyf`H46!!j%oUKDU% z5U@I4$HgX6)i4#ID3e+bS>i5%jV*sr!7PgSZ7b&@9vjHVX0TfEZ z-z{CAyFrI)FXP<^bEy#T3m{mczcrTLeps&m0kMuP{6ND|%Al;sTbRSuZuw&+p>XT* z1&J~1df>(VF)y`ZeSB|XA+$T~kSzPu z5>x-%)-Sb#%Y7oKy_J6x$q{2~-h>)|k{flR21uGRWBU1jtyMjW-;noas_UW???Ray z-{xIQdSG{;+d7>(-V`Ze1HTz3^qE}pGQ#{W835vZ_}lu<2m-fPR&?%w68zD9hQjR3 z>_{g@_y5Kk*!%@Oy|A)I@-!NteLmmhllCvtzeHZy19Kxx76xj`1bj=4BqS=ih6Q-| zOtg{UA)qHsa3;d)eh02|%nf*fF?cg9IUcnn!D?0(gZWWN{Fe65BuektY#wt> ze+VS@%%$el(01`omT^%qw1=ivpunT`U#ZVKkb0Rc5gYJ#imn|?33W4tJd=fXw{WBBOv+^|ZZ zaRpi6qTjbds9e4!m6G+&_dDZ7X!6Pe8<_b5yxNLA1lHAcv~+*~ygR%PAa_S5>U#L< zCTicEwh)QTl|Q`3l^rZ@+GbNL98ZY#^b;lW)c+4iNo-i58F4b7q@dNJz*1cMhI70z z5{X>>@;x`b^&6PaW-&g&BUrWpkWt}tl+)2}@EtPBk*>t55_I87Q))HMErA!;R#m^a z>oz1o2Vb^$P-EK%_&tVp8Ij?g+Q2$vZS^NcXJMDZ9R}L1wq)uMwvjb0t;|3ZTxO0{ zN2_j16WoIAav%#F%J0x99$-UmFK3C600K3AuMJEe=sH!~?hM-?+tm`7Edz4pW#A*4_=f^*u@K<$Ec zqG0rERPurr@JRiXQ2Gjk>J-vb&vPWOoQ@2*(ejO<{T0_f;hXJ#@djNLex^cA3w*d( z1F!1s4v)pGAXF@QK~S`yk6yH;@G*`cr%|E7RzK|YIu*uReZ!wgEB8F8Uy1|R6Nz(W z;6jJSIJuGd4LV(Ju`&ry+=c;8LFo&Yh|u(SKMy z@RJSU!EDXx%fJz_%~$?fOQgWpkA43jR3#g#I@ z8S8i`kGTaC{t*%4g&hdCs&Ma5r;JE0rW9dl0u)%rp^oTd{;XMP+i|$VY4u19j1-?b zM@J7ks%x)1KA;mxLO!gA8^KyDdh3p0>+3h>`wX4Gy=b9o$9J;kec?N2;6-__Y?PD-{7h0iY4|6WpsdCUeDk9eIemiYD-l zzR%@+Thi%u7Mtl5G2`}>8r)G~N$O*qE=p{!jc(c&MVnhu(FC0Cw_KAB>e%5KOCqDh*v1lwksw(rs{mTk%= z`gvf7)<8nK@mMooR_cdu5`!9j;Bw#*)6sxZ9OOtmo;u&+J){*|#&C3`~eR4GLj(*r2UKH70qrW=?@>ORcdOK+_}H#6DQg458q z!iJVpA}BkmUWTd4wb-wC_t2xw6QU&*=MI<&l_>QHTv^xgI0PQPZi|vgefe|z*hXb@ z^TT@0eLi$TfiyniLogHDZTl-8wJy3XUV`3S5Snys%>B`M*~)JM2@i82U9CW~J|d8P zP)OzuEd%?kNGW7(2K{1)gP%<)+){LnSIc-v1WVv8Ja)gRj8Ek62OHdQg{1J&lj{?7 zduyji_W0p%>T9{M3-r#M_&`PUMEU}95MR7{29CDfi(P=3TOPGTS9XDgd(i$7Nhunl@>*Z=Xd&n=HUIw`TMpW^dx+nwM_z_U_9 zFiS8^vd}5The&L<=;v|Hj>zB-#=m%Ip6X-@kQG~TcWn8Y`)O3xq9hP#NRh0hH0UV8 zzfuR$UZcZRMhnlaif*L|4yXKda*SDHL}ryL>8`e2piYDmi|~h8c`-grfdQe|K#(m> zM?sm%`+pcEEI4TNhBar2-mi?04@sXLY)R}$6`gU>fT(^;ML2kPWrcMAI^OJm}I13t-c}01mjJB)0jf z3RkI%l*DDQOzBY%Z&7_D^>KfA4iV!*&v#5-@{X46X@@wjQrQ6VyDc+A>kD6P>;`6| z+-FgcZ~f8sBn;R&>!F2(I|-TR5$+hbOOx<@@|HzgP94!?#&ZGG>0`fCk3sYHqR6=w>6xU4Ui+H!t)oCy)u!ZcHHE@J_uusnL`y&bE@ z#nmIlK1LJ$XVu0!GUjD*Xv}d0*HuXH#3Le?Fds7#KA)6nao5D(+4ZYNS&N^(t6Mnk|fL5}q7RU5Mr~IDKzk0C}LqF}1g* z@US%a=HMBR&vyAmyg4IdT_v|7xAtMN>D?L65d?t2i zaAuDhmRM9n{oL&C*W<^b)%2B=;FvS&V?0`(*(+57a5*lG28ebK?3HzTfNrRkim|(? zM$fd*rNj34f*DXwau>{?A4?KS0sSpi0Qp!b(>rtB{Uf*Q^6+yzlt1hhMVk|?H0+c47H^yC z8il>3_l3Qfo5Y5ab=e^{^SV}g5d@V_Q!;5Nm|?22QWii)-Wz%nT@j9+e~eYfTP^v; z>PArh4>~;Ty+~+Cu(i|Zh_%;$s9YKQ4?sT3cs)3r;#+A%7B1RA^go*IB5aH@U7o3m zK4ULZL8A((UOpzG@@2Er0bMS(wjs?zWB6KyB7d$PH#v(x;ixmb9JK|vxWZ^0X44eG zoR>iB`S3Y0PO+zFoZH;zr;AU2Q_ruKw2>81uE~t$g65821hV1zROgR(a?uvvg$cyp zGG%Az2XKjU7&wDQZj5r}2H<`{Dqun6@C?;*samy`DudhwY=>rP{e8=mV3WZ=r-S7u59f4RXs&KG2)eR z&_jf6wgi@^aO?m5`MW)^rmCv=qa}VM9=KvO!}dlP{456NU+~QZ=fiB6;Xfx3KeE(K z@f#qiQ!f`@qxWB*3ziEa>Vw`x>Igx-MNr`A{Mz{=WA0XWsEAS$XE82H9FlQgUZ^l# zn+_|95I+VEq%@LCQnOq&XfxNI;u`Y07g8Or4i9f4%0_ltFq^&sy;k z=e7!0jZYd=miY?>=nz!f!O)+GGAo({Xv{DU&PdF?=Ii^qbqoi*BW1u_^dO&OWu0GKsq%xwiVTTF^>%hJZU z8ml6@chkv|T{;dwzVlvYAF6X~@=YDDe>< zBi7)Jd6>b^p5>lnA!28Vi_ZQ3L8iu|t)f7}2pw8uP*a(APc-iD2+F7y;+#)muj}+pJv=YE zrzVVZFq*?O#t4s3S(ffq?hLG_j@>nmM7Jk(uB_cuU+sy{Zf9L%=PtF>B)fPnZ>;(Y zq=u`br)Zy)49cerG}(H9-&MR5OFK%NIEnP(m+2I&ReQz5bqyE!?2g~a)p2=a%aQ!d zbsX=RN`R>t1De{}E{_2_J0^jR@lr?r317BCq1=CtQek8(W}X-`j-H_QKQZYp9RO8a z4=_xIuLu_Zm(-xsXZ6~q7*Tw6bo;9`H!jr61R#j?Vhc5!ZQK%&?#Ux>WrDxlFKfJb z=T=gohf$angXz(4my^yLug&XlS&M@?^Sgezm9)GlD<_ zwz8Ug;1bGE+Z)^uB{2zt@v*Bh!1x19bkPfbi($@I>~!4e3V$v=nm{cmra#)Dw_bog zeXfg1!uSGJZrM%r$V&PpVx5;JE6WJ?W}iEs9RVC?{&=Fob6QO|{H41n3Ll1g;j z!L-Wi$#YuQ6__1@OK2}A1dY4x@(BX!;Zu?sfA#AP$KSWZSzoHRsw}Vcd|(EFFDyN) zDGHm&Dk~?>AkNvnO2u3&@qnlkbMJ^l=!5gDWpj%g7p3 zYgFkZ!-A71y7yj>NNwIea(?VDM0e&)aDP-5D+Wz{YRZUVgY8Hi&P7pVq%gxk+W`kF zYyD;-c&Y@Kq;IxwpV^Vg=5a^V`fL5v460wnhy>4l^1Mez+1)5=~pB+_RQ-A#sqre%-lX878)i=tG(gS4Cd3QCs zG+B{JnT=#jWLw@0>uH9FLj>uk|`8QBXs7j!Lv7bjTc3NTnox zC50I8NdgNC_AeoD$@bY|C!?{Cs#qW~D!~2k4e;6lR&lNHY5oCLfJ>4VCI4dM8c9D? z)|PFZ_c!+avU;N3Vj0z+&PW#c<%SUeDCX_79a#~>1TrrgGYlJ8nCGlG52o`_i!9Cw!T9{OO;ol=xYLlz6B0-1Gf= z)=OOGIbp}d2PvrdZ@UByKkyO%&gJ0;=cE8Sevtza8Yv^xVLU4SR!y?YrqLR{AC}yC z6SHm$3aCU>^UdJ@l3B%On#Hs&2p}Cn!|Vhi1<;aSN8OxZWPEHy-LXB(5cHwblh9Ax z&Ik+j>Ntst_3bdJra>DVxt%6nd95AzP)P*Z_gmgkt;<2X|It`zt z99z}v3i$6`tUalFScr*G>M-HB3seLV^Ji#lyoV z&$0Y%$Fm}Zw)|~C^U{@nN?6^}k=OE$6;ihR-s3%B_4;Xf34uEx_xqBzi|x=F;L>pR z#mv5tXbe=rUf!;cBY+0$_1JgMGq6&@#5-yE@8Pnoep$MG_5eGc{R-b(Pz_gr+ch4* zr(FrlX=Zs@Y9*U$5)*RNl$Nq@Q^Nl znWTc4<0C(EB2tza6iS*PIIKYJoF}}7e~E1R@4Bt^{F*HqYtdAA|F(v1!Lyf!nWWL0 zyT)|ZqsqPCmp+#^myc`fO@`*WHFRbGwR-oQN_}eEn#87-v9+2%^qI5$G~+Tb4kRZS z80JeqTCDT;m3YRDXuNCdnvgyCj>r=;B%idChiEo9QfR4u1t19IR+}9LrVze)jBYUW zV^N|Fv#F!fks^RSKc579!(9zT|B?yd6JS*mTkk98_n2=M`!k4TQ}52JQO!ky(;s>! zaEcZ}cE&kCX1?s6u0mXPIuz-f?6GvECE!e$);qUsNl+(c5aT$)vPX26X-#X^=oUp`h$nFZ7iYnrHs;i;0C!P)v zHcQTvbGPla>DgBj_&2O&GK0xSOtiWBMyoI3Pg!x*CXrXv%1i$Nn1HaV zA>nucoNs9}l(+nXb;BDT&whR*ViEz+q$e^Bxs<5Oxh!rJhI@4{Q1I8F{U~v{AAKEh zkR&On31ks=+8$exBlg6ZG$UBPn`Fz5q1M5jX)_bZk?R5&r2UK+57yPg#`lqbWXaHP z8eYK2a)L)#Q+>ov6;INvMF4H!HS`5dj2|ci{e}sCDnnYcZvH$uEWtPrFpKUCucnUv zpKpvskz<~JH>l}|dQFK!={OR2$SM%(DV1M&-7AuFSF9PMDLBVx5dSItJQA0JrYTL( zj((>)3*teIR?+4E9bCXlOd$_pz?JMjF-%A>_1e=b*cto(Wg5h5&j9Oggo zv~o*$w9phIR3}CItFwAmb|hu3WS;w~Tcp1n07WdNZG^8!1>QPusY_FgSsv4Bl+4yC zM{)9&RK1b!%2>aw)I4z)={Uzt*#$L$M{dKTt#&&%*0(72l3|A+IR1JWUywKs<~a{b zj>e+xjOfRf3k{3c$BK!LGPy%HfELUONj^MA7R$t}W9d;#o1oQdW>Z3;bguYY8vvh3XkGRufZhnvML>}J z+|I@)-W_g~gcKHnLv&0;htn;pH9Q~~2#q&4%|P3( z-*i}QIhj6w2yk9HF%xrbf5U$@^0KZcPOInJT$+BjH0Di*J>K}qkegq=E z>$~O;Q*}bxnA1)A!Ph%GXE=^L-#iK}wlEfv;_==UdcLAYhaF8aJ?JvzJDd)Ck(_#l zKwG{{=mEO$<~9Puk@KpF`=)C8MuD7v@Tv=@0ER%r*DP2-9rNDiYN?5f5fxUWoAR?( zR*3ydGJ^Fw@!DxL{BRqAjy)U>L9JhrJKMB0d(fVRxRKQ=NH-V757)_TE)a3iyj0BT zE6`tFH^jiQ;xy9BH8vB~4YkZ@Vg32L0)JHQi~8C!YwLoBvF!%%WYIGrlU$%FCVwhg|Sn> z`NV$Iwqk5-m4Hz6KIPxaj%gB&Z?-UAnBRJciD5A+yNE}ZCe?!W%#BQSxW;UowOnjq zjfoiaDkOYi?wI-qM;oOVCrz@FSMe~B9E`AH*^0(#7kS_z=Fm1Rk-(0Ze$>Vxz}@(Y z78oZWTcxvt&Phbp;o6T)+&~EhpARo4^}IDGan&<^eBG_wp6Ye|$K8VrR5lu15r_v?TkwIDxtw;*n~Vhe zN$F2`oozLA3W_D4w|tG|$$iRJ$4KK|*KVuYO~JsYlDqpNWFs2r=1Vfin(iopk?1)Z zG@f$}BxAo1C!!J`Rqs@4(!)FjK6lJ#rz~pH@~x}$d>Xvv=t9GtdDphKBG=3l>pLJ> zEgto1<6oiI1uUS8sp&{Ju%)3p8Wa{XG6~cH)jzQ)TmeFZ#`$x(o}{Q}|5%!;(FeJS zdhg?rKmiAbi0OI@oj-Qd_T0*Nl}w<$30!q0XWymn}{;%TqG9EQ8Ew9yYrn zjc``%*dc=HBKg#4()ghfh_SKfQGR%@rL^!>L#(bu43XCdbn&oVo&t7vH*A0c9q`_J zzOT4ULX?Pnl81m53f<#CTq%#^5;6^f@^lFD@eKO+P;kBlBVn_;GpiL;<|0WNlLUYb zfRG8WK7H}dREAUs$v(%8zoDo{;>?l->;K(aGc|GFg@+41ws)}5Z`S9qF+FC}0ww@* z$2oKzNW1s)CUXs%i^uf2RDwkS{Km@*ez+}ac=(IB1vzQP5t6W5h9q>iKk-%WT#ieu zj1^aG+E#HJN{Js5K>o$$a_gCNa-=e#@yJ?D8i8)u(LgNeXR655@?r7 zvFTX=Hym$>M+j%!x~)FvS9eBTXw>X}*31o-OWvV-tF@X+FyB*x5VyE+c&VgqRc#S$^<_#)$ax4}X*U@>Dz9_*~C&$lwPj z^s(4%UiKLD6vgv^-yJ-ZZ6Io)m#!|fECEGQO>LUJ9yyW-DfY85I%HPZZ@8@*u7dUi z5D4edtD2;OeS;e^hW(R32P`Nzft!vj>K4Dmp|(}o@Y_{uRYrx$6xezz*NemA0w9Fz z^|tem1oAY~x3Eh^iar_Gl+!mlTS7}k*2#@6x?}WG;}%E_4K8(R)$+xEK8>4o?G>@uKtxHm}0N;h}as68auESN!0Z7Zoiv9=BDCT zIqw#S)T~|eX-Lgx#Nz|niO(z%%U@ZDlvpPi6DE{*+3@ed3966M4S21-0LdP7IVA@f zLz0h~Lv!-&q=7Y`1}_E+&C(|1d8(N;#9oJ7rx-an;ABIRA$3P!G+=Hj+gxYbIO!p= zj9K?UmNdZ%Zhs;Y-odRms^OXbNIXU3J4a{QZ_KK9r)uFg6SUs{WvlQn=@@P_IhWpS zL#X94#M^dBG_A@d2uj1@5VqOhIkZ`Nmuf>>JdsF-%V8wnql{+^gsGK-eChKKZyUNi zW0O=R$w~KVzdf}?HPk%Zl|~K6)jxl3z*!Xio5562S3s`bl`}f~Ne~J($qJbz!^X7{ zFuL^;;7LKt|CoN>^1zt|Z0N+^Vrgk8K)wng<~`c+d0ZC|$0OnJ1hxTYW>iUC9x!I^gLEIlAw+kR~@>qLg09IH>z^4MGaDdSXE{0*8W`joJ$ zbSFOngq08!`s!&oy!pS#C6Zv^f`~8HmtpGi9qby^!$x{s54_qX#6{3)v@Td^->cB2 zDkN|@=BCo=+tx3U%It~mlEyuB3HsL~v8b}%V43zNtDIvCmO(*m{z@U#c7mzNG} zl&`gzMUWC3&88GLxsh7uYUk1{ao)VF7H^?w>DX32aw(obK5k1HpnxgN-rv9)I5fa> z`NBm$5Yj}48 znPAE~{jSw}^2L-%!2d zdLX1v*vVEO_2r&+{EMj+W*m#nDYaneVIty>EEStbCV1Q#th z1Z=lDR0Izj&XjdpJ7bdz?;HPF_TDh^q*|^^m-G1J0h0!`KaDS$V}Z?({D{Q*6p)z_ z<89OR!qSg=p3v|_l8--)K4Ebf87Zsr~{d#H)q%W z-;gJsNS84SW72S903wkOa@jGt#mZbDzx=)NZ(fqXY_~X6TX1a@i$!WhuMZ4XA9cJ- zMi{o}$nY#Y9<}1|2uaM~7)1FM`zbuXdBi7^?gfCK>!B+m?+#+?>SnCE7vDhfLXr0R zkurhOM!_MAt3hwpd}QF$)0iSeh3eu;^WHG4#5N>7Pf6MVE5)gnN#tx& zNU04@+FJ664pNCO%6@MW_$Sfi48>Me!U@QO-n?)Zo2}BX46;g3VN8}!k#nU>Opea0 zWaxKg)?!C$)tyGmR8|jz&>#L`g=)bJ6rZZI!-D(r=se?30-fW?!gg!Kh+ih1xVodj z+o@|~cKsu%uYVJuPn^%;qv!Fm7`QE(qq8rG=Sq_k{(y~|)D58G?UK90+A1zafGA2Q8h;ov|3;Vr2lp7PTr&7j!LHSjBS zzaiICm6d=3jmSS}E{$pxtn&?ib~VPkizF`M^-JKyf=r9893udgw72Jzuo#>kPU_-h zYV2{h17L`f)$i|5b0RU(&GUNs5}*>h^joSir!-noMcl9F3=NDNHyBinCGZ6ey) zge!_}RI~|@hCR*VS!e@eje5Y+vA@&*u{={eaWdt zzuc@l=z&}1$<1g61nGN+dG)n)5W$Szi0vw)a6iSTBcgx!`aIpMZRpTdB;MMp*pJoW zk1&%-?o;fABEC2wv7uuZ`gEdxUy`~&6%2gtn|@nAzz4HtmyLE_KR?$P>*-cJ@Vj}s z**mydR6<-uAH4Z~4UbVC)zAP4wMTARkx>;3M5B9-klIGUYr**)O>#5B87(CP({6ec zzDNwikoyS!K@i|j-NkY8%w?3N&bIFV-r^ZBNJVA(;Q`Je8B}aH9raflFcuOWqN&TC z0L`Azu&`_yWkTiiTbC6h@E>3RFp!JF689`}^V(p#g9)slyst6DB|ANpdrxg>8G*Is zXXZ}4*E)PD(Tr}Oj2%7mZwOuiqVR&h^dJ8q335nnd#&+VDhFb_cE~@iZ|H8XEC|Zd z&q9!nz*EIF+u6rOJuy7{fu$n4lOsNX{vdNTJy~5Ka6wRr$M+LtiR1}xN@YrZW6;po zLb~a8ylm1nxBEH9gW9hDlM0R0F2DizSOy6Ztc4ytUJ zDP1bD~I~$nkJ2Y=k`` zjHT~ftF%bV1T&>;hv{TncKDNFuT2Kjt zkNZ_;J!SnTyGPM+RKt>29$ZLVS_5gkz8eW4ehnJ ziYF*hOF$m3^@W%yJEy0aVpq0O>suQ?Cbo>hmKh;#InLn=&lS$IjteoGGBa)fiKY9k z0$3U>uj(a45;U1nmBGjK#*8{61MvWR4)*|s6eu#{HvD<^=lKdxjme09cBe~c8{Io? zZP`^t;G;J7l5fK~x=TYBw@VyH=`~44vA1Q;Rk9Y3jK-M~b&hYM{NdP@GvCs#aZA2Y|u@f;diDLrRz3t}SQse%7 z8MTkYI*j$4-lQ;^kD!M|AVz35=Q#KrY9VG9+;!XOhuNe9FxY|dBXgBhY(YXBpTIq* zPCx~1wV$)f=J{671^2G;28iu`M8^W;+6Jy~uB|qG`2TonPI(66+||DOZ?9Ymo#yFy zJkDGX@~(FY-8UW*_B>cptlN9G4|xpPrkZ`L02 zKc|L_0hv+5JYJtoLseCeo5CVX;}ad4UY;LpRqdg)xE(JoL!V-RuCKf);k8z_Vas8MErjM*gz-0 zpI4iZi7bf5NSr61abSmqLbl!6Rj z{oi{Laz_2%aN+va^?w7|A6)+z7c=Lh{|jIX)&J+x0TNL=YrX!@oc+880I#Ae zAlIsi74DJlA%=vk1NE5}On`0F_*N)bh6Qd(U{^N+j-pwdq}VD>QfwD*(1QhDbJK%$ zc#4iw>%m@VGwQ)6%<1%C4~(hwU=N%r_23FfQ|iGcw5fs~SuptQ77*I2zYY+RVgZEC z{%L@Gqp_E4Ztu}lef+ytQ&q>6oaXAKQcyV=)q6_PO69XgS8ddDXH`4J2+l$6w4}rZ zshzsm^#iD#E%ZNjqjGxfuQ~qf*50hUx5Z{b1!RF2NpvAn>5xtYNi_ z4XeeKsMoJp003WDSW5?D0BsFO>yNAKsF|k$r4oUhvlfHYO$R~N!GF<)IM)9Ds|IMZns{+`iAPGPCZGC3^nkLju>Pb$-!EUY4wsvAbt zmER3Y@o$P&Q=T->gRx+dxX)00O0WgiEZU7Oao?N!pp?s6#u(6Cp(oH#9 zO@i;-#a2eG*`-!v+gXgzT5|HIl3Bg-AI#z$B^g<}4&%6h7(+Zm`2WWIkJ~$YPW=D% z^`-o`h=(zeV=>;K3)FzmlKWB4pPqu|N%<&~_*G?owLV1NkAP8sk{ob{`4w-Z#dKe`~vRbJ!@`s)d)e`u3I1OKO^I}`8!U(Nh~bKB1U zxUsjfySL>3i+F7Qe@+K{F1(*jo$rM?1-PzlHacFNs#-8L?_67Kulr0W`WB{iq6RpL39C zdwgtykG)N@8<-5oFiCD;c*ldC5dM}TRg6X*61)VV+@cZ?9Xw}ekNi!J5H=T)9p6Fa z57yu>VR4H}vP88jPrZPiU|0r{ctvFypjCEbNw|k0Y03<7ufTc%w%u&R0}HL5EC{?Z z*=buYs5{_3E+^)AH1t|EYE4=hC1B9Tn>Ph)LzKrUBk;)kYx9Et1UB1{Bc=; z+Vh|CX1kxn&t(~bCi(AZ&zAp2dwctv^M4(WasCTlTuyi&i~uH$s$Y+kBXCBs5eNSe z;-IGSV3E@PWO88}`oF3W*d+fQ?Tu{x-{^1?|7R_am;U!A1Tw1mm?c4D1RHU1BMxrF z!HqchhdBA!<3Ile!;_Y%7(>DX%wZBoG+b`){{M&j2X6eola2q!S{_ak*?a>z;ow&} z-z)I}_Cgw}btD;r+S9-8R4+5Yn?s@WokJoAvU}d(X30H&*X(d`!z)~$_>Xj!M zE;Ybh3AYw{P0TeKY9Zzv4*9IJ~s@; zmL9xoxdM|WGq}w9u0n=y(Ds0xA?s{o-5gtR^Hk9eyUUR=jA(Rfc2K%(bH`C@ja`E{ z_04!S;JPH`E=hKQnXv2p%v0Pt$f>&XR;#q3?cT(e>Gx-@E_!{?Vc1 z|9!B3u;KsL@i4xg64)usdt&>o^)pncPO$qAZ~Td;+M9z^dpvKpVC;LO|Vk zT8jV;ibLi1d>iAkSX@cdWtlKvn&r>R2|4p_jt@~9W)Wh3IVCw3$q?@+St8BB&2qXe zJ|xW;elVv`almz1+7U^xM^isAR{}XR{({m~NEQ6bA@GjV7-7XB9Vr~zwO`0A9vnbE z03X0XuAB>K85dUVkaV8_O<|mf%JhfcI>Bea&|1TjO3?p~=-9nTl*8Nd=$56exxH2> z1X9s%bR>Ta^p*4k0P6aMC)q5CK!NZqq4~#gHbvzmPH#aH-yyp9S-zp)If8gsr}71$ znZQ{e#%rKW%_#`B6j2eA=D=t7!k4?LUr>o%o-J zoAZA?&sxs^6_kEY07&2sN-#Ug+256CIRG$CvyusltcLcYrrN{t3M;A$ZHe1C3Yi>7 zbLj!nE#TCsLc)Y4>|zWug?ZrgU#9@71%!1k6^&#i#90c9g|7RVS1224&ou`tzZSh? z$12x&DXu^}`~!JViBo0ZQ*>w?LrLMp-#QJPqoRl-#3-Qn zq4UZj(c@C7AwAL+mn`(Iq(~w98EUTj{1fwr6*(%mt09?{aWYh;`Dv$ExNUqpEWgPBcpzAz&SOhDU75b8k;rLQvavKRk2oZ{O za|}&$tYIZ!k!p3SxcdzJG%LY4E^rCL2@3B>J!*wB4~bNo7x5Gp3&+xfd?r|?)YmdU z;q-{XJkYE@bQxI#lQcFI9Z8#%i?QhZIrUPPt4ssM!qW?FEm~U5gvI`qO_QU;-~4}p z#$IfHVbv=ivR|cIt?-t6PzuU?g^4}`7D;NT8@TwyR?!ZTa->uAW07(;Pt{X@{+k!P z%d!9s=l}8EzT^LWe7LdyU(2JZJutVCOc9{D0&?JuNYz;-wc20D?A}6B714*WuuX$!thRa8 z!m=2_UZ%3mWODOzqmstZ*Ux3`Y;t^^3qCq7u|U4Ze3^3R?xfom0s>&2L$>XH6;0W) zm|xFs-||dA^<3wc?X`cprQtX4#xiTSheWRxZ$gE5{?tR5mFaM8@MhC9`f8+nZo`)-l*rOgL*jK}RY?q)W7^X*^{p!k6y#Vdd+y-b7CK0)Nof{&+N0Mj9(uBDS<4$BFy za3tkl9irM6Vp_ZXZgab3{wM`1iRJOoY3sG>4RsLZ~WIexWi zlcVkEd}#wA;cLN5(6WMBZF7w4`RaCqK^5}1a*EKa1mY%Kdr;~_r`@27P_c_Bm~0Da zl!=fe@?|jasD``G1)T?-GI>Z6?XH8$S-&l~7z0>>1VLQVxn>sqaSAN6AuaC8a5%K@ z6L_SJpW>h{tNBqQnKVBctw$P4%VI&DUwzoC zrhg{4Rz>PsvuZ67?Spm&rmbp$w`bfQ0PZ#{Tpi%`Y+Mfjw`b^D-WqO&s3_m%%$Gr( zh0M{9*_#HW2;nkdi7qgn(R-*cnc)%@=jxMX@V=GhCB9=0^Mcx*@a#hJE$yQFMe1z{wq+YsUo-%tu9S(I*J%6@Cr=oab)1ogi-GZh zgHuhkey=j^e_|+PFZu0QzlvFY=k}|n;M}5}chHV{+St*PjOm%!XmC2+agNdqHnP(f zEVGcVL!ChUO5NhB&))cV93Z+jg&l}^x6`{p4=`_tEiE?h*Dl||1f;>FhcR_xc(KO@ zs_crl=*YdPF?6q|;)K)?N!7sGNZ82D1 zi#ibYZI8Z6?Ets5Oe1?#FVMNZ7d$_=Xk8yQK|FR27Lv8C7)!&k#M`U{p zS1Jpj5x}gXZ@2NKV)NIw*!2pn1FY>M@Yh4=y>;7g59@zAod1(-igI|1I-7zu*nf>q zocJI6qoYmykF`9V$+lPp{U83K3+=dKkN712@-qOOrV4>oRtxUq=oYz`N&X|% z50z*`_Zq9x=H17Ursk0HW0hbn2gSMoflyKm)cJ6eQR82$s6c}=Fb#qim9-iaaGlsG z*+tigFbZqJO<#da->56aZRr(c&RFZ0I7iTi^x7b+=WX4~K=XSM{g@VVcbmRSytWB%Htkh9xR6O=Zo~ zv-5lmq;1oEQ1A5xD9|nX@*d?04AEJVfZ(71{O!L2vs7T&!5oPJeb=x@^Ne(AUGnQ}R-aoc)KoC8e^?#A!H(y; zob|?T%zfz`6dsg+gt!=aig&4>1nq2li{HAJMLbn^+06ze6ni@Ad8a%?gN{1Ov%tOu z{@uvoQB%*lv;AGTSv1yjQ)4i4f$JStrl^E8JFTlB6u`{Es|Lp zKE*>k4{6{@712fU?ZnxJ z-C<$v1Ymn;cr4YgX<=lohbD!2KD?XVpdv*j!oxV*jZ<90G(<0+;^%o54U>3`!bO-M z5T{@}N5vGTC@lwS_nPcL%|zr`RAHX2VACSCklyLiCmlb#i}oLn>vRSGJKoo%BsE33K5u4|lFWU(9J442u| z0nf4PZ&6QmGPmBh9kN_$6+@?I$DN4BJJ(YjxqHqqk*ojoW%*de|3eZT<^ z@6ZD9G4sxP8+Yy1U9UP&uRPRQ1=?M3e$txod9{$t3~bol{>uxI-fwHWuxjGzSEDv< zRo^(7vz5PMUt>2KZR>tj0a7m*(ROsr+*ek95WL*YJD8kT0akz5aw->>Xj((r4RWUo zNu(YnNj7C^V~=@-;|28^2aN>XNZ~TAP^mIP5 z_$ugM{mUD!J;X$r9e=-yp5N@M{xt*yhzUf7TtcOTY` z$)7KJfa z?uadnObuj&SsKF9d|Tawe|iP5GmHvjGApNRx)OMGt@t5)1Md*PvjTy81fnc0SrmY1 zmV2P2+hC+gD#d!aE|G~5Af9-28UaPuil zmQdBwA;&?QECB0J8BW6j$rS3|wOI$~Hg7FZqu!m5V3JSZC;)*f&0?zBcO1+(UBN+Q zBK#Z_Xa`~(-?Fqib6CV=`&O8ddjNA^4Qb1+^3bjOqD^hDUU2srxFoYgF}#B!Fw5%@ z%Ed<}JGyW9pg1H=~&`X9w+4O%0^G-_tlNrm!rVw~UyEIAYkUCA@ES%m#sPF+-rR z9Aj`B&r!;Py3?S%?iwcTR?dvw?ThN-Rcn&Qm-hly77I{jU>v6rh<%_@J%!P~1Kl{A zr5-lk!Y*^ucNc(H5lo}$v862s>s1RAp%f&tB<|&;^5D+<*A+jykfC5tE!(^$fMKiLm*u@G|k(6 zoFo7yI0I3P^8_wfCS7rcu*|`DmgiYfq6loGTM!kConn>_d~sSk%m`^%n-yxHBE~(` zEAUKoHwdsCixEp8F|3@F7TSA`g4dLYXhhsO6uo4|BzxW>X3~cLS6x(6e!`q{wF#Qd zFZ{h(Y(P6^uLZm3>ugZ<+N_` z)fG+Xuq*e36T8{&h;ab>o=NfkM349WPso_NpJ0-lDMGzu5a0&?&%L9Oo&SCBWRw4A zJrDQvS7$L5YzcP^qloZr8GuQ`}s75oe-vEEP#MmJhyY&)vFF=pG=o;bUOrp1Pau=|9_z=cONeP_ugp#*xLW2ljEb! z{$I;Ow+)-(^=y6C*HXJ)R3&?Df|BVFPj+eK?^96Qy`G$c{>?WpX=A5A^BBijO52b& z!teQ8@D+TXWhElTT_a?gXTE*kOf@?6wGLO>&9{dm89J`oh9WU!)}}#xO+7aDxr>|8RfL zj{k9Re6WfCv6hDi9DBv*8OVulU<&gry2?@5%c(-2FzNa@fT-#;`1yW$G0=4pECMpz7AcR zVBqZd?)oLTbSt`-@IRwc!}iSr;5>=TQqYw6wWz)wf7#(&(+=UMcJ>CI3whSe=?m7( zFVy5}C(yxgAUGo{Jr3_^e+k4THOT-Ov&5hXuIh))>o25^HjifW%-DmEFUBC&+Reu7 zJ;Fj0NDhwY`YQD2LXXEl?5OQH6}=CvwdG!w>Z`}IDA|WfWO*IKoJ%G1PF$)>1JB`U z8u|kf6v$m}?rN(D%Iw)QY!2>u#$Ywh=LEk@=|O3NevoJ45Cb7h61Et%Bijlms3Y&& zwYJJG&Hwz_p9cQl(R(eU2Wry)9vs^7 ze@2G~ha3KX9gma$U0N+GqS1lf_2^0UYpiBjpg?Ja3NOnK4ehIGRK2rgsFr(Z+%@y+sm#`gci`;@a*+wudn(v?0;pY_i*<= z`-l5`_WjSv-tlJtuj6UAw>3L%O%=t09#Qd^|Jk=P%QSxX1#(fQvrlT|d`>i6TU)Ca z7I9K8LBt%{8h^YJ?-J&mVU>Qz8@P9wToqzA`{N;Lkd*`p> z@14I6o{7H)f88>z`L`29{!5LQ#|MMDFtkrG*a2$(bUR^caW@2SW?1BWA#jo*P@KRN zP>+;!Hbq4ovM_id#7v({!`%(R1-tea2B!bH^PfYi4G}TyVF{)gF2V7Es)dJvT+*(y zLWNP5f1Sl&=!M)l*EjnNw6wH2@t2)y_XuIT9b@jgLA5C}Ommii^9!b$k66Z;VwQq9 z1y|>1zq|rC1NVrc0pG|6tu zkBwQO)BDeaB^&@BiWz!)cEv_gH!V#Dz_fx(pBuLo4`ly!VB3G}@0}c- zY|j66JT2_M`n>APt=q4zRv>o$9eUN5B-{?8fN69_PKUR%DLB%tApXpIyzXh<{||5f zb#UU^e;sf5|Ft~z_Fp}3{bg;xw5lzHhi*<9B4n|iaZ`jP7KNy?LGuz7{$dG2^gd7J z;yW+0^nbFO00iX!1M>n?-4(O=h@!p~FM;*;0tDiFO@fFm8Cp^U;w8$HY%xV?8Gzub zge4l!k}E`hy@Y6*rB_;%^9tBh$jS=fWP#@N6}*xo4Fs2BUcnCdAa0;2ZyToo0v1Mt zu1e`ch~wLotxe7b+ueWr_QVLlNzVli!R8!ro(B5Q6mzQ({}%e6y%R_OvwyI$|6R+& z^}l46F@P*>K{mG3zbn!G7P{Rnq0Obe^?6OSWn2ukOL6IRqLF-#7jmHRKedngof#>i z|L&ml!U(0m$bKw482a_h?8r9pV!9&(KErZF#;+Y(QnU!dac2js{oR+Q{!Rx~%-z-< z`1Xy`TsIo6WX4U)4Q;%p<%afQ>#ovbV@V|dLy|j14~VHVYb`F1E`0&GIMcuOiMY+# z`Nw-2&VLa>d?g{UQU2SrGlwOm>`VEzDL3>C>9+3KR>7spy!D-c29ib0` zM3^O@yPx2!%-&?PwB&BVXJJTweaP-m$HSnB{vUhtzmN7d^nV?XVgE^{d|EN( zs~iY~@vdvztH-MhXs^6G8PTrv?Huao2V?x1dnYCHnk7w{0jBGtbuY7M*n;0<>=w+w*tEP9tS!;iXwS~o-rO4q5h zWs5ZqPcjHT)!*e=^q;uh*mTE6cB{GcpgJ~Hb9<+n{a$`i)%2em&#ip>(@6i1_eS>p z&+*B@(T4u7<1y&}xtQ`*iM?DqkCw7)Bj}rq$5VKV-rf9*Qt=|2{twPluwA1_MqdX-?g;4G~J=V;jln? zhT}3T7TU`a-f9h8&XVLZOX84)yHUk*`GJ)#%Y_3>SuV6x7wpibg>f0hsZ*T3^;eLW zPOb1uUc$6CTS4VEVu_vytXtmDsXWVu;44VuG(u?!4qfNmu7JYgwuLUY2};t+G9c=U zcsNBEllg|_giomY_(pwWp^3UTtFIKdVYR^On{I_vX}z*KW|bk#L#=>3E6N_00Bz>M zfShN^Y>KEnyE>>^V_hL`h0r3qL91X?17v?GY!wJ+vm#sx2#zb+R4YU=(u%@a5tj?@ za&X!Kbyn4WaHzqkC)c1YkFx^cGArWr7NB(gpBUf_#LWHVhHxt=yh9N!CPK37XRt3c zHV9BUe>uxhz`9sw0#Q1DU1ZbMr;j((e)3Q{SB2YvN+bWiO6PsemEmpE4prZ=>tABr z+bXr!)hw-ES(`Wey^^7aAvW_x z^Z4a|Igp;!0PPq-8iDOs_Zqd!NwMPu|C2qug;Vrg`_0s}wm*bWa)xS|7|KyC18)s; zLeubxgu84UR+=aFG>*-J*53%XH8Do2E|~+l;sby6JG2NupavWatWMDm&B}=?{&WPO20thDB$!X;UB7{jeBNRP)ef4vZ&2sQ7%N70{B`{N6w{+C6-fVm{>tPsf2& zo-dUyG__6hC1fwA7DN{%?XRvwkV&83I)>PybzPSgIi5h#$hsRt1MDX=;) zr+y4387|+ln5!Vhfb*X`;_D0}pf9Q4;&SpgR>A0#H&V}DlJ&3kwzTLW`OmE2A%|pg zva+Dw%>teQ*d{!+fR6FhgMn3x+jGb|>M#FP2Nf8p^{OV7W04h`d3GCHwYt&ZCA<0y zK=3w8k?m(~I);ha7X8(kF)9m2xwwV>A`bxm@hNr_t!XiNRWH2bO4H2UXW%!opg4Ry za(bBoG9;Q6<_;||^%W`5=UH5cbV`PB#A`D=nBtT0uR{wB#Z;6*#hl1nAixL~;RKOC z*~Z6#EhGti-g5qy>_gIKQ+`rCHuDaT%`A8K@F~7#L_kM0AOA-(mg`~QbW`U>XR63$ zqwMlH*RB=SM&Y9wYABKKI5y;OfhgWM8^x&=_}tT;gUj2J#qk;rz(IQqf@xMzFZ~pJ zJh;{osdaX3o7M7;d?=(Zw7REG>~(&_x+DB1hlW#0s|oSoM&hv!F~`dx=GZ`t=&3VS zM8$QXL@YI0f&ZxNoAfRXIw%ZGW#GV}bu^q4u0egGKTkb_@VLX;!)d(qX8|L6GF*8d+JY~uf{g~cX z@TvO^AZsnXJ>}P9-@W8WTD4RoJX93^F;ARo`cK5Fvm}NXt*QrXp#S@O#|LiwpAG$A z%VW@gBE$kd=c`hFZTUP}l5dQmcW)k!XD5J9|2jTx9F|)PfBB%gxK(!CJ}LSwf3ib>d*g+%kv)Y0Gs5$gOelM|7-tbbN{!N$36cqF3R@bSK$n+AMlgxPP=|8{wdsz8z zba=3D%YO%Z8~VSN$EE+`cDaW$p!(|g@tgy43=eS@@Jsmhp9OqW9y&`vYCI3b8d;AX zuNA=c^%@Qb(#D_jaHyyMmlrR;7yrM}|E=Y5>Hp=$%RXrT<;BZKP4_AM4?*(@e!mON zzr1+qA)f@CMtV;Qt&RV$g|oU&1Bn+U{(L09_Nk};|G=nN-3q*k{vW&a|74T@XFZQg z|LL4>P5{36ALa~TICf6~mQ=FV73XiVxldIbW~dFhevng!0x_`fY1&k>?oq0S zRCi7BKqpegnCeRRH5jAn1Ds#=^go4Dn)!LPBcO@?@9#PH{|6iTzn;gV|AAA~2l;0{ zo{yORvjIE=`4_&uLD0(aL{@PqK6lmakobAa+gLj%V^275?#L?|t%>z)cD&)je~_n| z{>#{TS12q{`Ec?7_dW6d_YODlKi2XX^#6iPIUsWm*rbDBVqC6z7+4GG(Vhv;IQl*s z;_0nw-kaHt8$+cmYzHq-!*y8vwFRqra^$ll5xHcxtuPOD(Zy=xO$-=VZkP-KrilGv zaK_B3v4q7fDp_FDvm~J@d92=QtmNe_5!pM#uy<+znctyms*n}`E z2!N1Hjs+s(<&}?P5{D@8!<`kbqneS5)f=gzRZ}Y?!RKUS&03n3&dg`WV|3{-u z{@3+9^5&t(AYi_g^LS5v?_hdA`t@Fz+c`xS2=D@zXd2Md#v7|je*)4@`?9!%Nz%6X zEWa&agjjJSsu)cfuKUUhm^nDAC)tQue~OA*6q)1q3BneZT>9K5u$j}D$0g`d#WFK@ zZ*4#`6M-Fqnt7b=ZP;lPs|wG13Zu#{prvEd%;HJ?YdeOTFQl04SY%D4ku!YYG(Sj09gviUI(Fds5kYm1)kSpPdC8K!<9P~cAtR{oNEAxZVn7sVOEx% zyAeQhlv3Km=}rqsd5m-d@EoNGD<3mSmFd-*v*hdADiDm~z8WKJWjV`hn|c)S{&XO@ zj8$gbb7`zEup7wJ2GjLw14j5qi^HK|TdXs^o&ajYtF6Zfp^ylzuJt&Bt#9GQyIW<@H8D%m0@tj)v4Ra|kr|6uIflH)a*zaMM7?MK0x+d<0r<`&NwY}intIs#|C57}egA*Bx4Hjc%VXUCyv-s6q>_6@Es(x`9j?Cz55?4ZC@?z40q7J4V8#Arw&*6c3@)?$EJ<{cl!leG1*+gBMAIz2 zLgZ-t_U%bPRS{oeT*m2baLTnGv~PAh;qp9p&%xH5DwWg_yo!dcxh=`_27mt@Y~6ux z-=t&z*1TijHU=LH5wOHDTTTDTyqV(1!^Hm@9UkpF`9F>iHuwK)c?|l0nMFX%IpCAN z>M_uqk?V1s1kN~mJ`4nTl8c}*i!Y`!1L2JR}k>)9PN#E zp<}Z=8sHChwbMA24ye9HxSrb@sCKpEBgnoB9)7)}H53dSd-ZMiZpRZ)*@e8>)<&OD z%e>vR?jZbILkC%*jA!UNYb@_IqN%r`*=`2nD^;y~t!iqA>vC%~1}^f(U>Te?Me?PS zskP!vHI32j;(;>9jEDp-Tsn2Bg{$tmt)f>S@o{Ij+Lxl4Q+5x$H}DPtJSz}LGa5t- z1mz@7Z*f4wn^UHtB6dF6Pz^`HiUITo);|5+aw2UBf!`Br`QCX5o0h%%BLOYdI}eU7 zV33osW%_{Duan3}~PJ`?$(JBAK!ff!n zOT+w7xI8-kZ<9S2$6JI@{_67#CXMZogYX||{JEjvpe`SXCG&lBt5Xw{37jL4rO5)! z()jZXv9Oo8&K9K|Og@a~Sy8^H#Iz-?o1ld70uH6SMdhVvYkBbrNLyv7E~>#jOiN64 z0&yAvNE6S4|K|l5?d>0ea6-W+V(%wB8SB z5BikuJ_8>numpI4!;+f4lXXOJo)u(H?tUk0RKBW3O-q>MuIAmMt zxA6L^Vg*bmvLHp}FwW&0FLz5(J(-Tce-h6>D`e|KLU+WKl}P521oHm{VUmdBLan%|P5S_>@v^sdKtd zJUO;n4p^^WJ$QdArnBT8E^q*Xcl7Lk6XPi?!%2OrrG_E2O2K54T;EuhPRUdcpiOnZ zeS5-7(W?Xh?q}3>IE8oUA}!w)Z?mjo&Q)`Irz}HJ1LiE%T>Z)S?b{RgtrM|W3sl@? zV8fa?#{9m;(>eHf{lr(r9S)~jq#5?-X(LY&-v`MEK&1NZ@`8O33hCxe`^qDG^UiTAZZ(2V)Z-`y@O;_dhCSyfu3smUmz-SF)nW<1Hh*E4+jT! z{I`?i{Z0JmwLAv>f6t~|vhL6S2Yqw#11ddbi1@wt78 z@+4aj$u`hU8$obY!V-;V2{Uxuv2~Z*WaSIg$bP*sC`zAiWM^D_WSw1uaaQ;+;`Z2# zj9jgq%^Bb6sX6~=X&Fz^>f&G1`F}9lck;jPZ{k0!=P}QJHsw8vfA%7Jylj9okiIzq z-a}i_Z#gEw8ije<3JAU%BhWW=7h{m6;OhMBmsi8#(7L#rK>T;)TB$OT8U*o|bF#85 zb6)`qnWb(ke~3evEOnP@D|5FB`x;K6W~*p_^(Cv>$7c84AO`pFdxC#R=W!In_1NNq z;5MHzul#`ZOFG%T&1b>DVyMt(37TWvvHJ{6$}-2NySuk>IhoziR!FH7;@xQ+MG3lx z1=_tyvYXw#n{l{zG&(*G55|8vx*5Tn!w??AzZ{PakN+|nj}8y^4x*cVw2O;Ss~j1B z=gI6gPVw&D>;@GnDiQva#OdtI?yQUxJj@sW@yqDgyiL~D5+7{c z^M5#;plFsbYq*Eh|BMa}4{iO=(Z>I0J&(cvU5P30h4(WS(4%GitWorR!pY_zUgd9$ z#4=TtP^?eg-zzvqrOj#7{;8q=sG#?IDh)n=oM9G}-08u%4u*yO$dFp5Uz zyPby$PF*vYC1X@~Xt5oFI-p3e@WX|!?rR-X46%*9^KEH1H)?a214}T?Fe!Xxk_|>! zA;$4-%EG@vilmQE@%0e=G%LZ!r}JxYj|x?)D$1e`R^4?EN8*OhTm7lw|0b|NmqivL zrsKmo43}d8o8Hm?H|8IZ)I4l;yg>h&2IjSlL%qv8DYS1pv-dhxX! z2{rUTOHcv%GFT}Ccmw@E+S_yP{|@#y^nWdnN&nT9uT1JyQ;(Oh>tpDfjBAa%nf@Mt zkZawUnqKWgOR}xt$+M^$7$50g5eli~_BW*HII}>rOk1*?)X7+&bV8lChw{}|z}4;4 zgI|S?HK4ph3#~5s)v6kEZ&el9?^adOcubbGs>@%rs$6D?I2Fl4R5;VmN*6u4Rr#wg zF)ncc0vgxEjv;Sb%u8&lw(Q6`Ri@(lX(K9kv!2(wlz%s04p0+#8Xj1{E{D3E6+HCN z9a@MeM0D;3-cbeKq(<7f?$F|zc4)liF4lCY+wjE3}ur+e;UrE0|s?4ODXB|(S{Fi4*cDuOB z3k0L{EX8F3j|LpG{Z|pzU@)+`8^^~tJ4py}Mh=s$-5%n!9hT24| zMO3U>1%`B?L-mk(L;3}WiDNO%vRLUp+vGA^?HsGx9@L?j3vX;ljMtgMFIRWy{uGR! z02=u3A1Q`qjK?v&NzkdZ%|1&P_i#bE0EU;p6P|~9o6wbyhgosETfp!xcmhBIZ%`r( zT3EO$8Y}G=@}9@9;$y4azf)Agh#G3}c39U}S(+96+Xp(^=9iTbseEOIake|ja7nG&{*1WvnG>;X8k)P1hq8S4 z^4+P*_(_h4=KyEm9)S?107enO*^~w#jU#r+1dD8zMgT#)Ae49t?+}>AxP*5I55X_l zJq<}@s&R(kD=4%7h0_Fl1t}lp-eb(Y|06ur{NFrFW>d7P?*IQZ=l|J1I6ATP|Hp^N z8~y)U9)th;l}-7o%pPAkkCwHQ@b}EfnFiW_&}1g5nZblFsfSEjqJ!s2g6;rclT=u5 z$;c|6`f``!sw6f*Gd1SgPy+dLvFz9a^O==v0JN|v_v8n$E!w$9KDT0qvogz3F^w_S z*l%DNGF#d5lznbs*2ivo5PJ-y!lkOR3@uc#*^Z3GLnwl)rWTsX8bDmH01Kv@vCg0hIG zhEU|}3Ps@qnlcBLlNG^L&8z`tk#cS&h(#l7fLBYGw-U%&J8OVi~$-FEE;(zc-=gCEnWG3?-Z-aJwy8v zYyIMvM`kq`i=j3r^h3)1jEB0A#V!ugWWl*G7={SrH(7)*<;b)?Vk~Sf%1MS1V39HP z5dZYeZ*e&}ldWi~e{$ejT7Jc|YB4X(1}s~vDTS;)D%d<6YQv~rSaO+EE-;UPP1fAF z$fo}br^#7SP|Y^5jA|wjzyIx>o%YpGPE4s5f{kX!W;BUlI0eCb1f$=IxJ2(#Z;D9X zO$BFuQy_R(!S_~f1j6O=X1!3^7cqJSR2u-xSnH#j6Dk%FfsBYo#wf2@E~Xh4F0LPC z2iJkKjkRp2)ptdW7f%DQeOrR7F;LTEJ(K#4J!+Thy)PlWn-O;s2 zifeh6emi^r_Tuf&Oyj2E3||w3aN&ZQ=y8dv%=|dy=##_d#$?m1AaV*!!3gkC3Z~oS zx?8Q9%|$@Vr&9mVkB!|=lJ|V5{2xaLd$#}A-r;ED|GSpQ(Ep#)seS`d^;clq-fM$-SZlBjwfyMYx*?XV^y8f=#LWiYrqs7)ix4Z&!^mz z$q$zu?1f!UP$PU%yYYTPmR{kCLj9<@oA4{OB`YPDf6Z-$ntvw;D7~prBll%@g{+dR*-^%9_J#0Z=9Mds>}fT65}$c2G%v} z)>e)i*{3cia&4rcfe!@lvgUZPS>WHzkifdeP*e%*X)qM`uDkh4Q}9vLmWq1PLA9dZ z*Kbu4OdAz1ywz)v7@@I{pp2lrL~f#%_F8kCOQq#a+jZ$q=`U?3@oa}StpSNS)=?|m z8U0sdz%ft zy`Yii5WYc#1dOv{3hD9t@t?uo$;rt-0|T|6ueH9d0Z}_QnI+IqjcJ8Y5MpLjWmi!J z_4yFE;UBay`0eufPqE;Ij{#r)PV*YHafznV#-9GrjlV>)$BMf?>NZw!i`U{zr`=Ic zB3H2W-F1pyb68GR?v^xC(Jz0sBV90P+|D~Kz&en%NHeMoh0HBfFXC-vx}Kh9`H!hV zS1|)?vj0CG?c4s}C!^6u{#(am$bW3A!M3>58}us&Rw~pVn-C}l(z67(CGh@%tIBQm zNK z1iOK1&zq~gf+64lR4dMc@-qOzRTkdSlyLfl89;iRUCcpQ-qR*6VVU8U5jgaAI{H!bbaVzNOA8*N5ysC; zK2=S*BNiAK;9m(yW+{!dJGzieNP9nfQA z{M1nTX8oopif2sLfy{ny~HTLIWEvn#3rWUx4)Ew-3Oi=M8*_SI}Wj=!LYVdK^AR=ue zFjX8NVEk%XmEX6*{vDP3WV{OW5B|adwE~)UK|LE^E7z2#PLn~Ex2PVrAGvrF;*YHr zX9|m@pSMYX>7b1=H;#&I;vK7Bpz_*rks|>Ay8FHWF(L8)(k&ye3Z)&}gS`_fr}fz% zJ_INZ_v1%~>HEpcU07TsrKo^KN2vBEdY93-`bmSiIsV$(iyf^K8BZMlok<*663I#C zmLIqDTgz4#jbYL?~Q`~lz*c=nJcpYDU%9+!2lRtnPu5t6IM+JhaNT){VxLBExO~TDbQ(gd&G6HgPhkF#i*V?YQ{Sa(l zy4SezOiBL6wgruFJ}_%FeKN+;44XWqi3B?36OxLJ+{M_+k81MK=$dZGs@}qq%m?*K z%BV&gQI8t-sJZ#-ySzivbn?%Kr`5Rpj`=m?K!9-N4gE@h|?rs(m<)E5BVe72t^sOZ~Vrd#q^xTV7)F zugYnP)}_3?P@-C`@Q6^Y%oFy}D$~h>DO`zJVpy5WR1M$Dq1sk;{g^rk7~ zmQ@Uemfz2g7LE2d+i$OQCpuL$6ey(JzOcId*XquIO_EluuKU^2%eS>lOI)waD&);m|A}oBRw^TXQKJn3r;BHr?q;#j_o zF4QvAOzKbpOCMnIz4CQ{aEHdv`bL_7g)7Qw`8qvmgErwHe|bLk(>3!ga@oAWXb zV{r!h?;!Wt@EBM{Fj(OM(lTo@NbXao3ztj5m~-)^M}2Pc=1r zXdOfs+owoP+X(pRv&X1M-deFJhRqb{EBa#u@x&^9@0QpHgBlRpZT4VSM2NokPU=?X zOSJGX{y2yt3^FO7rseLCrsL8v99@Tk$J%~O5f8C4z>~HGs>R4A838=9O*UdxTO5(h zRaHUMcnNb=o6@2QK zMIT>$qNdXVN>ZkzYPCC;g`G3Ng)nAKvM^y}X11BR|84U#F5v8pnpW!MIv58wz1DZ{ zP&dj2uadr4sRuI4@gHY+o>C18f*PhZ-rMxubel&WlYZBs)DhfC;9)-sMY8z539V)S#Q zQv&!90y^;Z4AR1jG&Zv&rzR!wY>(&p&ul)@ZA}N*C z1V+28b`ICZ2|`B(l?di*SlWj8+9`tYr@WjbklvGps%eLXsU1QdA@2Zz^&)Q|DQ@zV z4Dr#`&HHa0e>t3wErV7U@#ZfpQ$H3v1l2%~3@XdWg~V%T*GHN7=^(yeWrzJouV^_~ zPsH~(0hb_TafzDG?GcbS{a2XG>Gj-mHidXg*DY@5C@8wX!X~cThX_8j124I43f@D8 z6sIIIzs4xnCUIaTZ*#fNW{GALyR`KfF1q@gi19Zhw19Pk#VD03)2Mj2am|wW51M9z zhU016=CegvQ2O#N_&$i}l9-V97Jw4>zx!S(bKo_u*eH@aIt1_MXa7no| zNx3A`eD&zLeBm(<)lCKV;|7KzEyCx*fd+fR zrC9;Y-zp=yNkd=Vd$$@@N+@w}kY0Fxftqz0xfcMwa5SR%_YZB-Tv-4;4ojmjKVyQJ zAQDR5Ev|0J+A7P37Btrq;vaHME&4X-0bGX0Q%0B5DmGmsUDKx*f)m1T1Se!E4#`aS z$bhjJ@tk@uVC6{ndR_bEygOm%VD0n*T%Z)Umah4Hr6)lmGDG7JX1!pU}-@HYWxc|vry|74dS&v0Z_z}YT#eCme9%nVR} zTEmpyaK7N>B$;(DGXOQ7|OGaOnGWp&jW8-SjwYr{1<-!$MBMj?qh zRBR-(W@K_sn=s{WW=cA%$pO&^`O6R38{SC9fPD-%<@4q{ zA}KAAM!CaK=VDC6d+XOPJ-l=T{|fzE!us^C?VG;mCuaO)v^Q*fk7#)4I6rQ1+QB;k z^^cD&gD$=zs<(jUubna=mk#h;hZ}_a{{1R2Q=zH?G_ptf?OWnWvYk%_i{k|%!!J}P z7+PGj?HA-2XP@&=>o9bTEu-Jj@zxj1P%68rjuWSWkZjP?Ptf{9558>~my7$!IW^k2 z42i{#kvSWfW${P<^zbPV*YF0-2V35}_3v5Ik1AN+@C%Z@CCd+eKczNJnThg%M_94f z7hJzaa@8hp9@qGyS%-1@e$-Rbk$6XrHL!rPQ@d|fU0^LRJ;1;9I;R{%;T%`?g&-Z$ zUin(5#xeWbVrs?1yQ_^VOu+vxWj})7De5_xQMPtoXnC6`eBPAOx);aN+L;joYZ!>N z3ko_0`y!M|l4in-Ezz)~V}8WACak%M@#@y;TnOE$1k^9X!*>d-Ttq0Z{|pHhi)o`J z9Oj7(-HG1KP0HHk>V_uff46w2ocs>8*zasnt)gY>sAs}Uu_vH~c`C-W23y*9aTReC zHsnxABQ`DuWhdpZP0k|A=0p3dGoMx6_{ip^*El6lO$4-18Uf+wMhIdxaAwJkVoK4F2&8M;_|MJa0xZ&ce?7*2 z?_7m4SubBj#aao&Iv4D1O0b}gbriGx)|gU#DEAXcprI9bXX7K`9{Wcl|^c!(h6G4`o9A6U*`p(ebpk6)r|mTUm8Z1bQ$zB)jGwK0&57tSY@ z_faA(!h1bO+4-8j$1Uc5{+FF#RY>-3H8UXXN}j4LRMwfpp?0ZEhFllz}Za(6_|XLL!>Zkz3)* zEl#))E_2)ThOkDVy*ReK^~XkrG4z%htwhVucE8JTJY?oyfEQi*kP0wt0#kglvZ+{l zVN25B&U1YGkY9~k7!giOEY$8>D++U`S`DkWpRk;OnHL%QOMf2ZH*?cjN2SR*xK!e# zgR`x7cJfrPFMF-rB(KDpy}J;U*>ix!_-WCj*_{oB^Z)=jY)628^Q~{seL(^)y9m7? zeQJR??D?(T!b||HLr<}D*w4%73)F2L0?8aF`uqy^Rp&D_QiSy2fLXY>qvFU3YW@Ex zGb1yyyMMLmWZ*F&*#D;O6%z`+?;2%Y{%*Gjo8;#$CR!%``=%wT{gMX%;+w@)u3miy zrRIm^a@4|aG;bGvHvOPGha<=WV=;7bVN_oS`R3gnF->$1(|CE$SL%ez$MCbK%v}z0 z{!idy^s&1oT2sR_$RvV2v-D8K38)fS_YNnnG}To!i(z*;h47^qAAR=@`^uP}yf`|4 z1*&(C1yp=46&2G^!nAC z&rKHS+|i+`tj@TH4+VFXlM01@n#~g=I2`f|)1=KLvdp0WDhyq{ZiD(cCPypw+Cl1* zJuXi(zRnij^`D)~-(Ozq_x>Bg8!e*eD`_;D5t-?@S$6(^N^wyT4nmP$Yn1RErZ|{hf?=@9Dj}dfe5Rvt5Q0AeHY&nGx zg+|<4#r03_IHtVJa*q2`>LC<4sY0?WIG<4HX`y9pZB?%a>oV{)YKp?si^)8eX^**( zmHZp{@^vwsTHIEDY#3(k*Ua`8V+Bs_IZhjwk9_8aP;mfN!))J#k>%*e&a|CA3k!cx6P+Jo?$mW_&8KiJqCbNr5gvlhW^U|S&wTs8~)@Xs7{C1?}1iP z>P`~Fck zCVX!gW!|l=5LT^dfZGhLTF==!_c6(9*T;(!3nd>C;1O9$1Wy<^uUWaE;#Zk_K5tOTRe1CE@O)6%E31+Ly`M3@MoD0 zbenL4sV{H?ZNpFmf%Ygp%TUl;y|TeuQUdX{5B$IUWJgS>5}-H_rv5wT3Cj;iaCc=+n|x=pZ#wyJS1-tz_-t;|ASy zHG83lHRsXS6b02CSH|L0yAjC#E)D*e;I zIZd6I*}%eZnVt_tfbKVW+6uRfl!wz7l7uZsi)R_e{!RaOgEECc6xh|)wC~G(Qe@>s zOYU7CT?|omHCA}UCO=n`k*3#BDP2iKyp{A>wgbZlN7p5;N4fVf-_By%{V*mZG{MJ{ zCkRFK*;a39mM6C!fy&Jv&7GJs6O(SNIgYt7gsSNC__FC@O%?29xhpWiRX#~5n?5y? zNtVnW8n-Ep3#lvONZO%UGJS-cmu4>^%_jysc^i_GqP_UXocbrOS%2FiQGF%letnc%P0;sae#s-n|lhH(P~9;82)m8Luu1uQDjQTJWnM6 zU2*&SJw@G(ZTin;P((LbmE3-P#siX;tr$(?Edg~2EEs<(4?M|Hv2Je8XqT58u!_a)|}vR=mx-KywTSEvT2f@IR(oHHP-o>j(NxN`Tpy2ac2fhO0cUu>+8qet63sOGT#LO?jb z;C!DNF}cTK+Kr?HK5ae71uc@T?|lwp<$zZC1^9Fs@!@n9Vf-lARB{fKP$t~iVyJQg z5wE=pAjdxaFHEfYZjib4i`swrpGhG&%nAQCG`FdsL}z6iG0S8$e1_tvA^V?jv*+Gj zgujAtcu$~{o4&0t{%SPy#lgn&=Tqh zq%UVffa4MVi);A=RLrrcb?WAv`{)kg)IvETw_r`j{TCLxl@pAaDZIOnwXN>gu>j%% zAeA~Th~CAN1^};#2`|?^wzqaELHF83QNXCv%b z4GJf?LEh{N1EtX&+B=>+nun1x5AL7{kHICoGd17eI!G8>8tx4au}$RN*x5e?yP&o& zf|R_Vy^{N5M&rXdMPnx}DQ9)mS{lU?Dk^mC#-VM2wS^T8n295e+l244&!F_)1?@MV?Pp>a-@0 z_{9*wdXI8^3h?p$8v^J}n#_Y}Il2X>9Ee@EwOQg~{_*YzG^tv;S|-|1Z*fq+dvNP) zViz_Q0kIt#G1$j_8yKsbuL^S6vtoVPw;G|wXn|UvOs@*a{RC8RRlW;z#MT*4#34Ma-ERU{0faFA=cu%!m-wlG(}tM{QHD2*g?2b7_wu8`Yg5B( zz~Vx~r+2PqX6bAxJ;*(|5LM=$v4Q+;5fqp8@%8hBQQ-p}2;+u9QrL2WlwH_Yj1s&1 z%}|Z`*D?c)*xWp7tA5H9HY#Mj=1UVAideU*G*dJJD*N9TQ|nRA-Sf6L^>wWyPf1_k z7r0^+wF7-Ma<><93$UGn3nlv-VR;1W*6lT`uag-LKlB{Zf+Rj%_&`e|7kyxCryzwV zl#6=+;6KJc&J|c`iSWq+X1&QLjVuV;%ZO#@d;p4w{Qyo8d;bbbEdn|0Vmz9GdI26j z7pov*hlAc`KFo*Qsq4WkFgl)T@?Ve-H$1+2kCD_^M3n|S=&n6cJ#Ca;W_a0iX&U^( zyK`UK=DBeTBIfc=C0|oQ>jaR^Lrr$H5 z?ikRv_Sb1#8N7S+22zRl^-6dEGa*kj(5ebQ;bar(f+-dZB45HkmKAv2ZDeeWQqmt+ zkNB<>u3V-dA25F>Pe-D5hn>ZRg7A1d5${0HeS* zvj>DYvq7-2KzESoe>S&K9+26^lm0AFRs7jE__zn6XPea^&&!zvl#bD#+2~H51(H zL<>02fR4J9$MVMwdcRtn1jguEb^#ff-XlfB#EK@1WBLrvL` z+I7h;2zS8PO&Z{36aY-s0(Y3dqWZt6fa>+m<_%jm$eT)H`L$O<-);uP&X=^K3-pqA zM8P0H}zb2YTvk>q-EDGu8>;L{2mSbD`*{b*ZyJTH)ryc27Y zrl*>t{06&=R@Pe;K}I%(uHCZ95mU91HCvhmPi#SH--fdG{{sUHsL&Uj+#B0{E@+my zm)k`zW?1Ep7I+dG+#^<4`7pIIqd|$wPU4E!BCi&$5rSL=!!X0`oYLJ7fmPn$cfG`fg#VjiJ??Snz>0Jr zhVDWg5#C8O@p6*uXEuC0N-znoEjq>sL9&n12YoJ#(^wAsv`ql6uAU^tqL&iPw zsSe*iJz{e8c4(d^hBZdo4tu!#VxJ%q_DxZI;sYo7xySuelfujLZs6kc1};zAS}E`o ziKH<;&w#2<@PqvIPxx}tFQIR~{j4?3dx^ty-Yn>FPE{!LEbl`Ubo-8DJwIu(W%U9K zBfy{<*?@c^h7gO?LbI0Y1`|nCqj=#S%E_myCGkvwXb%&`E2;svKx- z9Wcwc+|w369uq-59(#O zgjy&9adY!EeF~t6*j#Bs>$QO$aP#e)>?Jg_iA6-Do4M z=$p7~_S`H?$Gj0GGs#1uc8S9MRBM1j$y7td7*#1`{#z}4b3k4E&YLEpCoPR)n zB$%wk@V#vSm3v5tH=cs#s+}Wx+(gC^t$BE zuHupz%hF1uJh;?w?3ba(3{vSj+>pw~jK?=O17Mwt7(KC0rG#N}HYcvg)182WV$n8L zB1e<>(`(7ALO`jauAIGPN@|Z=tO+Z%)iK%-PV0fJ_T`G6`$3bHg`vj!MqMueYDk-diHYVZfYJh|`ur}XSYCB~6QVuBo8$p1OBnk?f!s2p#PE$%MXfAvG+b@01-jr`{zwN;gYYCx_t;mJvA}U zNn-M~)^u$LvQk6z2Bx+L8>&Q`M^m3uAmHWloVFp@N1{qopLfSj9fEK2zKSGRjWyG% zP?cKKCs>kKVT}L{D>iR?$FtqQLYFL~SAXe=u)4ME;dg40+b4I$NXbl8sWVEeVe`__ zPGR1B9+D*i0KC6u8yJeXi9Od3i$^b;PySGA3WO(iuVgp->Tia*Gj3-G{x=E{N})vX zcg7gm=la158>Ht&Xxr1N6%JMeU{@8s9vfZ6_Mh3BX?5^gh5u!wrN3@J_crnT^ zZ1()+g=~XynXkhQ{wr4fmNYvl^of~ZDs%taBMb`(Ulc+#a-cT0;V#Z?FL!wj`dg@7ccQxop(J^=mqBG!)Fbt z4&vjp)&b6{YP#=3;$H%uE?;Wjsl2}wISzy<#Tm{fzr8yk%wvq}jeAz;>)^ywqjoaD z`MN&Q-5l0%Ud`~)#>QDdY8fJv;?6os!?{QSsxmoX1*Ug1-2(bH~(SlYiU2G>ou%lF&AG0=|Jc@m= zoRF7;7_4LzdvuqUQC4c_#?e;j5G!1Bwp{|1vW=Tp8t~#eQweRaUAO7~B2~iJ_xN3V zICDEaKNKK8HI6@El?pnM+rDZMVdoRbJM#nO+|#4a^JsPanJ3$UgsKb0uFiqfRsGxZ zF8Gw?^_NcTLo1I>7`oa!T}-d31qlA=Ly{pyd1N&1QY&j@Rbk?4qA_@cR{jHv-80MF zEGspDm3H@Y4TBpVD3_1 zP(vD8Nl!pwf%WG#(g|Ib&`@tgrZ;0AwqRU!c5>e$=`y>8H@rmQEi6y0`c$8ie?O>P9MxHQQ%af8eW>1H;i|APk*-x=wz$G1V5v61(FPbjy7b3_YtSz1GbHVEppWJZZp68qY+AGg3gzFN58{{h=1yp=Yu=qCz ztYwgEd>0!D{wp-ig8+pp-XXd`=xXw5;h=7)ii zozZM|sD_mV>=A^NR>#u%3MFV)i!9HH?f;R^bAX-a>Hr8`v1zBlD5=lm^_LPN7G`)rC-h0E%_=W|1+FoFp% za}j|FBAbuEGBP`+NjTgX$J*CQbTkqk!C2_i$k01V;hBk~QB)2}=yy^x5+_bbfD1S8 znSY#}V5}3rpNa{ji)q}}OYnr_=tPrGhRr8+fM?LCmDnmD?4b8fn-$4CH0}HsNham4 z26z1>78$ZiA8!H-@G!)roo+bCIAOfUDk6}D^*yBgO?@`TO-biAkyTsp40ZDPLxOuP z9jm32^|V)b9!Fa2ttl-L*?fiGKohN!T3roJ#njUgqc-fPOb`GcuGY*F>|If9Sq5Ws zC889*zq|tTRzR}p@01{yZdQB;KU_w)|A2*l7pBZdD|w2sxriFX3`1&13h|7d1W~qP z3Q?8b-4Jqab>C5zfv{oJuXGlC-vSb!BleNaq zQ);IQ!7%H?12FY#DtY|TzAV+yKJr?~Km8$);7^nU+7=)p~#WhnF3JwSbA{ECW;wvhmH zQB4`JSPJ|gj){%E_)wsF_xAp8nFtE+LSs`fbKHeoiEr4Hw=6oP@lEXo3>$I$-#|fz zbV1&&F@&>(AhL~hO#}HaGy?6v4}6x4mb--^e48x^uP^?}x&Yi`a zUzPv#4B9MZoYZzxFj}%!b+TDz^A|>6(I6WGIEK1iQcem_yayy`#Y$ zjJOCUDm6&^y*85cc(jwM$|}CgH@r8!?X%tMk}EqS4Un_5NWjaPHhVfWY0VaYYF(d+ znbFKHxrX@CM3tE{0&)rct(3etXju)X@OO~P9#wzS-Z`nySwX$UhCtu7(arZA#GWT2 z5QXtJ%krH`%+#yhAYM#H-vY)dOIN&&MQlvgr>|60cciiwzvSt-=vY>yFvD#~Yu#*S z)&kLADO$Qnu$dCsLTGpwgeYoxhyG8f6tGZP$Z1D8%*71XKe@b`09Ai|=%~ni8<1XP;oqy;$5#)vR^Rl^yDP$9mA4dP@BDg5v zeWvcoPU@%mh755`&Mqm=%iS!2ED!D*@#Tmb-@M0Xn}Kf<*;W=a%qpHeWo+P3eE2b2 zKoE}N;)ufrxW{B`FQ!10e@9l2h>gMAGJzTA5TyGn6 z`Iz~7eO|S;)^6RWhH8%F{Ky$823Ja(mG1{`ZEdM~bBirTlQ@8mHTPIMnej6UF^mdn zS`z26G0rY67HMR&okHrGwk}c@ecS^LmF2PE+rNq5;=Sb~c%}$gGRkif)_J3sc6tS0cH#lu%;={7t7+YGL;AHC1 z19xZ;vmzlYu^{6p6Ct;I<^^2Jvfp;jHIUzJyh0=Kxghs&DIF~Fi3GJ=2?G!xRBoK2 zK3z9;p<`u!OZ(d5*^8+Ng_ZkJNr?}NqSF+fi_&^EeXz~S=WcP#HU+l)QuyyCY#K!k zkrX(WrD~S)xg-YR?Pk%oI(&dAIr?%Vqw3QUr-DOi2n!LKk)2BuZCiR@tma?qKL+7) zo6x^n_^nU=%3G%y5%bp?nW>=1O_`pr_voNu3ciVjEU2XI<>~S-u4E;@F{H$MS!m4p zxbL}C^>~W6gxbwzRwU+M&wCG8Lk$37DRWL<*;`d@vVgXAa42ZP9uYPjV8&^erOcMR zungu?tPcAH%tW|$%WI>P>kCmU-uY9^MDTm%V!BJgkfUlsh~y34K+<^N=iq%ZcB}1k z+R>K#<3IF{!ctMS0G~bnfSmciY)vv>mtO3+?IGdg)-rnbzPAE6#GpTu5QlYw()APg zBe-iJcX%3fTor+&a)J140nQLOYxd&2 z!f(yglbGO&*z7Z4BR7t*{!Zd5w@x~UUCDkU=zt2m0a;wjW#YHji_X7J83c@`6w3I0 zm+Aa^p{B}_R%=;OiPD#1h#Otm4P_DfuFjHxO$v99IN8!`S=iq;p`ZNV__^tgc@!L zZ)y$41MY+9369Q6&P?IVBurB<=T*5c!#;61iDktgHvs<((;#bmKZWJx@%}o}U_kxk zY?5nscTzdd!8K_ha-~SPre(w2w&Wgd6yknGnf zIA@0+413#9HtJZK4lhrrz2KkONkblChj-rAr8Nv5*E(DxQF&tn; z_rxhdUXh#iH7er@u?)Zdlrs*|y2%mHam+no>M{y%Cur1}`XnTk642fL*9E)WPjWBk zJ9*?wM%k^)eI2ssDPH&F@1eY;p;WmFwhr0{-;`2uBO33&0z(Ptg|;&^dxs%{aDKKI zsg* zE})$@ch8_7|4>2Zxa8#r;-US_L{VMmeH;<`pbsSpW*eKwG*Kz4w1PWsc+oC6r^V4~ z{76U?hVm2?v~I}yHjH4&JdRFhW>}-$Q*!8!ztmM6UBGL@Sm=?Z^Q=yTm(~wecW>O( zl&k_THQdJ#h1pn!MtUDd;+ud9!5|1M>!n%Iy=lvMZC{?yJXPu@+}kT*b0ijBS)xj6 zjaL!MohDufG>p2*`hfIMSBH1;Q@WH;R3{IvjU#iw?s zH_lGdf0+WV%?h_2_AADN(j924>f(^KB1%B219HkECNM5OxcrRG^w`coWV4Q^-DAk9 z?iN~@7ua~x-$1ZvMZW}76HSV5HSX7R4c-tNC4&Tbeq^T4RPv+NqaWa0?YkJIg?bt( z?kl9vj4q@&_U5`a#jcX9E&kD#PQCDgTOPu@0n&VbE%JA>gMmsp#+Y&Em;txWX?<+M zO~mW)A?jpQ6|y-n5zu>QJT8g4o6P?hd?x4)C%qVzt2QQvyXyRJ)$v;i_YETyanU`b z?rSxTyqPCmD}oga_N!>a!IuVCnD;`#wFKYFwoIcw{N$XCP<($ZQcX{)H8GMHUmoq7S2nWJ^V?Z_g)> zD%;QY=OogJYlJ?NGl`?xmBTEg;V-Skd(2y$SG)@=;Y1SgEZ&)N5{05vm={jZkRChv zHWa`Psa|;m#g@q8re$WC>FKQkGrY#<012`-3d-T@&f;!7G4YS_V%paZ@9J3GSPk8L z4TbHr679T~uj@U(|Dd{;D*E|x1`80y^w?e?tnGsvQ}bmMs&pQe{n-}9)o66?I8cl>WMp1p``0Ws}t{0BGt zS&&zt_2iH`{Ue`x%L=Gzw%aVad9WUMWv-G8H-Ev|8uGbBS$x%*T${Ce95@O86%&*L zBv{4w7zfp=!jL|I%S@CwsnSH^2}iC9Gsv60ka6a#k6&%T$TW{Q(YF{IU!gMLj%$-S|7g#Y7aSNtc~J1zX4+1kpO z8xSSBX{!vCyoiw8!$}Q;QExQ>ZYn4jP2RDl(xePjlK=^rG9}NOrkH}uJ%B!{FhJKQ zrtd&^@?z-E+17rlVTj*V-L%{y#zBaJ99}v@aMXGtT(}mqd{s6YWD9g9 zHzj*ueU#R>h2c;VUySD%l3S@n(BAe^8<1q%;gGls8d$KnBuoQw{4=bt#uEe`B_ts} zsHPHouy1Hzf`gRlE9(T+91-xB&2d9{ca!-FLxGt$-L*_QrJ(En-QBeS1(3pQZ0iF6 zz4&WzVMo%^NADRxzLgEz$3{`mO*#PsW5#?t zy?JVM{iCC_sG+pF|8Sq4{lQ>68EEaPSw#T??e3oDr-DvzZhY`T-sHs?2!A7U>HLvyKZqOTkt|C}uetl;MVl0(hu zZ*9&8rhUG&!zh)qq8MyQDK?*EO8r|3qA4}3cX}C-rv9t0sj>E{<{fr%%%modA9719 z*rBPO8AvCoGXR=T<#-U77Pmc4&6O#wO-{GA7ga3b|H&-QlI2QHkqVLd};f1_m}np5M~MA)K(FH2c# z2}$2Zq`0{o=_Jr)S+X`Mvy72yH{u#UYt|RK&)I>E{qs8>J=;)iuqF54Lw~np#pArf z0BRk-uOc6D6N^Y7)~R6Mm2c-q0<$VH_0hsX&6cX5wM26!>d&)541%`}7Zk&qEPo?- zCKG!$K6So%Y8I$~G`=#E_;4h8gKh-As?fWIVet~=kS@J7tL{LZcb}%9hkBe$J0TEN zxC%ja0x*~G<+T?jw)F`#oy2k1y9Gvg+Ox(%+TlQ=?dAVUlLz0$V7+n%f%TUVKT9qe zQQgiJVzD)19}lb(VzY1L-}x%OU=4m6Wr~*~W%m}IN0G+p5645`Uf~bd&lPS@a+-eVgv|oYRs(#V z6KKDE!BkPemu4$;E8l3qCLqeRUm|mb%c|Ec@~Tc5$^=)=Yp*yY*&AwuvZVaF-bsQ! zo`g>pX}``MTH}g4$k|c91!Q*(;86a#4`Pv^I5G|QMQ zsNJ*ND^>cOO4BYjcOliexyn30r{Sgc^5rHiECm8HuZ4DgSyEpLLNlp>=8UQvGTc0p7HmewE+{e?A4kThlj4EAAvzoLL=F@8lEy& zA5yiEZI4_RraHgsl?OpIct*GsIi}&l@+Solg6JTDr_bIvy{(``#hVjv$MV8l&XGco_Fl$`@LQSYX_H==a9{f)=33uMO}o zmz|}jp^^%a*PVQ7S~UPml7>;8Ex!)V3&N51JWY6+*&+P?7aOT&HF;!lAO43ojiWI= zS?y6HiwFja2(yMzuIbN?ff+$cb)2L@m;<4ZsQEE1BX8?}S!0trS@H?hewvXwvA?C9 z8*vnfWOu4h#Y)t%Y*G}V_S?0%Fi`r6lfEUkr%irX2riVl{fHs`eUC`302nhKQ`_NB zWT)3oco4vRHLQr7K{rVWk$5)`eNJ{m@@LI}aU^oY|A(j)Dy1zuyydY7PQX7Z zbN9#O1c(3cQPSAQ2b&v6kwGgmy)?2hR7kiUY&LnZysc-5cTPD7qT=9!N|>s*YF5-V zj_MQr=~s>KleK7i98ji*wt2S1oZUaH#{8eeOgAl0qs{K>v3#W5>Mp4Rru%9X@gi3nFo?da97o2BS1{c)cvG@li|CVQT z)q1|6-s4SlsmB0lZgo#8C_bX1lN3WWJMx{5K=_`dP6=iZIq&5L2T+@(mX>$)?hTM3 z=8LC8=zqe(B}_1Sr=!^|lS8>5QD_s?LX@t+fBrd)mtAZd_-EjCym8aH}_1}&9m1ELgaF=g5T4!__o%0HFd!*yU z#Ei2=sQESZZg%1>Qxft2RC?<;aFbcFO{c0;r+#@^(UdaNw?hbOT0m}P&7zEG>N+eL zAZ$FG^jJyXy}SGanF!InMg~m7Zm)Nd6t$>XqLFi#cZ7M%ZLzl70DkV=EvrBHVBMA5 zOX4wB=dq_!z{(*0DYgO7Tw8-iv|#GXzFwj!;R9tCZ2;4 z3x^3(+&pEq=L*FL%_IB$T6QQ5yiJG=P;37o%GI7*=`Rz-X%FHgqMy1NR5|Grv|Kz+ zs%AybkPrHVs0G8`;dxx*N?|*%C1n3U52)9YlE0CBhwi@U)P8E%?!F??FhN58sU>3` zN1CNgOHJ6$x>Me<0e(=Y_8Oi@l-nf%_$)#`(Tivvf;6xwNkxT1@0f}~oP$%0mxg#j za7E8zsqrDj;elY#EJ$HoD(&4xO57XuS&}vkt#7YdXF4|a!lKwz)ySewkR_lcp0c)5 zt^=sRki^m>bW_NcfgkcF4@M{#qJOl>7O+9ByzwcS@l||qgf7iZ0kopmlsb3Dn8P|Q zsz*&%XzbZb#4{E9xVD6RX_yj?(-AHQ8xySm57$5_zgf&*X@#nf?YHs_#8V;v3OUDG zdXEmWFdeKoiTQY62TxrnQ)KnQTk>p`&Q~<)cCzYDR|jRVjbEL!cKMER6d*Z)duE4Y z&J-PjObPbBO0Ok#PK2Cp_pN2Ca3{Hzm3O3q;48C%63qObG~&U`cVDUnG-&^up#)L# z^w&EW-A}U{PAD9qS0s{t^Y3#H`nDFqhWnr6!z17RcYJ=f_5a>Tk%#NOTyO9^wA`Rr zZ!4<9rC`JI>4w=k&w9WAUSo4nTWX+o6jNO!x{E>aC?hw+I1gZoKNL+X{(ja2Kx;YA zq;HG(1DL#j+QCIBRXqT#cCvC18xw`1r<`DFRn69;>Y#nr=2WQ8LXc51!!e=`HCOJ$ zYF&X|Sdg!*rGQvUh5__TeX2~q|A?X(r5wX#X$%Tb3*#^-y?I>@5eaW`Y>EU&D?#QS z%^PrW@YvhHQ;`NK&qE#V%YyG~MXrd~ zVj6xf;Qpcwk|dSy)P>x)2kxdEj0o3K;FI47PCRuJ?*ZF{?5d(3kwlxq7u0&GeV$ORuoxtGhd!>-z@a; zti5Nkz8ZoDV?T{00t)7yA|MJ&O+sAKq1WHp5~`x})TQT{5Bs)Dpt^z8gSIDGUU=C} zO;);cayPq{lOnGo?VMd-U9p*+n2>4Q*W)ss@7nGj#VeEYtmt_O9)&1@thDi)18SJL z^l`9m(=CNoKY`ERyh!Cz9C4x7RXtV->&9Id%H0Hw&{a?mJ>3>7aBj|RIlWf?V`Aq{ z6V%=0=aeS@?~?=n{paD)Hva2oif#Y9(aXJBlb_i{k7ngF2rOXO3*x?hTV9TFS$+4H zDy+5}01YODU=r*pLvJ5aMBkwyq9~0JyGoVOpdlUh9U+O!8md9L7NO>`{ag*o7=%>L zX9UwWJbG)c(506C&qy+zpqmtCY)tsV7eEd4|LFL{r~fBMM_c;8kz&*T_rc{}EjLhG zis?Qc{RSvQlwrmNL0N!3v>42zUi_#91!hIpb@NlUVl33Xg0oQPE1U!m;3{vyx?-}v zYp{heS<5}x;@DJPgl+kI%TmYx3pM%aukc~<1W*n9|KR-KwDkV#WNZK5Na)EBR#mH>prNbNV1noW0o{!WxqtdAjOF8DlDHMD@`SSnK>GAgc=SE8H`PchkP_YdhB2ZCBl7*^o&G(2EEuXoBqYAzRzYl)@ z9q=pxgQAzMJ;0Ru^B*M`rCd42uP^@l@$rGr|BsHh{C^{*)%mx#fy?==4@v;Ae`r45 zcJ*iW{g=J(BKUlo#tBlV*8KI%9P5h8d6$2He@qES zL0u1o^1KH^d8mi2QFjfcp8nHmf|f}9t4kC8Kl1(m56{lG`F}T4TG4;G4P0BM_(f53 z`LAYDFY9@7oA^!Xd=iKj*IetI7a(BY zAt23su5SVx6Uyz!!hy?-9f``bZCp0@LEWqS4sM|JKY`U@xmu+G=~Ja4ny@_bG&;!c zc$6hPu6i?M`=M6A@kifb0-PZ>%tm4Jl#APKaHY*JpAhsVxNn8@%5>-lk*m{Tv^D&~}=P6Bo0fd5|HKdy5Q?f!_ z(6Bqg$IGmx?Tc?EcXS5jgXa04FhR*Re$_ z2#$|@fN6F>e|>U5y8&3Xr0)0^jUNmB!b;U0`@HQ2k>8O&;;h{7EUEuvJ@`2@d6Vm!{jQOB42a=>_XhUFr4p{lJ4e@RqsNa3T}r}esgb~mM(%G7=(v?zO=zT(9{Pfp|lJqxncax!LZSQ}Mj}A-k ze~-5D-#1fq%ZUCQYD=n(e?JOYj_0j?>W#1mgs!C>H|WW-7NPi1imS zyG)A>LqhYGa+Q7~cS2#s90)#*SiUB)lrCfgn9c!3kP#1$6ej~Mh5VDGdQHt=IviE2xc`uOk({JDY=dRVc<@;ZpN&`9=?kw0g zZ~%Y*-H!p|*050Qt5ez+kgCq12QFOAf_W&1RCD?~fYntkpvMwu)tU1lhU;12&JGR~ zmU7J%0J8!9{ImBPxx3A2Ishy~Q6WmTAn?l&_dkFZy-rpb$6#9)D-H5r4AF$74Dn?o zz$W|8@!`2I|D7Ff-~Vl-NI~y~T;&_YS0@2F8)w5ZAVo9GFiGn~B9g>XYQqt{LEMsr zWH@UfxdBR&l!`^L<&5c=l&MPY%WEez#X z_aU4;Ox>{S)c$5kNK(WiG!zuoYtx^=4?m=E25|!K5&^$mo0};eq5kf!wg=kZpSjmN zol!6kEZv{WOJM^UxRpWW%}Y15)F>^4*un{StnAJ^)3Eq4^rksFO zf(tidgr0f<;LtT}grbm}>TWRa0?Id@h@pS3x>s0%`NZn_plm!TcAVgIdEHgYNNg(| zZKb1COGgd-f9boQe`)6bCr9UJzW>L`;mMZ&Z=y&pztX#($GP_rESL<3K`u@arx-DC zhlYeAFoE=5-A-U8uP2nj*S$(OQ+Gd;EI}%Kk7nr%QxpfUR+4#fxgvSFx&2^cGEHJ| zhX9?XlEVisb23O_lAr{$iRx+sKj6u966i7nTtJ3gUZjlh45jjxB+w0vIG&-Bd08wN z9%7y5Kc1?mVD`NZMF|v51tgiFi9^b7@dN=rhCD}S0_V~{RCZ$~T-Kj6jwV1Ygn)tQ z1gC;3V*WqC3?@?qCQ~N8YBR#HY_EMx2jFTbvmU7{p}pc>iGdW&5G|m^Af755mFJ4Q zKH`ZU=*5sD`mJ81XW;hsRpDYc*HmN(pgbpXxMRqQ#YP`cG?nx9L_es$ zRQm=2LczCkbM4A8$Q?JtD2WB?4Dr1xIqLk#Ahh>`-z9g4^Vm4>UK06dwX7(%})xs0(ZCGBKPV37W#d{ZlfQ0XI7*AfaKU#A8sk*>) zw@B&s(%CVV9#w3Ez6+;(A!zTa0z!&qC{u^Gh=%r9|NOI8Ng%yWs%VvUGkSF3J8{~X z0z=G4MtKf%rLec**4($s(jfn5BwjlFXOsMYesWrh|9N(}wf}9TNMT>_rIpG58Hoe3 ze~r+;n9MJ$>cpHfb*+*OrVPc(ye8AoiniAz?!+$T0NQiGYEJs+pFJIbcui0U0q+c?C9$Ha?y_17*cdiiO|yDIDyg|4q>R>qDUxZLZ6~nIK5{rFeo=# z_{<@xu3PSN4F}Gyzy8x^{Qu~phkMudF{C+FseG!^2C0l~NkIuKd?8(t! z%=RyxnJ>xO)L{Q%9C9?ACQEsMH@*KmI4Svm9iDIB|81m5W6zCV<&}DXdt2vA^Z>J_ zU=uE2r5XQte8snpV5@WlQzn62m9*Q-fEpi%L;e1mea13KIhILDK5M73Vwgn=KK)Ar zGI_nNSN*nBlzREENc@wBf_UFOB~+9D|KX|s{_ptgXzTyCk>bREDAsnBQ6S!1*`u@! zxCVjG_p%U;J=Y4|T(t}O_t|a~rP?JIJ==}KtKB`^!23mVY=zAM<@fN8{8Ikx$#dcM zma9xTRIQA4(Jx-x_jN>!{;n?&xY1C{UFFd0(m+RPfwc&OYR5P&dM@Kt8B93v zXCMt$9^$};B1aS&NlMav8Cn$lY#RR35AbODr*(d{8Hxd@+#^$lW3&et0S^dhTCO}N zrNgDrW{5iJT^{~-JV^?hsWnz{=bRhz5ida1Q6IW z>y!a}>xHjjd7W_{@G>QZ_^jjm%3lp@N3z2 z-iHOYo?jPR%!y*I;dErwcBeTm9XWJ63&xK4^h4&)ak+t?R=_lT;^d2(z^rdRmEv5t znJ}m0B0ZEiQJAEV&P&r~f^C;Nt(m1Q$NpkU2mYTwFzzYk2vF>@tqjmk1_;mCRtVUZRh9Pqe=*ztzqH{0N5=;q z|35lE-oF3YNXg&-ubA;~?fxxZ<*wA`?+n>9_&eW9*8WnM;V6g0CkmOj%BnmZOkv6 zkK9f$JkLtXy~pL5$K`crE)FfyB-;yXKskRhrQgfn1;`G7)1lel^!Nd4Pj0arj| zgWrSzz2o%#8r~xyyH_Hh=tGDvLfZN1;`J+lC?%9Ncc*8^yx8a)Wx|uQWQ0SNV*EAC zp0M5aQyIxt(hOBSm%0ZNzbZ-~W1V_&TDIs(g~#jE1=9ig8ev~e;0S^1X_Dw}x(%fi z5wOKz1!356pSt+HDes$tv1a{a#Bf@iZf>#btr+@vsLW76#?>aaSx zY3IJWPng?b+j+z3h@y@?={7B(e+M~wfOBwheFff;Derb%sA$oqo9_w5{}kLTk->W} zrkt<{CWv+$*EoYMI@2*l<@3mSC-|w|vJI;t@e9o8RAv}|K8;5mxj~?Pi(Vhl-I$R3 zZuCaAX>(2~nIJw!QwClmPI1(2i6*K|i;gZ4<@>K;3P<`6Jj9WZ>AOh=MZ@MkpWYx2 zGD5{Z%tea5-1dq8<63@W(yViFef`6`S6voUv~4l)_b5S>fcFkLc|{^=C~i+pBovRR zBpOP4ES|&Yewy7VTD~X}cM^zZ2;FhG(T|3^c55CR2YcEo-JfHr)c{uh=}t(hzr`lGRaR?w%0)UH>O zj>u|yRghZs8YMWoACoCVE9kfY)~att61sw31(>S--k}j@98vH#6MYierI-9n5Z!n{ zH8`)A_lV-*T!5zPvN8syiLwl46fq(CEYRgl!j|y^oj%otCWuIk_En-W0ONRH9DEB6 z_cGMT(J+ol$_ApXYMOfk*xmv`1Z7jJWj_?Z+Qaev^_yng1RIDklW6pPOlMiDJO%b! zA~?&^HkhS|voRsO^VFG!T_?`8t3~cY@r)R9cn28*4-j+P*35~D?AdBJ#VBI~0ih3e z!20FxO8HOnvyI&U93CAXZ|{E|sWeG-TC8al>x_uyn#o^b*6x~DH_s4df?%f+>e@6$ zDoskaR?K8q>DEl!1G_f63)u#`0+|KP97{r3sZE@Z*2~6^+byt>sDg?>>IFSWIp+W`|br54!%v{zjampM#=KREJ}4=L(z4(i5`X= ze?NjrB4qLY<(up8`r!umXx;~XIg9$OM&UhtDMNMu2qKcrU8iC1ZP8@P_zQ%xOHpwr zpBb=jKjGv?fyocYC?R(+84RIHT3|B7 z7tMXo>K%7O9sI{*crS-34#m_^3;8WU;0R`uFnRLO$Oz>VAssWgQ4TaxgQCVNa!o^cwy~XvszV>DS=)?Tfe10F3xl zW?LVt4P^{}Ild}400VOFOIV@ed4%I9USRl*i({pqd8OyMbMO>4F(}|0xSRm%!1)Iu zd@6G&eeh(*J`(06?3NJGM%sMesl8RS#Vp6s$6fBgVgF7H?a;v?9z)W99p7Dx3eUa) zeK!MCKmatZxlPjFl!=+~MfTD=eABm78DsQ8Nj;!%ZovA2Mc;CEaY5( zQY7h!y46ym?*n8)ro2R$LA9H*LMSjAi5RmU zs!&`~^iWhQo#bMT+>l4QzNHCKn8p`LHimDe6L5A^bsQ~BrEi;oWH8Hr7-E!^1;PrU z)a)2%S_0Jk#dC4oVw7?W6Q)nZ9(ce>0${?3ezE`}ieh=Mqz=3Ms~drj?_@LGlcscG z;XxU4ll&2X8Yo?> zv+)qj=ga4Xt|9t~XNfk=N_vB5lJ<p%YMOluBd)E(Ky>3}<4GP2dM*i%(EG;$yMh zj!us|NI4cY2xzh8Ylyz;s4u!H#Y3s?Cg+k}RpmC&#iT1!Yir=ajaXg|=ia9AD0jWe z>3$#M&>6vTq%tc-+(P46Kp8Ih$wHcNjWqjth_lu5U+L-Q!g64P{C9M8bmYbVIygPq z#{bwzQTB<_Bj1$?f`JFXodm)_`?5TTCCZi%C*MN8^qaQuMioT2yz!f;uk3%$y%ddPprCL9WCQdUAVBm>cIH3-?CtOG+x?j!%gTYOulsho7Tu|zcbtdL zHtd9lu>d(}djD})ivNFj zezx`h-AEBaLeKI4HAaJaC*Y=l_)dfoLph#)4Zbsv35DPi7rik6S@12FYqA|@(55&Q zd(;*5hq76~i$jW4;|%KHTF<^w@O^Ux(?XlMN))KPogqqbjD%1nzKM3O%;u86yqAH~ zx@6NUguDW;zTL$4VXZXhS)f4wtz1e4FPGNj(iHu)vq~vpP&EzS`E9TKKB-bo|GlSN zONfC@_kU-Hr@sB?@O&HpeIrFVfRtk6N&C+V%s-{Dd7X?urPk}e6U38I(V=5qadCO1 z+d&7tE;odwC9b_G^e6uD?+cxQH{BVwx(xeRuD;BP`?T)8eD3h^-F}sKeA&TI@3r>B zR0cHF?J};FI%AL&E89PAh!x=2N)!cr)1nN!z)6{=x9mgvtp-VN(*>ez1TxWQ*g5di zy+|~1WVZ`6W|8<@BHxW#JB&Qo^9p7jT9aKOD^@wF8%UwsokVK(`xln zp8X&~z9l7TG6#owauW1G1^{anpv9bv%Ctsdxl&KDEm7*9)+0&Q$dIaEzkY?>s29br zt>r}hH6S16Z$EM&QD#=^?}8@=gMqR4)MvmmyVJ4{o2mQxt2~pg?q&dP#b#9x)iDDx zVtAA)Px=Q!@72o7#{&k4Y1#K(r2@|UONqXw!)}7FYE%{>u2RemBMX_HK6yX7img|> z`8xT~NzaGO#1^y#866fz0xEz|#7HtjQkam5lFH8!9G|>`dNn)W*$2i)dsk;cvR^p( z*^q$sn8V&{m`MYqA#^&tA?8etmlKd9*)W<<*2C~)Qk#}kY0Qpqucm2A8|ZE!y(K91 zSCF+&R@To2k%ebUrB%B`lwUD6MbytbXdQd|RO6JR5ryHL@_{F-c6}MR+eH6vQz`hY zHHf^G7S68K;+em70pdXPL75BX_`@F9;R!Rm&>ja*SO8TqgSvqox;)TNJ~&Y=5b%U2 zZ2zk`5X$3;zzh5VaLT<0(+fbkGrGCBsZuO7`$CvIf1ICS}>XcEa+eROWIiA?};B zwjBG*E!F&AJN#eE++9ma0Zsm&$45T@KR-V^*z*5Pl#>6av+S$!0rj%LRSN@7#dZRL zi>@UWxF3Asz}?&xB7#%N5){gyySj_I1Fdr$4dBq)g*1f!y5s|=uYR!aE)J&Nmf5GmuSpCF#DSi_I_J;Oe6P>}G_=_|-H2!L-RBoHrsXoVT%u0b z;MJPW9%12y;x;qMbXzQsoh)|{cYeiDWMl|M&X2r6 z*#M=S&dZad#$V+t($6U2BqB*aAK3tA*|q*vxrDgiz9-CuK&V$k%pmAzkdM9JAs^c< zr_}5A2b%nd`B=2SNMomZa0*DuIGsj3{LCvTtLNe-kJQX4q0<*Ni^bN@(@o5xkZ+zX zpV+_0_Az_mJ)>!mE*B3}xG~?u#*SJCE6k_43;6cVJNY7($XGBXMSHofg@;W0h=ATC zxJcpuP`fCQxnpO_&>Iq?tLu>8pF?-OQw;h$DT&dqIO~Vp@(Q>OE_p6G_&=^2NRIq$ z%k%xbtG?CkXF;Z{36bV}?Gl{}0mVmm;%eB{z!=x_wtc%3kL7+;4pTMqKgEP%K9|`& z*LnYUe0FwJzW+Pk%Kw`visk9026C-e_4eOvAW3(-Y6EWD4On~a4jsF%eGJz0R!ft$ zYPG;du9NZCS=f53uRYF{+IyXu?PlqlF zO~kdQaI;T!@~611m&L(;smDwMHAr7S)0oq6{;RQa9MO{qrLUWd#PEM6#k;y*y^sTctE+&09BF ztY}!4#OgxHJaHcJ%`;?WWoyn#UG#c8&mJvulgdYzEOz5;jbSCMYmIl%_MR(EhP;lE zhgK2{Je1GK%_fAY`2V?zKSYM0FORjq#l%;sUOh=LLj8Xvcfo_aD)U+8>EFA5n5%(+*Y;lt#3){gf39^ zewcB{aTNGTWoeafRw};rW6Tus^xsw1A*p8PQcFoL?BbJ6AiT%89XgwlWI91j>G_@c z@iNgm<7JaO-zMvevp27wgUg$%F0VH2J;NqPx=#ZCWPq4ki8$RXU|L@m0qophP8p)*A?rPCK03Kb%hk-s=HA1vspV4IaAPuoI4#vJ z?Wtmkb&_4xunz{oe*Blopw)Y>b`jhPRKkyz#dA$ zSVQAjGwW}%luJ+qlnOPt){dST7n=` z8Wnn2u8eav8&XvaD+xjNU%f=`9CcZ!@H%uNW6gxjMX#BrmGBD@-bzv&R;bjYe9R(- z18?z%fOwIsM8yG|^6?E~f*V(SeSuj-W{A#16sncV|1m55OQ`)z=ueAkPb<}()}%R^ z7}xjHJ492&k&r*1%Kfw-jjNJqI}o(y)x0OvE|pLha5eoKBWcrk+B1^n^dKAlHVV|| zQmXI&=p9_q1z?l^*YTl$|95t9xb^?qNKx^ho?l$9%IiyPn~oQNs>$koyp(5~jC)&1 zV_-;VerX|kW`lNdzvX%87W7**u`ey<-}{g8Xjt^z<(5+Hh}!E(xn_@_7Dk}a=onTJ zhS`MJu%rqTCiye?F_Goffi~3SZjr>QZ z9IZqEY>fYPPJq%mGg zRnMnvB=X*UYl34;_&Aeke}bi&{SY>`~A zY-1^2St++GD^j|GO>5??b1K&s`CHk_)3#RRbF5X)S*v8NpWeHzss*T?eDDQ7)cQ2@ z+p>=}t*w*Gw#g8(&BD4hB-EEW`A^2bUw{6OlcUo6ud~zBt^U7}qDhBJcetV}AiZ-s z3xK-SV_XE8&ED=R$kgt38)TA7I)bPA>5(K)*?Bk7Q>{_G?5XNJ{^gLyKl;)r|6fEA znWjtGft&2VM@Q#g{)dBuv$L)Izlq|=|9Y)gtOsbQi>U*7<44pA08~h{^%V0?&O%y( zS&FimD{Pbjd|G$yq1~p%u3xL`@i-dl4n{L1z!0OKtx9n%>`;QW0 z%toz~tfktui2CY0%U`9tfIX?*L@lf3XXrXmzcNj$@+JEbERuQQqi`iyQVMnULOT(( z?(lu=pb&-^0V>ZT{Dd zlmPLJ@+45J7XlYC2nHc+S{y8y2Ls3BqmTHUgh+qOE+R{Q45rPs36vYPEmq5a59n@8$o(eX{~VRy|D0^& zzip(*t^9h*A;;>L!KaJ8ONqcozb`kq@ z`&vQIO#TXmyV^QHOve#*uJaBe;6osQ9irp}*Bc)5> zXA^~w#NfFtPN|Xq3B6AUjF(pc8sz`egVPgV{y#t7%KsZFk}CeFmwHtXf6UhDD(mOX z9^<91W+*4eE#+(+$}ov9wwu_X45`Njsw!%Vz6D>~G|*8%n>425Um*l9IGDLJ=kD zvPf+;vu*j8I{hy~l!&((AM_%|~ut{DUtaw@3otv=pD3DJ7T9)R(0Qx*=B=jDa2hSy5rwVLl^ z#-@m>(S3Pp@1wjktlZn}5wL}X^#)A)yrLRA{BCKtANQ{&`Mpy9o1p|z^7Pj`7~M}Z z{p>LzkzCVmGGLSa|LDw%|8R74e!h+WyOARIa&V1T=K(Hv(jeGLS6A>_Q0o^JRmb{C z_ABBfcl5uhNqigu(#NHfKe(J@@LYlbCSZXXP_0NAoPt$a|HB)#(^Y_vqtD(xc_Fpy z`n6uW#}-s<_smnJs@RPoPr24Bm?wHi}{d}33$MKj8oIN zw0AN@AtzK3ju?FaJLZ7rpZcn8Nh2zd6C1}=9~3_qiOOrXOfJUd?YamB)<&q>0lTFw zUoAQ5{;i>X9CA0P=3Aed@BVUPd*vdxlBCSM&QdRleabIlzpT=z|1oi#rpYpSV4C#5!{bvw{>#z9;a30KL{aHZ^%}2Q z)AEYe>sRdZ8L$HY>fatM`k(H90p;z+OkJI}mXEK4hF0d&Ufe%3kKJPa=~fHe z7(D$tAL0uwTXUi_oC|>=M@T_pgS`5!*wdJSI~2hw6MT@cBJnY#2u#@&CUdDe45<)XI0342BtRMLIylv+ZrN8Ng|G&&fGr-{kpPCBgF^rG!>2tmrTi$R~kJFmG_8(Te=P~>_U>=VyT92&cYop4`N%H+s)VquPWkDS zlKwZ7Oz-KhIK@jPeXvS{{&#p#%KvqGcDB|3Hd0jlH$+GJZ81>m4@@F=wLkPXEyXZP zA-o+U(AU(VZ(c9kd?vwn6w>*kI;28pAaq&B-+U!ik+{Z2ixgKw4h(1uvk%yhrr2{Hwx&zQx-}|MY zX;yE$3%HAK%V$<9>Aw~=mht;ArHTHZmgE1N9&O|QY@|3@x&+yu8+lNMpU}Y{q<9^X zltY|?F-j%?QJROH(2M{xbz`2)K?GAUhFOME0EZk=Am|QGM~1sdg&d|i%~zo=a4h?w zC>26|L?}g3Vsnm*0y`<+-yx7eCNz9bK%bMJ;3VlU$!W~K?}I_kZJL-((Z;er!XzoE z`V)m580^{tE*_dmWuPx-RQx?dl#99g>EiV(F|fbgynWNR;T1$*MKwxuuFVNxWAb4B zlnRt!!V0z?cM;*pyatSsT(t+JeH0#G%2lilPGQ6?5F}0Jd*E)$bGHf1i&f9Z@~pp? z+k~z-7$MF;2B}yn$beK2gn)s$*ePPgN9co5-^8zS(>y>L>m8Q!I2kA;w<%ppsbnAM zc`+LlrW#whttN0THVOn3v1!7ET%vd5z-wq6IAr5z;D4t7GX-DG)PHY~nF4r6W=PNQ zz+RUSKmF(#Y8CxYFyqX;{_Oh;>vY*Q%Nav^s)AebUQG?%TC1&&@L87z`X8eij!;*E z@0BL{e|%K(|2{n3(*KQ=Ci-7&fbIlewXLT41#HKTp>G=P);e02`YCw-=5Pd6uLD1D z`dT+j$Pi_iag;_4&boCCmnQ!fFhlg6^|Dt)hA?ycas}}hvL#SU3Erm39Q>@H{Q~6D z35DEobY}z}kZO()=&f1)&!$PDu4uce0YSXhPXE1LyYT?O@zQ+2 z188_bc*(Y8_j4;v^gkU@#Mp8QK%@QV@W7YMw% zUAHrhw{ciMZCAZ@r0KfR^0Zt5%4xVW{af0-E#=Zc|1B+XaURfY|0(7FJ~}zu(*I4A zCi?GffbKlN0#MBdyk2~BP>KR@I@*ME`>yPx-0c@@9xAV78yivo+JdAFL~`YF0}&g` zOXn){ki2v5Z!JLUDNXdB&;^Y?R%xLBM@Pq={C{|UesHj*|C=a{^j~j)O2TjcZGC35 zs37%&;xCIu?C?o;V^{M6f;ep)y6Lo(=v8?^x_$IzRfjN^Nr~oMqUx36Uc~n9Ebvkt zmw1(||E9!x2o3Wc-H#W2yo-{`IA<|g{@)q^SR=5S{1WA$c-&|BM0XT8tx?6 zqDBy$FJ>_RB-A_xE7f(yiC}-B<{h`}mVs}+H1K~DC}JrYpwa&4^Z%oR(}V5%kByWj z{-1{gT1@*h&8t;Er-SCpp1gWjMb5=!?OL1_T&jx>S2SB%gDZkLY5mPxi!J@#mS*~| zWWlxG{~Vp1`u4wr**G5Vs{Vz5^E9!4V=Nr|otIE-&Z0wemH8zXh=pdf9LRlh* zstZ@ASX)GvTsLwfdKv_4S}b?)A|;b)D|9JgeS%mn;D7G(hI6fAu!I(o!nj zu+2)AHAFLUj=V67f|7#js$#O#$0qI2-r_YZ-d3iT*AENbDx@Bo8R)DXmgEq#o2r$> zswORT#dYqtkV0BP3i9dN3EHT>2(hSv|GVLVE)%$jFG!>R-+{0H9i1PYZ2A8tN)!LD z*Z|!%K^=Unnygp!)T|QDI_rWCE^Ai>0|V=(6ovpStsVw|8b#4vs;!>*IhRiKe?c{{ z(f)Vp=l|R0f8JE-M*lZL`aesuzZA(|Il14G`fX9A8~tA_06??+@6-R|ljCjv*Nv2p z^na-U0JFLP0M#9>g%xZp06OufiM6EWwVH*SB^DmnI55_2&;898_T74f4 z^#9=0&;NFKbiTd+-%R-nxQ3h~n#$l&Y6pOaF-pPR6eqEuqZy3u;Rvxo?=LFK7n^3v zv4@ROl7LY{?o{w5oR0PYMG541hCl}S*!mr&aqll6MI%LIo~Q`9C{`5t|Jog>cjF|L zEd@#-Llh)9MT6ep#m%oboKV#J3%FEa7~fysfEZKO8;mf2D*soZ-y7WhlRlOIYknAy zo{Il5f3jKnv;d?6p@1Py5bJ$CU=LaE>%kqo?|nVs6Y+0C@u>Ip|JVBqcn>KiQwFYH zykxyWM#*m|;=KWm5qzquQ}SDHFk=yk(bG?XGV1gH>gw|4o12&G>7)MqA0D0_9eL;f z@bq;1{$nHM`IO-lF$QkPlu8f%2&D{x!@*&%cMU0=AdV>O_0$JKpE;M0w_^lu=@iLG zYz$nh6R`&{|0@GTCJ#}8-u|khtWkV7<%BW~4#nU{Lhqkdfa_oCxU%1)WCG-my^A=; zf`GsT{J;?Sj>42b13!_e4D@Dl=_LmI1EKc-ry!#wo<^eK9)JuaBpn5BQ-S!3IlxR1 z7ZmYi4w#%8okjrK21B=tXO0HFiuz)Kh9pVIgWwDiWJsn; z+yn6xX-qH$Ddbb}qZm&GAoJ7%GVs@;UxCVB<&HrgvIIw13@D>yjPEc<@v{nG`{4OB zjT6ac)ZL=Mj!+O|mL+g*0{c0;qH0DkA3wqAE`TZFV?@mk;wX*99#DbkEqp7d)&yUK zSq3RexdsBr5Da026U?EE^9a-UDWMfmGD;>yR&#p=cXPnUn8qN3lw-sIPAfpnFiCWx zjG>B#spnzP>s^keg7yM(WF73IgVTfkgTwuU!@Pz*ucp%Rew4`YkI!#j7;wGbw=&4& zkkEH-zH|^?G7kR#CDia>y}>rlPMspu76-|N39L#()3U|K2qz z1Yio@W+?4x7-pit_v8W15Z#ka9onTLk)jz&xr%~$hrk5J2*4S{3A{^CZz|)NYS12f zk{U4%xjKRp*H`)Sm@#nlfy;C_6pzLnJc)L}(ZS(4cnv9rFP?)-LNh|uq+i_afr}&o z??hDw-XVtQ48?=qfB)D2s+gny{;&TnCIA9XVT>k_-ixgg20rNZ_E%YYy;>G@i|B-@ z1vVTAj1fh5b1)L5pMg1<%2iQQ!-<@yJw+o0xmAe{Vk9Xlo}r#N&`ijwF=mP(At{|I z%A1mO-#cnLlDV_&13?ONrYNbmYz|Wp;!t}kZ0Md4X(yP=1D)WBAZk6gw?VJ>ayUeh zJT8K~j}fp=X}*7lWJ>uMz%<1(L>Z)cs-z*NjDu`?m*6Ow_ws!R^6_d~00GNTBsd8W zAaV-f?{Kw$#n$ZQyY^v>qp>&=AR-gQRHydw2(A-Vdr|`IiMm`Yuj$n#HG6psdfiIG zF~>wG2^5Yf%*H(xkyU`gDdb`XuZE&KTDf|5P~%CK%nM>o(Lbh`Dzemzrc@B_WG?zd za#dvfTErrX@5(23PY!Z2mD5k7v7lhECq!&Sr5vE?Ns&d^%+;PuRs@GboM1@{P|C3& z>vFx}l#dC;|3q<*B8HL#QS~A3j-nxjI8}hB%rHE6%l3MLE<_{~>_ShA&~32Ts`3Cx zxdO#*JGBtS0g@b%^+NNyC-Ww=sg58`TzaOoM{~SkmL(Xm9z$X!IZEb|4Imhe>$juX z7S^ed=Whn-yw?r{MUuV5f{U6Z81#BSndyv3$}${H$&@8?BSkoa5l2(@lTVJtdIKwG|sBomU?ooCahH16r~}IORmh0FmH`z5HaV?rb99wl!jaK6i3FFiC(E z#Cm!~S(qLR9$|sX54fZna>`*k*Gxjjh@RWrj)H`Y2q43Pq^qoA#hGN_i4phJRLw1& z12zDIOh~j8F|nUCjfu4kmm|F^2Jsf$e*Y4@{Eyq0Z*IZ$%XhD@Zf{?{0MCB{7uVOX zt}ZX0zj_H?UHrHw>uJ6H1^DspyMG5)H{kl++xJ&5UcLZt-}Elt2r1{{23*|;4*&e( z=IUmko4kDozJK}d<@2Awi>sTQ? zy?t}D*L(RN*Y955+<>?5z}4&PS644z?18H{m#=L#Fz{V zrg?`F@*pJh(AQq?DwV_u$B0_z&ys$s$7<-Ng>|ni2TI$&tZIh2S0ESVNO5B1!+f@2 zlJu0yL{Wq@j5P9PeVh{+y5F28iwHmK^$rK%mT1XjF6OQ*8pxl%yM6`UYa)L%IFNiY zor45&L=E+qx|#Tpb6%CzfXT&x91F2XE=UMk0M>)pYGMY9_F~c|2&PQIW?F?QhGz&} zX%rEZD%%~(BlAnjBwCIrR2d5^;e`+u&>Wlxz>!e%Ni8H)7bTT4fJ~)-yOd9%HU}KZ zRY6#+?=$cO?iRpO8=fM!WN4^-z9V6gNkRa}lZ*(unL5}|BqUTN3v1a|ZEQ#Ovjr|F zed$HTkl6h{#I!uQ+XXmfh;q#;KX9>vZ%8WEZqVx;yF1PnEC#*a$pE||@@OfQ!ev>S zm1t7|oDV()qpwx8{rBC=ix;n74kqzB`e?lW_v3#a9vy7`e>YR|TaZ^OPgk$^m%o5F za3Yx9O*BRm)a&g7{nX(iipVtO&w2ptgKPDe;Tib*&bQMfc>^ct@AAW2aTb{U`~Hp# zK-Jv`@19>=E&xn4GaxkJ#ZfYVu1U-mfO1V@1L0C-5z$rhzpT$gJbDc?7eM}VF`|ef z?&B(c%WFh1LEz;FX;w?XRmu?^!U#PBf5#v8cit)GMzxf=Z2#Wt{TmR_6nEeMH}H42 zmNaK8@c$;W?8thOXrm7iLNNnp$1({VjJQ-jrI^phlsx3=Rz5Mxw=LVUE!*;Cm;Vz0 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/grafana/14.6.3/ix_values.yaml b/premium/grafana/14.6.3/ix_values.yaml new file mode 100644 index 00000000000..6b76cb3206e --- /dev/null +++ b/premium/grafana/14.6.3/ix_values.yaml @@ -0,0 +1,346 @@ +image: + repository: grafana/grafana + pullPolicy: IfNotPresent + tag: 10.4.0@sha256:f9811e4e687ffecf1a43adb9b64096c50bc0d7a782f8608530f478b6542de7d5 + +sidecarImage: + repository: quay.io/kiwigrid/k8s-sidecar + tag: 1.26.1@sha256:b8d5067137fec093cf48670dc3a1dbb38f9e734f3a6683015c2e89a45db5fd16 + +securityContext: + container: + readOnlyRootFilesystem: false +service: + main: + ports: + main: + protocol: http + targetPort: 3000 + port: 3000 +workload: + main: + replicas: 2 + strategy: RollingUpdate + podSpec: + containers: + main: + env: + GF_SECURITY_ADMIN_USER: "admin" + GF_SECURITY_ADMIN_PASSWORD: "testpassword" + GF_INSTALL_PLUGINS: "" + GF_AUTH_LDAP_ENABLED: "false" + GF_AUTH_LDAP_ALLOW_SIGN_UP: "false" + GF_SERVER_HTTP_PORT: 3000 + GF_DATABASE_TYPE: postgres + GF_DATABASE_NAME: "{{ .Values.cnpg.main.user }}" + GF_DATABASE_USER: "{{ .Values.cnpg.main.database }}" + GF_DATABASE_SSL_MODE: disable + GF_DATABASE_HOST: + secretKeyRef: + name: cnpg-main-urls + key: host + GF_DATABASE_PASSWORD: + secretKeyRef: + name: cnpg-main-user + key: password + probes: + liveness: + path: "/api/health" + readiness: + path: "/api/health" + startup: + path: "/api/health" + dashboards: + enabled: true + imageSelector: sidecarImage + env: + IGNORE_ALREADY_PROCESSED: false + METHOD: WATCH + LABEL: grafana_dashboard + LABEL_VALUE: "1" + LOG_LEVEL: info + FOLDER: /tmp/dashboards + RESOURCE: both + NAMESPACE: "ALL" + UNIQUE_FILENAMES: false + # NAMESPACE: null + # FOLDER_ANNOTATION: null + # script: null + # WATCH_SERVER_TIMEOUT: 3600 + # WATCH_CLIENT_TIMEOUT: 3600 + SKIP_TLS_VERIFY: false + REQ_USERNAME: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_USER }}" + REQ_PASSWORD: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_PASSWORD }}" + REQ_URL: "http://localhost:3000/api/admin/provisioning/dashboards/reload" + REQ_METHOD: POST + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + datasources: + enabled: true + imageSelector: sidecarImage + env: + IGNORE_ALREADY_PROCESSED: false + METHOD: WATCH + LABEL: grafana_datasources + LABEL_VALUE: "1" + LOG_LEVEL: info + FOLDER: /etc/grafana/provisioning/datasources + RESOURCE: both + NAMESPACE: "ALL" + UNIQUE_FILENAMES: false + # NAMESPACE: null + # FOLDER_ANNOTATION: null + # script: null + # WATCH_SERVER_TIMEOUT: 3600 + # WATCH_CLIENT_TIMEOUT: 3600 + SKIP_TLS_VERIFY: false + REQ_USERNAME: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_USER }}" + REQ_PASSWORD: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_PASSWORD }}" + REQ_URL: "http://localhost:3000/api/admin/provisioning/datasources/reload" + REQ_METHOD: POST + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + alerts: + enabled: true + imageSelector: sidecarImage + env: + IGNORE_ALREADY_PROCESSED: false + METHOD: WATCH + LABEL: grafana_alerts + LABEL_VALUE: "1" + LOG_LEVEL: info + FOLDER: /etc/grafana/provisioning/alerts + RESOURCE: both + NAMESPACE: "ALL" + UNIQUE_FILENAMES: false + # NAMESPACE: null + # FOLDER_ANNOTATION: null + # script: null + # WATCH_SERVER_TIMEOUT: 3600 + # WATCH_CLIENT_TIMEOUT: 3600 + SKIP_TLS_VERIFY: false + REQ_USERNAME: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_USER }}" + REQ_PASSWORD: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_PASSWORD }}" + REQ_URL: "http://localhost:3000/api/admin/provisioning/alerts/reload" + REQ_METHOD: POST + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + plugins: + enabled: true + imageSelector: sidecarImage + env: + IGNORE_ALREADY_PROCESSED: false + METHOD: WATCH + LABEL: grafana_plugins + LABEL_VALUE: "1" + LOG_LEVEL: info + FOLDER: /etc/grafana/provisioning/plugins + RESOURCE: both + NAMESPACE: "ALL" + UNIQUE_FILENAMES: false + # NAMESPACE: null + # FOLDER_ANNOTATION: null + # script: null + # WATCH_SERVER_TIMEOUT: 3600 + # WATCH_CLIENT_TIMEOUT: 3600 + SKIP_TLS_VERIFY: false + REQ_USERNAME: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_USER }}" + REQ_PASSWORD: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_PASSWORD }}" + REQ_URL: "http://localhost:3000/api/admin/provisioning/plugins/reload" + REQ_METHOD: POST + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + notifiers: + enabled: true + imageSelector: sidecarImage + env: + IGNORE_ALREADY_PROCESSED: false + METHOD: WATCH + LABEL: grafana_notifiers + LABEL_VALUE: "1" + LOG_LEVEL: info + FOLDER: /etc/grafana/provisioning/notifiers + RESOURCE: both + NAMESPACE: "ALL" + UNIQUE_FILENAMES: false + # NAMESPACE: null + # FOLDER_ANNOTATION: null + # script: null + # WATCH_SERVER_TIMEOUT: 3600 + # WATCH_CLIENT_TIMEOUT: 3600 + SKIP_TLS_VERIFY: false + REQ_USERNAME: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_USER }}" + REQ_PASSWORD: "{{ .Values.workload.main.podSpec.containers.main.env.GF_SECURITY_ADMIN_PASSWORD }}" + REQ_URL: "http://localhost:3000/api/admin/provisioning/notifiers/reload" + REQ_METHOD: POST + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + +configmap: + dashboard-provider: + enabled: true + data: + provider.yaml: |- + apiVersion: 1 + providers: + - name: sidecarProvider + orgId: 1 + folder: '' + type: file + disableDeletion: false + allowUiUpdates: false + updateIntervalSeconds: 30 + options: + foldersFromFilesStructure: false + path: /tmp/dashboards + config: + enabled: true + data: + grafana.ini: |- + paths: + data: /var/lib/grafana/ + logs: /var/log/grafana + plugins: /var/lib/grafana/plugins + provisioning: /etc/grafana/provisioning + analytics: + check_for_updates: true + log: + mode: console + grafana_net: + url: https://grafana.net + server: + domain: "{{ if (and .Values.ingress.main.enabled .Values.ingress.main.hosts) }}{{ .Values.ingress.main.hosts | first }}{{ else }}''{{ end }}" + ldap.toml: |- + # nope + +persistence: + config: + enabled: true + type: configmap + objectName: config + mountPath: /etc/grafana/grafana.ini + subPath: grafana.ini + ldap: + enabled: true + type: configmap + objectName: config + mountPath: /etc/grafana/ldap.toml + subPath: ldap.toml + data: + enabled: true + mountPath: "/var/lib/grafana" + grafana-tmp: + enabled: true + type: emptyDir + mountPath: /app/tmp + targetSelectAll: true + sc-dashboard-volume: + enabled: true + type: emptyDir + mountPath: /tmp/dashboards + targetSelectAll: true + sc-dashboard-config: + enabled: true + type: configmap + objectName: dashboard-provider + mountPath: /etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml + subPath: provider.yaml + sc-datasource-volume: + enabled: true + type: emptyDir + mountPath: /etc/grafana/provisioning/datasources + targetSelectAll: true + sc-alerts-volume: + enabled: true + type: emptyDir + mountPath: /etc/grafana/provisioning/alerts + targetSelectAll: true + sc-plugins-volume: + enabled: true + type: emptyDir + mountPath: /etc/grafana/provisioning/plugins + targetSelectAll: true + sc-notifiers-volume: + enabled: true + type: emptyDir + mountPath: /etc/grafana/provisioning/notifiers + targetSelectAll: true +metrics: + main: + # -- Enable and configure a Prometheus serviceMonitor for the chart under this key. + # @default -- See values.yaml + enabled: true + type: "servicemonitor" + endpoints: + - port: main + path: /metrics + # -- Enable and configure Prometheus Rules for the chart under this key. + # @default -- See values.yaml + prometheusRule: + enabled: false + labels: {} + # -- Configure additionial rules for the chart under this key. + # @default -- See prometheusrules.yaml + rules: [] + # - alert: UnifiPollerAbsent + # annotations: + # description: Unifi Poller has disappeared from Prometheus service discovery. + # summary: Unifi Poller is down. + # expr: | + # absent(up{job=~".*unifi-poller.*"} == 1) + # for: 5m + # labels: + # severity: critical +portal: + open: + enabled: true + +# -- Whether Role Based Access Control objects like roles and rolebindings should be created +rbac: + main: + enabled: true + primary: true + clusterWide: true + rules: + - apiGroups: [""] + resources: ["configmaps", "secrets"] + verbs: ["get", "watch", "list"] + +serviceAccount: + main: + enabled: true + primary: true + +podOptions: + automountServiceAccountToken: true + +cnpg: + main: + enabled: true + user: grafana + database: grafana diff --git a/premium/grafana/14.6.3/questions.yaml b/premium/grafana/14.6.3/questions.yaml new file mode 100755 index 00000000000..f0aa40a18e6 --- /dev/null +++ b/premium/grafana/14.6.3/questions.yaml @@ -0,0 +1,2916 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: env + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: GF_SECURITY_ADMIN_USER + label: "Admin User" + schema: + type: string + required: true + default: "admin" + - variable: GF_SECURITY_ADMIN_PASSWORD + label: "Admin Password" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: GF_INSTALL_PLUGINS + label: "Extra Plugins to Install" + description: "comma seperated" + schema: + type: string + default: "" + - variable: GF_AUTH_LDAP_ENABLED + label: "enable LDAP" + schema: + type: boolean + default: false + - variable: GF_AUTH_LDAP_ALLOW_SIGN_UP + label: "Allow LDAP Signup" + schema: + type: boolean + default: false + - variable: GF_AUTH_LDAP_CONFIG_FILE + label: "LDAP Config Path" + schema: + type: string + default: "/opt/bitnami/grafana/conf/ldap.toml" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10038 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + + - variable: data + label: "App data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/premium/grafana/14.6.3/templates/NOTES.txt b/premium/grafana/14.6.3/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/grafana/14.6.3/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/grafana/14.6.3/templates/common.yaml b/premium/grafana/14.6.3/templates/common.yaml new file mode 100644 index 00000000000..b51394e00a4 --- /dev/null +++ b/premium/grafana/14.6.3/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.v1.common.loader.all" . }} diff --git a/premium/grafana/14.6.3/values.yaml b/premium/grafana/14.6.3/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/grafana/item.yaml b/premium/grafana/item.yaml new file mode 100644 index 00000000000..f5a33383aa4 --- /dev/null +++ b/premium/grafana/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/grafana.png +categories: + - metrics +screenshots: [] diff --git a/premium/metallb-config/6.5.3/.helmignore b/premium/metallb-config/6.5.3/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/metallb-config/6.5.3/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/metallb-config/6.5.3/CHANGELOG.md b/premium/metallb-config/6.5.3/CHANGELOG.md new file mode 100644 index 00000000000..be807a3976d --- /dev/null +++ b/premium/metallb-config/6.5.3/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [metallb-config-6.5.3](https://github.com/truecharts/charts/compare/metallb-config-6.5.2...metallb-config-6.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/metallb-config/6.5.3/Chart.yaml b/premium/metallb-config/6.5.3/Chart.yaml new file mode 100644 index 00000000000..bb70d241c4f --- /dev/null +++ b/premium/metallb-config/6.5.3/Chart.yaml @@ -0,0 +1,38 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: core + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: latest +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: A network load-balancer implementation for Kubernetes using standard routing protocols +home: https://truecharts.org/charts/premium/metallb-config +icon: https://truecharts.org/img/hotlink-ok/chart-icons/metallb-config.png +keywords: + - metallb + - loadbalancer +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: metallb-config +sources: + - https://metallb.universe.tf + - https://github.com/metallb/metallb + - https://github.com/truecharts/charts/tree/master/charts/premium/metallb-config + - https://hub.docker.com/_/hello-world +type: application +version: 6.5.3 diff --git a/premium/metallb-config/6.5.3/README.md b/premium/metallb-config/6.5.3/README.md new file mode 100644 index 00000000000..9ce60030e49 --- /dev/null +++ b/premium/metallb-config/6.5.3/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/metallb-config) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/metallb-config/6.5.3/app-changelog.md b/premium/metallb-config/6.5.3/app-changelog.md new file mode 100644 index 00000000000..463668af21a --- /dev/null +++ b/premium/metallb-config/6.5.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [metallb-config-6.5.3](https://github.com/truecharts/charts/compare/metallb-config-6.5.2...metallb-config-6.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/metallb-config/6.5.3/app-readme.md b/premium/metallb-config/6.5.3/app-readme.md new file mode 100644 index 00000000000..8f037b6034e --- /dev/null +++ b/premium/metallb-config/6.5.3/app-readme.md @@ -0,0 +1,8 @@ +A network load-balancer implementation for Kubernetes using standard routing protocols + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/metallb-config](https://truecharts.org/charts/premium/metallb-config) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/metallb-config/6.5.3/charts/common-20.0.9.tgz b/premium/metallb-config/6.5.3/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/metallb-config/6.5.3/ix_values.yaml b/premium/metallb-config/6.5.3/ix_values.yaml new file mode 100644 index 00000000000..e99632a149c --- /dev/null +++ b/premium/metallb-config/6.5.3/ix_values.yaml @@ -0,0 +1,73 @@ +image: + repository: hello-world + tag: latest@sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d + pullPolicy: IfNotPresent +manifestManager: + enabled: false +workload: + main: + enabled: false + podSpec: + containers: + main: + enabled: false + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +service: + main: + enabled: false + ports: + main: + enabled: false + port: 9999 +operator: + verify: + enabled: true + additionalOperators: ["metallb"] +portal: + open: + enabled: false +ipAddressPools: [] +# - name: example +# autoAssign: true +# avoidBuggyIPs: true +# addresses: +# - 192.168.1.1-192.168.1.100 +L2Advertisements: [] +# - name: l2adv +# addressPools: +# - pool1 +# nodeSelectors: +# - nodeA +BGPAdvertisements: [] +# - name: bgpadv +# addressPools: +# - pool1 +# aggregationLength: 24 +# localpref: 100 +# communities: +# - 1234:1 +# peers: +# - peer1 +Communities: [] +# - name: community1 +# value: 1234:1 +Peers: [] +# - name: peer1 +# myASN: 1234 +# password: pass +# routerID: 1234 +# bfdProfile: profile +# ebgpMultiHop: false +# holdTime: 10 +# keepaliveTime: 10 +# peerAddress: 172.30.0.2 +# peerPort: 179 +# sourceAddress: 172.30.0.3 +# nodeSelectors: +# - nodeA diff --git a/premium/metallb-config/6.5.3/questions.yaml b/premium/metallb-config/6.5.3/questions.yaml new file mode 100755 index 00000000000..2f1cc5655c1 --- /dev/null +++ b/premium/metallb-config/6.5.3/questions.yaml @@ -0,0 +1,368 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: ipAddressPools + group: App Configuration + label: IP Address Pools Object + schema: + type: list + default: [] + items: + - variable: ipAddressPoolsEntry + label: IP Address Pool Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: Name of the IP address pool + schema: + type: string + required: true + default: "" + - variable: autoAssign + label: Auto Assign + description: AutoAssign flag used to prevent MetallB from automatic + allocation for a pool. + schema: + type: boolean + default: true + - variable: avoidBuggyIPs + label: Avoid Buggy IPs + description: AvoidBuggyIPs prevents addresses ending with .0 and .255 + to be used by a pool. + schema: + type: boolean + default: false + - variable: addresses + label: Addresses Pools + description: A list of IP address ranges over which MetalLB has authority. + You can list multiple ranges in a single pool, they will all share + the same settings. Each range can be either a CIDR prefix, or an + explicit start-end range of IPs. + schema: + type: list + default: [] + items: + - variable: addressPoolEntry + label: Address Pool Entry + schema: + type: string + default: "" + required: true + - variable: L2Advertisements + group: App Configuration + label: L2 Advertisements + description: L2Advertisement allows to advertise the LoadBalancer IPs provided + by the selected pools via L2. + schema: + type: list + default: [] + items: + - variable: L2AdvertisementEntry + label: L2 Advertisement Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: Name of the L2 Advertisement + schema: + type: string + required: true + default: "" + - variable: addressPools + label: Address Pools + description: The list of IPAddressPools to advertise via this advertisement, + selected by name. + schema: + type: list + default: [] + items: + - variable: addressPoolEntry + label: Address Pool Entry + schema: + type: string + default: "" + required: true + - variable: nodeSelectors + label: Node Selectors + description: NodeSelectors allows to limit the nodes to announce as + next hops for the LoadBalancer IP. When empty, all the nodes having are + announced as next hops. + schema: + type: list + default: [] + items: + - variable: nodeSelectorEntry + label: Node Selector Entry + schema: + type: string + default: "" + required: true + - variable: Communities + group: App Configuration + label: Communities + description: Community is a collection of aliases for communities. Users can + define named aliases to be used in the BGPPeer CRD. + schema: + type: list + default: [] + items: + - variable: CommunityEntry + label: Community Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: The name of the alias for the community. + schema: + type: string + required: true + default: "" + - variable: value + label: Value + description: The BGP community value corresponding to the given name. + schema: + type: string + required: true + default: "" + - variable: Peers + group: App Configuration + label: Peers + description: BGPPeer is the Schema for the peers API. + schema: + type: list + default: [] + items: + - variable: PeerEntry + label: Peer Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: The name of the peer. + schema: + type: string + required: true + default: "" + - variable: bfdProfile + label: BFD Profile + description: The name of the BFD Profile to be used for the BFD session + associated to the BGP session. If not set, the BFD session won't + be set up. + schema: + type: string + default: "" + - variable: ebgpMultiHop + label: EBGP MultiHop + description: TTo set if the BGPPeer is multi-hops away. Needed for + FRR mode only. + schema: + type: boolean + default: false + - variable: holdTime + label: Hold Time + description: Requested BGP hold time, per RFC4271. + schema: + type: int + - variable: keepaliveTime + label: Keep Alive Time + description: Requested BGP keep alive time, per RFC4271. + schema: + type: int + - variable: myASN + label: My ASN + description: AS number to use for the local end of the session. + schema: + type: int + - variable: password + label: Password + description: Authentication password for routers enforcing TCP MD5 + authenticated sessions + schema: + type: string + private: true + default: "" + - variable: peerASN + label: Peer ASN + description: AS number to expect from the remote end of the session. + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: peerAddress + label: Peer Address + description: Address to dial when establishing the session. + schema: + type: string + default: "" + - variable: peerPort + label: Peer Port + description: Port to dial when establishing the session. + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: routerID + label: Router ID + description: BGP router ID to advertise to the peer + schema: + type: string + default: "" + - variable: sourceAddress + label: Source Address + description: Source address to use when establishing the session. + schema: + type: string + default: "" + - variable: nodeSelectors + label: Node Selectors + description: Only connect to this peer on nodes that match one of + these selectors. + schema: + type: list + default: [] + items: + - variable: nodeSelectorEntry + label: Node Selector Entry + schema: + type: string + default: "" + required: true + - variable: BGPAdvertisements + group: App Configuration + label: BGP Advertisements + description: BGPAdvertisement allows to advertise the IPs coming from the + selected IPAddressPools via BGP. + schema: + type: list + default: [] + items: + - variable: BGPAdvertisementEntry + label: BGP Advertisement Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: Name of the BGP Advertisement + schema: + type: string + required: true + default: "" + - variable: addressPools + label: Address Pools + description: The list of IPAddressPools to advertise via this advertisement, + selected by name. + schema: + type: list + default: [] + items: + - variable: addressPoolEntry + label: Address Pool Entry + schema: + type: string + default: "" + required: true + - variable: aggregationLength + label: Aggregation Length + description: The aggregation-length advertisement option lets you + "roll up" the /32s into a larger prefix. Defaults to 32. Works for + IPv4 addresses. + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: localpref + label: Local Pref + description: The BGP LOCAL_PREF attribute which is used by BGP best + path algorithm, Path with higher localpref is preferred over one + with lower localpref. + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: communities + label: Communities + description: The BGP communities to be associated with the announcement. + Each item can be a community of the form 1234:1234 or the name of + an alias defined in the Community CRD. + schema: + type: list + default: [] + items: + - variable: communityEntry + label: Community Entry + schema: + type: string + default: "" + required: true + - variable: peers + label: Peers + description: Peers limits the BGPpeer to advertise the ips of the + selected pools to. When empty, the loadbalancer IP is announced + to all the BGPPeers configured. + schema: + type: list + default: [] + items: + - variable: peerEntry + label: Peer Entry + schema: + type: string + default: "" + required: true diff --git a/premium/metallb-config/6.5.3/templates/NOTES.txt b/premium/metallb-config/6.5.3/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/metallb-config/6.5.3/templates/_bgpadvertisement.tpl b/premium/metallb-config/6.5.3/templates/_bgpadvertisement.tpl new file mode 100644 index 00000000000..27790c0e17d --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/_bgpadvertisement.tpl @@ -0,0 +1,33 @@ +{{- define "metallb.bgpadv" -}} +{{- range .Values.BGPAdvertisements }} +--- +apiVersion: metallb.io/v1beta1 +kind: BGPAdvertisement +metadata: + name: {{ .name }} + namespace: {{ $.Values.operatorNamespace }} +spec: + ipAddressPools: + {{- range .addressPools }} + - {{ . }} + {{- end }} + {{- with .aggregationLength }} + aggregationLength: {{ . | int }} + {{- end }} + {{- with .localpref }} + localpref: {{ . | int }} + {{- end }} + {{- if .communities }} + communities: + {{- range .communities }} + - {{ . }} + {{- end }} + {{- end }} + {{- if .peers }} + peers: + {{- range .peers }} + - {{ . }} + {{- end }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/premium/metallb-config/6.5.3/templates/_community.tpl b/premium/metallb-config/6.5.3/templates/_community.tpl new file mode 100644 index 00000000000..3cd66f96e98 --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/_community.tpl @@ -0,0 +1,16 @@ +{{- define "metallb.comm" -}} +{{- if .Values.Communities }} +--- +apiVersion: metallb.io/v1beta1 +kind: Community +metadata: + name: communities + namespace: {{ $.Values.operatorNamespace }} +spec: + communities: + {{- range .Values.Communities }} + - name: {{ .name }} + value: {{ .value }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/premium/metallb-config/6.5.3/templates/_ipaddresspool.tpl b/premium/metallb-config/6.5.3/templates/_ipaddresspool.tpl new file mode 100644 index 00000000000..f4c020920f0 --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/_ipaddresspool.tpl @@ -0,0 +1,17 @@ +{{- define "metallb.pool" -}} +{{- range .Values.ipAddressPools }} +--- +apiVersion: metallb.io/v1beta1 +kind: IPAddressPool +metadata: + name: {{ .name }} + namespace: {{ $.Values.operatorNamespace }} +spec: + addresses: + {{- range .addresses }} + - {{ . }} + {{- end }} + autoAssign: {{ .autoAssign | default true }} + avoidBuggyIPs: {{ .avoidBuggyIPs | default false }} +{{- end }} +{{- end -}} diff --git a/premium/metallb-config/6.5.3/templates/_l2advertisement.tpl b/premium/metallb-config/6.5.3/templates/_l2advertisement.tpl new file mode 100644 index 00000000000..beef850b9a6 --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/_l2advertisement.tpl @@ -0,0 +1,22 @@ +{{- define "metallb.l2adv" -}} +{{- range .Values.L2Advertisements }} +--- +apiVersion: metallb.io/v1beta1 +kind: L2Advertisement +metadata: + name: {{ .name }} + namespace: {{ $.Values.operatorNamespace }} +spec: + ipAddressPools: + {{- range .addressPools }} + - {{ . }} + {{- end }} + {{- if .nodeSelectors }} + {{- range .nodeSelectors }} + nodeSelectors: + - matchLabels: + kubernetes.io/hostname: {{ . }} + {{- end }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/premium/metallb-config/6.5.3/templates/_peers.tpl b/premium/metallb-config/6.5.3/templates/_peers.tpl new file mode 100644 index 00000000000..848e72462ae --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/_peers.tpl @@ -0,0 +1,51 @@ +{{- define "metallb.peers" -}} +{{- range .Values.Peers }} +--- +apiVersion: metallb.io/v1beta2 +kind: BGPPeer +metadata: + name: {{ .name }} + namespace: {{ $.Values.operatorNamespace }} +spec: + {{- with .password }} + password: {{ . }} + {{- end }} + {{- with .routerID }} + routerID: {{ . }} + {{- end }} + {{- with .bfdProfile }} + bfdProfile: {{ . }} + {{- end }} + {{- with .ebgpMultiHop }} + ebgpMultiHop: {{ . }} + {{- end }} + {{- with .holdTime }} + holdTime: {{ . }} + {{- end }} + {{- with .keepaliveTime }} + keepaliveTime: {{ . }} + {{- end }} + {{- with .myASN }} + myASN: {{ . }} + {{- end }} + {{- with .peerASN }} + peerASN: {{ . | int }} + {{- end }} + {{- with .peerAddress }} + peerAddress: {{ . }} + {{- end }} + {{- with .peerPort }} + peerPort: {{ . | int }} + {{- end }} + {{- with .sourceAddress }} + sourceAddress: {{ . }} + {{- end }} + {{- if .nodeSelectors }} + nodeSelectors: + {{- range .nodeSelectors }} + - matchLabels: + kubernetes.io/hostname: {{ . }} + {{- end }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/premium/metallb-config/6.5.3/templates/common.yaml b/premium/metallb-config/6.5.3/templates/common.yaml new file mode 100644 index 00000000000..05373874e9e --- /dev/null +++ b/premium/metallb-config/6.5.3/templates/common.yaml @@ -0,0 +1,21 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- $operatorNamespace := "metallb-system" -}} +{{- if .Values.operator.metallb -}} +{{ $operatorNamespace = ( $.Values.operator.metallb.namespace | default "metallb-system") }} +{{- end -}} +{{- $_ := set $.Values "operatorNamespace" $operatorNamespace -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} + +{{- include "metallb.l2adv" . }} + +{{- include "metallb.peers" . }} + +{{- include "metallb.bgpadv" . }} + +{{- include "metallb.comm" . }} + +{{- include "metallb.pool" . }} diff --git a/premium/metallb-config/6.5.3/values.yaml b/premium/metallb-config/6.5.3/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/metallb-config/item.yaml b/premium/metallb-config/item.yaml new file mode 100644 index 00000000000..ed1b2bb6277 --- /dev/null +++ b/premium/metallb-config/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/metallb-config.png +categories: + - core +screenshots: [] diff --git a/premium/nextcloud/29.5.6/.helmignore b/premium/nextcloud/29.5.6/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/nextcloud/29.5.6/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/nextcloud/29.5.6/CHANGELOG.md b/premium/nextcloud/29.5.6/CHANGELOG.md new file mode 100644 index 00000000000..bfea52fbdc7 --- /dev/null +++ b/premium/nextcloud/29.5.6/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [nextcloud-29.5.6](https://github.com/truecharts/charts/compare/nextcloud-29.5.5...nextcloud-29.5.6) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/nextcloud/29.5.6/Chart.yaml b/premium/nextcloud/29.5.6/Chart.yaml new file mode 100644 index 00000000000..582c732570e --- /dev/null +++ b/premium/nextcloud/29.5.6/Chart.yaml @@ -0,0 +1,53 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: cloud + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 28.0.3 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 13.0.3 + repository: oci://tccr.io/truecharts + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +deprecated: false +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/charts/premium/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +keywords: + - nextcloud + - storage + - http + - web + - php +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: nextcloud +sources: + - https://github.com/nextcloud/docker + - https://github.com/nextcloud/helm + - https://github.com/truecharts/charts/tree/master/charts/premium/nextcloud + - https://hub.docker.com/r/clamav/clamav + - https://github.com/truecharts/containers/tree/master/apps/nextcloud-push-notify + - https://hub.docker.com/r/collabora/code + - https://github.com/truecharts/containers/tree/master/apps/nextcloud-imaginary + - https://hub.docker.com/r/nginxinc/nginx-unprivileged + - https://github.com/truecharts/containers/tree/master/apps/nextcloud-fpm +type: application +version: 29.5.6 diff --git a/premium/nextcloud/29.5.6/LICENSE b/premium/nextcloud/29.5.6/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/premium/nextcloud/29.5.6/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/premium/nextcloud/29.5.6/README.md b/premium/nextcloud/29.5.6/README.md new file mode 100644 index 00000000000..48ac11ddf36 --- /dev/null +++ b/premium/nextcloud/29.5.6/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/nextcloud) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/nextcloud/29.5.6/app-changelog.md b/premium/nextcloud/29.5.6/app-changelog.md new file mode 100644 index 00000000000..8e7a44b2f34 --- /dev/null +++ b/premium/nextcloud/29.5.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nextcloud-29.5.6](https://github.com/truecharts/charts/compare/nextcloud-29.5.5...nextcloud-29.5.6) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/nextcloud/29.5.6/app-readme.md b/premium/nextcloud/29.5.6/app-readme.md new file mode 100644 index 00000000000..271d1136ba2 --- /dev/null +++ b/premium/nextcloud/29.5.6/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/nextcloud](https://truecharts.org/charts/premium/nextcloud) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/nextcloud/29.5.6/charts/common-20.0.9.tgz b/premium/nextcloud/29.5.6/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/nextcloud/29.5.6/charts/redis-13.0.3.tgz b/premium/nextcloud/29.5.6/charts/redis-13.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f04b6a89dbf1fec429f40b3f84e283fe39267c6f GIT binary patch literal 106633 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 z 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 VeEqSn{{{d6|NmLUX@CGU4FHbDjwk>C literal 0 HcmV?d00001 diff --git a/premium/nextcloud/29.5.6/ix_values.yaml b/premium/nextcloud/29.5.6/ix_values.yaml new file mode 100644 index 00000000000..08f6d693f0f --- /dev/null +++ b/premium/nextcloud/29.5.6/ix_values.yaml @@ -0,0 +1,516 @@ +image: + repository: tccr.io/tccr/nextcloud-fpm + pullPolicy: IfNotPresent + tag: v28.0.3@sha256:77b7353be48b28d1bc1dcfa8bed1e0f3c989f6223647f9c99b07db0e8ab78c8d +nginxImage: + repository: nginxinc/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.25.4@sha256:060d468f78f016c7cfd49a548ed5d3456891cba1b54767b4ed48907981266f06 +imaginaryImage: + repository: tccr.io/tccr/nextcloud-imaginary + pullPolicy: IfNotPresent + tag: v20230401@sha256:6be7b4432a536d6004b94edea7dd3573f0cc061328b729ed8043236a0784f98c +hpbImage: + repository: tccr.io/tccr/nextcloud-push-notify + pullPolicy: IfNotPresent + tag: v0.6.9@sha256:1950fd07cc1292551b16c7080514c24d8c22ce7947e06cbb12fd968d13970373 +clamavImage: + repository: clamav/clamav + pullPolicy: IfNotPresent + tag: 1.3.0@sha256:57555703249b4c57d760753bf3655871d3c51958bd5bd4a0dac6eb73c1c36516 +collaboraImage: + repository: collabora/code + pullPolicy: IfNotPresent + tag: 23.05.9.4.1@sha256:18768e665a817a06d17a608bcb0744dd0275e72d805644cad5ad1923f7d623b5 +nextcloud: + # Initial Credentials + credentials: + initialAdminUser: admin + initialAdminPassword: adminpass + # General settings + general: + # Custom Nextcloud Scripts + run_optimize: true + default_phone_region: GR + # IP used for exposing nextcloud, + # often the loadbalancer IP + accessIP: "" + # Allows Nextcloud to connect to unsecure (http) endpoints + force_enable_allow_local_remote_servers: false + # File settings + files: + shared_folder_name: Shared + max_chunk_size: 10485760 + # Expiration settings + expirations: + activity_expire_days: 90 + trash_retention_obligation: auto + versions_retention_obligation: auto + # Previews settings + previews: + enabled: true + # It will also deploy the container + imaginary: true + cron: true + schedule: "*/30 * * * *" + max_x: 2048 + max_y: 2048 + max_memory: 1024 + max_file_size_image: 50 + # Setting for Imaginary + max_allowed_resolution: 18.0 + jpeg_quality: 60 + square_sizes: 32 256 + width_sizes: 256 384 + height_sizes: 256 + # Casings are important + # https://github.com/nextcloud/server/blob/master/config/config.sample.php#L1269 + # Only the last part of the provider is needed + providers: + - PNG + - JPEG + # Logging settings + logging: + log_level: 2 + log_file: /var/www/html/data/logs/nextcloud.log + log_audit_file: /var/www/html/data/logs/audit.log + log_date_format: d/m/Y H:i:s + # ClamAV settings + clamav: + # It will also deploy the container + # Note that this runs as root + enabled: false + stream_max_length: 26214400 + file_max_size: -1 + infected_action: only_log + # Notify Push settings + notify_push: + # It will also deploy the container + enabled: true + # Collabora settings + collabora: + # It will also deploy the container + enabled: false + # default|compact|tabbed + interface_mode: default + username: admin + password: changeme + dictionaries: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + onlyoffice: + # It will not deploy the container + # Only add the OnlyOffice settings + enabled: false + url: "" + internal_url: "" + verify_ssl: true + jwt: "" + jwt_header: Authorization + # PHP settings + php: + memory_limit: 1G + upload_limit: 10G + pm_max_children: 180 + pm_start_servers: 18 + pm_min_spare_servers: 12 + pm_max_spare_servers: 30 + opcache: + interned_strings_buffer: 32 + max_accelerated_files: 10000 + memory_consumption: 128 + revalidate_freq: 60 + jit_buffer_size: 128 +# Do NOT edit below this line +workload: + # Nextcloud php-fpm + main: + type: Deployment + podSpec: + containers: + main: + enabled: true + primary: true + envFrom: + - configMapRef: + name: nextcloud-config + probes: + liveness: + enabled: true + type: exec + command: /healthcheck.sh + readiness: + enabled: true + type: exec + command: /healthcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}" + nginx: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + nginx: + enabled: true + primary: true + imageSelector: nginxImage + probes: + readiness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: "{{ .Values.service.main.ports.main.port }}" + notify: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + notify: + primary: true + enabled: true + imageSelector: hpbImage + envFrom: + - configMapRef: + name: hpb-config + probes: + readiness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: 7867 + imaginary: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + imaginary: + primary: true + enabled: true + imageSelector: imaginaryImage + command: imaginary + args: + - -p + - "{{ .Values.service.imaginary.ports.imaginary.port }}" + - -concurrency + - "10" + - -max-allowed-resolution + - "{{ .Values.nextcloud.previews.max_allowed_resolution }}" + - -enable-url-source + - -return-size + probes: + readiness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + liveness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + clamav: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + clamav: + primary: true + enabled: true + imageSelector: clamavImage + # FIXME: https://github.com/Cisco-Talos/clamav/issues/478 + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + envFrom: + - configMapRef: + name: clamav-config + probes: + readiness: + enabled: true + type: exec + command: clamdcheck.sh + liveness: + enabled: true + type: exec + command: clamdcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.clamav.ports.clamav.targetPort }}" + collabora: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + collabora: + primary: true + enabled: true + imageSelector: collaboraImage + securityContext: + runAsUser: 100 + runAsGroup: 102 + readOnlyRootFilesystem: false + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + - MKNOD + envFrom: + - configMapRef: + name: collabora-config + probes: + readiness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + liveness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" +cronjobs: + # Don't change names, it's used in the persistence + - name: nextcloud-cron + enabled: true + schedule: "*/5 * * * *" + cmd: + - echo "Running [php -f /var/www/html/cron.php] ..." + - php -f /var/www/html/cron.php + - echo "Finished [php -f /var/www/html/cron.php]" + - name: preview-cron + enabled: "{{ .Values.nextcloud.previews.cron }}" + schedule: "{{ .Values.nextcloud.previews.schedule }}" + cmd: + - echo "Running [occ preview:pre-generate] ..." + - occ preview:pre-generate + - echo "Finished [occ preview:pre-generate]" +service: + # Main service links to ingress easier + # That's why the nginx is swapped with nextcloud + main: + targetSelector: nginx + ports: + main: + targetSelector: nginx + port: 8080 + nextcloud: + enabled: true + targetSelector: main + ports: + nextcloud: + enabled: true + targetSelector: main + port: 9000 + targetPort: 9000 + notify: + enabled: true + targetSelector: notify + ports: + notify: + enabled: true + primary: true + port: 7867 + targetPort: 7867 + targetSelector: notify + metrics: + enabled: true + port: 7868 + targetSelector: notify + imaginary: + enabled: true + targetSelector: imaginary + ports: + imaginary: + enabled: true + port: 9090 + targetSelector: imaginary + clamav: + enabled: true + targetSelector: clamav + ports: + clamav: + enabled: true + port: 3310 + targetPort: 3310 + targetSelector: clamav + collabora: + enabled: true + targetSelector: collabora + ports: + collabora: + enabled: true + port: 9980 + targetPort: 9980 + targetSelector: collabora +persistence: + php-tune: + enabled: true + type: configmap + objectName: php-tune + targetSelector: + main: + main: + mountPath: /usr/local/etc/php-fpm.d/zz-tune.conf + subPath: zz-tune.conf + readOnly: true + redis-session: + enabled: true + type: configmap + objectName: redis-session + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/redis-session.ini + subPath: redis-session.ini + readOnly: true + opcache-recommended: + enabled: true + type: configmap + objectName: opcache + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/opcache-recommended.ini + subPath: opcache-recommended.ini + readOnly: true + nginx: + enabled: true + type: configmap + objectName: nginx-config + targetSelector: + nginx: + nginx: + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + nginx-temp: + enabled: true + type: emptyDir + targetSelector: + nginx: + nginx: + mountPath: /tmp/nginx + html: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html + preview-cron: + preview-cron: + mountPath: /var/www/html + nginx: + nginx: + mountPath: /var/www/html + readOnly: true + config: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/config + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/config + preview-cron: + preview-cron: + mountPath: /var/www/html/config + notify: + notify: + mountPath: /var/www/html/config + readOnly: true + nginx: + nginx: + mountPath: /var/www/html/config + readOnly: true + data: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/data + init-perms: + mountPath: /var/www/html/data + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/data + preview-cron: + preview-cron: + mountPath: /var/www/html/data + nginx: + nginx: + mountPath: /var/www/html/data + readOnly: true +cnpg: + main: + enabled: true + user: nextcloud + database: nextcloud +redis: + enabled: true + username: default +portal: + open: + enabled: true +updated: true + +ingress: + main: + required: true diff --git a/premium/nextcloud/29.5.6/questions.yaml b/premium/nextcloud/29.5.6/questions.yaml new file mode 100755 index 00000000000..aa22b141282 --- /dev/null +++ b/premium/nextcloud/29.5.6/questions.yaml @@ -0,0 +1,4144 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: nextcloud + group: App Configuration + label: Nextcloud + schema: + additional_attrs: true + type: dict + attrs: + - variable: credentials + label: Initial Credentials + schema: + additional_attrs: true + type: dict + attrs: + - variable: initialAdminUser + label: Initial Admin User + description: Sets the initial admin username + schema: + type: string + required: true + default: "" + - variable: initialAdminPassword + label: Initial Admin Password + description: Sets the initial admin password + schema: + type: string + required: true + private: true + default: "" + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: run_optimize + label: Run Optimize Scripts + description: | + Runs the following commands at startup:
+ occ db:add-missing-indices
+ occ db:add-missing-columns
+ occ db:add-missing-primary-keys
+ yes | occ db:convert-filecache-bigint
+ occ maintenance:mimetype:update-js
+ occ maintenance:mimetype:update-db
+ occ maintenance:update:htaccess
+ schema: + type: boolean + default: false + - variable: default_phone_region + label: Default Phone Region + description: | + Sets the default phone region in ISO_3166-1 format (e.g. US).
+ https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + schema: + type: string + valid_chars: '^[A-Z]{2}$' + required: true + default: "" + - variable: accessIP + label: Access IP + description: Set to the IP-Address used to reach Nextcloud. + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: force_enable_allow_local_remote_servers + label: Force Enable Allow Local Remote Servers + description: + Enables 'allow_local_remote_servers' option + schema: + type: boolean + default: false + - variable: files + label: Files Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: shared_folder_name + label: Shared Folder Name + schema: + type: string + required: true + default: Shared + - variable: max_chunk_size + label: Max Chunk Size + schema: + type: int + required: true + default: 10485760 + - variable: expirations + label: Expirations Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: activity_expire_days + label: Activity Expire Days + schema: + type: int + required: true + default: 90 + - variable: trash_retention_obligation + label: Trash Retention Obligation + schema: + type: string + required: true + default: auto + - variable: versions_retention_obligation + label: Versions Retention Obligation + schema: + type: string + required: true + default: auto + - variable: previews + label: Previews Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Previews + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: imaginary + label: Enable imaginary + description: | + Enable imaginary to generate previews in the background.
+ It will also deploy the needed container. + schema: + type: boolean + default: true + - variable: cron + label: Enable cron + description: | + Enable cron to generate previews in the background. + schema: + type: boolean + default: true + - variable: schedule + label: Cron Schedule + schema: + type: string + default: "*/30 * * * *" + - variable: max_x + label: Max X + schema: + type: int + required: true + default: 2048 + - variable: max_y + label: Max Y + schema: + type: int + required: true + default: 2048 + - variable: max_memory + label: Max Memory + schema: + type: int + required: true + default: 1024 + - variable: max_allowed_resolution + label: Max Allowed Resolution + schema: + type: string + valid_chars: '^[0-9]{1,5}(\.[0-9]{1,2})?$' + show_if: [["imaginary", "=", true]] + required: true + default: "18.0" + - variable: max_file_size_image + label: Max File Size Image + schema: + type: int + required: true + default: 50 + - variable: jpeg_quality + label: JPEG Quality + schema: + type: int + required: true + default: 60 + - variable: square_sizes + label: Square Sizes + schema: + type: string + required: true + default: "32 256" + - variable: width_sizes + label: Width Sizes + schema: + type: string + required: true + default: "256 384" + - variable: height_sizes + label: Height Sizes + schema: + type: string + required: true + default: "256" + - variable: providers + label: Providers + schema: + type: list + empty: false + required: true + default: + - BMP + - GIF + - JPEG + - Krita + - MarkDown + - MP3 + - OpenDocument + - PNG + - TXT + - XBitmap + items: + - variable: provider_entry + label: Provider Entry + schema: + type: string + required: true + default: "" + enum: + - value: BMP + description: BMP + - value: Font + description: Font + - value: GIF + description: GIF + - value: HEIC + description: HEIC + - value: Illustrator + description: Illustrator + - value: JPEG + description: JPEG + - value: Krita + description: Krita + - value: MarkDown + description: MarkDown + - value: Movie + description: Movie + - value: MP3 + description: MP3 + - value: MSOffice2003 + description: MSOffice2003 + - value: MSOffice2007 + description: MSOffice2007 + - value: MSOfficeDoc + description: MSOfficeDoc + - value: OpenDocument + description: OpenDocument + - value: PDF + description: PDF + - value: Photoshop + description: Photoshop + - value: PNG + description: PNG + - value: Postscript + description: Postscript + - value: StarOffice + description: StarOffice + - value: SVG + description: SVG + - value: TIFF + description: TIFF + - value: TXT + description: TXT + - value: XBitmap + description: XBitmap + - variable: logging + label: Logging Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: log_level + label: Log Level + schema: + type: int + required: true + default: 2 + enum: + - value: 0 + description: Debug + - value: 1 + description: Info + - value: 2 + description: Warning + - value: 3 + description: Error + - value: 4 + description: Fatal + - variable: log_date_format + label: Log Date Format + schema: + type: string + required: true + default: d/m/Y H:i:s + - variable: notify_push + label: Notify Push Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Notify Push + description: | + Enable and Configure Notify Push.
+ It will also deploy the needed container + schema: + type: boolean + default: true + - variable: clamav + label: ClamAV Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable ClamAV + description: | + Enable and configure ClamAV.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root.
+ https://github.com/Cisco-Talos/clamav/issues/478 + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: stream_max_length + label: Stream Max Length + schema: + type: int + required: true + default: 104857600 + - variable: file_max_size + label: File Max Size + schema: + type: int + required: true + default: -1 + - variable: infected_action + label: Infected Action + schema: + type: string + required: true + default: only_log + enum: + - value: delete + description: Delete + - value: only_log + description: Only Log + - variable: collabora + label: Collabora Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Collabora + description: | + Enable and configure Collabora.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: interface_mode + label: Interface Mode + schema: + type: string + required: true + default: default + enum: + - value: default + description: Default + - value: compact + description: Compact + - value: tabbed + description: Tabbed + - variable: username + label: Username + schema: + type: string + default: admin + required: true + - variable: password + label: Password + schema: + type: string + default: "" + required: true + - variable: dictionaries + label: Dictionaries + schema: + type: list + empty: false + required: true + default: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + items: + - variable: dictionary + label: Dictionary + schema: + type: string + required: true + default: "" + - variable: onlyoffice + label: Only Office Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable OnlyOffice + description: | + Enable and configure OnlyOffice.
+ This will NOT deploy the needed container.
+ You need to deploy it yourself. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: url + label: Public URL + description: | + The public FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: internal_url + label: Internal URL + description: | + The internal FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: verify_ssl + label: Verify SSL (Advanced) + description: | + Verify SSL when connecting to OnlyOffice Document Server + schema: + type: boolean + default: true + - variable: jwt + label: JWT + schema: + type: string + required: true + default: "" + - variable: jwt_header + label: JWT Header + schema: + type: string + required: true + default: Authorization + - variable: php + label: PHP Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: memory_limit + label: Memory Limit + schema: + type: string + required: true + default: 1G + - variable: upload_limit + label: Upload Limit + schema: + type: string + required: true + default: 10G + - variable: pm_max_children + label: Max Children + schema: + type: int + required: true + default: 180 + - variable: pm_start_servers + label: Start Servers + schema: + type: int + required: true + default: 18 + - variable: pm_min_spare_servers + label: Minimum Spare Servers + schema: + type: int + required: true + default: 12 + - variable: pm_max_spare_servers + label: Maximum Spare Servers + schema: + type: int + required: true + default: 30 + - variable: opcache + label: OPCache Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: interned_strings_buffer + label: Interned Strings Buffer + description: The amount of memory used to store interned strings, in megabytes. + schema: + type: int + required: true + default: 32 + - variable: max_accelerated_files + label: Max Accelerated Files + description: The maximum number of keys (and therefore scripts) in the OPcache hash table. + schema: + type: int + required: true + default: 10000 + - variable: memory_consumption + label: Memory Consumption + description: The size of the shared memory storage used by OPcache, in megabytes. + schema: + type: int + required: true + default: 128 + - variable: revalidate_freq + label: Revalidate Frequency + description: How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request. + schema: + type: int + required: true + default: 60 + - variable: jit_buffer_size + label: JIT Buffer Size + description: The amount of shared memory (in megabytes) to reserve for compiled JIT code. A zero value disables the JIT. + schema: + type: int + required: true + default: 128 + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + + - variable: html + label: App HTML Storage + description: Stores the Application HTML. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: config + label: App Config Storage + description: Stores the Application Config. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: data + label: User Data Storage + description: Stores the User Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID of the user running the application + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: cnpg + group: Postgresql + label: "CloudNative-PG (CNPG)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: mode + label: Mode + description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.' + schema: + type: string + default: "standalone" + enum: + - value: standalone + description: standalone + - value: replica + description: replica + - value: recovery + description: recovery + - variable: cluster + label: "Cluster Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 1 + - variable: singleNode + label: singleNode + schema: + type: boolean + default: true + hidden: true + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walStorage + label: "WAL Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: monitoring + label: "Monitoring Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: disableDefaultQueries + label: "disableDefaultQueries" + schema: + type: boolean + default: false + - variable: pooler + label: "Pooler Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: instances + label: Instances + schema: + type: int + show_if: [["enabled", "=", true]] + default: 1 + - variable: createRO + label: "Create ReadOnly Instance" + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: false + - variable: backups + label: "Backup Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: destinationPath + label: "destinationPath" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: retentionPolicy + label: "retentionPolicy" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "30d" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: recovery + label: "Recovery Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: method + label: "method" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "object_store" + - variable: backupName + label: "backupName" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/premium/nextcloud/29.5.6/templates/NOTES.txt b/premium/nextcloud/29.5.6/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/nextcloud/29.5.6/templates/_configmap.tpl b/premium/nextcloud/29.5.6/templates/_configmap.tpl new file mode 100644 index 00000000000..081cf5d71c2 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_configmap.tpl @@ -0,0 +1,443 @@ +{{- define "nextcloud.accessurl" -}} + {{- $accessUrl := .Values.chartContext.appUrl -}} + {{- if or (contains "127.0.0.1" $accessUrl) (contains "localhost" $accessUrl) -}} + {{- if .Values.nextcloud.general.accessIP -}} + {{- $prot := "http" -}} + {{- $host := .Values.nextcloud.general.accessIP -}} + {{- $port := .Values.service.main.ports.main.port -}} + {{/* + Allowing here to override protocol and port + should be enough to make it work with any rev proxy + */}} + {{- $accessUrl = printf "%v://%v:%v" $prot $host $port -}} + {{- end -}} + {{- end -}} + + {{- $accessUrl -}} +{{- end -}} + +{{- define "nextcloud.accesshost" -}} + {{- $accessUrl := (include "nextcloud.accessurl" $) -}} + {{- $accessHost := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} + {{- $accessHost = regexReplaceAll "(.*):.*" $accessHost "${1}" -}} + + {{- $accessHost -}} +{{- end -}} + +{{/* Define the configmap */}} +{{- define "nextcloud.configmaps" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $fqdn := (include "tc.v1.common.lib.chart.names.fqdn" $) -}} +{{- $accessUrl := (include "nextcloud.accessurl" $) -}} +{{- $accessHost := (include "nextcloud.accesshost" $) -}} +{{- $accessHostPort := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} +{{- $accessProtocol := regexReplaceAll "(.*)://.*" $accessUrl "${1}" -}} +{{- $redisHost := .Values.redis.creds.plainhost | trimAll "\"" -}} +{{- $redisPass := .Values.redis.creds.redisPassword | trimAll "\"" -}} +{{- $healthHost := "kube.internal.healthcheck" -}} + +php-tune: + enabled: true + data: + zz-tune.conf: | + [www] + pm.max_children = {{ .Values.nextcloud.php.pm_max_children }} + pm.start_servers = {{ .Values.nextcloud.php.pm_start_servers }} + pm.min_spare_servers = {{ .Values.nextcloud.php.pm_min_spare_servers }} + pm.max_spare_servers = {{ .Values.nextcloud.php.pm_max_spare_servers }} + +opcache: + enabled: true + data: + opcache-recommended.ini: | + opcache.enable=1 + opcache.save_comments=1 + opcache.jit=1255 + opcache.interned_strings_buffer={{ .Values.nextcloud.opcache.interned_strings_buffer }} + opcache.max_accelerated_files={{ .Values.nextcloud.opcache.max_accelerated_files }} + opcache.memory_consumption={{ .Values.nextcloud.opcache.memory_consumption }} + opcache.revalidate_freq={{ .Values.nextcloud.opcache.revalidate_freq }} + opcache.jit_buffer_size={{ printf "%vM" .Values.nextcloud.opcache.jit_buffer_size }} + +redis-session: + enabled: true + data: + redis-session.ini: | + session.save_handler = redis + session.save_path = {{ printf "tcp://%v:6379?auth=%v" $redisHost $redisPass | quote }} + redis.session.locking_enabled = 1 + redis.session.lock_retries = -1 + redis.session.lock_wait_time = 10000 + +hpb-config: + enabled: {{ .Values.nextcloud.notify_push.enabled }} + data: + NEXTCLOUD_URL: {{ printf "http://%v:%v" $fullname .Values.service.main.ports.main.port }} + HPB_HOST: {{ $healthHost }} + CONFIG_FILE: {{ printf "%v/config.php" .Values.persistence.config.targetSelector.notify.notify.mountPath }} + METRICS_PORT: {{ .Values.service.notify.ports.metrics.port | quote }} + +clamav-config: + enabled: {{ .Values.nextcloud.clamav.enabled }} + data: + CLAMAV_NO_CLAMD: "false" + CLAMAV_NO_FRESHCLAMD: "true" + CLAMAV_NO_MILTERD: "true" + CLAMD_STARTUP_TIMEOUT: "1800" + +collabora-config: + enabled: {{ .Values.nextcloud.collabora.enabled }} + data: + aliasgroup1: {{ $accessUrl }} + server_name: {{ $accessHostPort }} + dictionaries: {{ join " " .Values.nextcloud.collabora.dictionaries }} + username: {{ .Values.nextcloud.collabora.username | quote }} + password: {{ .Values.nextcloud.collabora.password | quote }} + DONT_GEN_SSL_CERT: "true" + # mount_jail_tree is only used for local storage + # not needed for WOPI https://github.com/CollaboraOnline/online/issues/3604#issuecomment-989833814 + extra_params: | + --o:ssl.enable=false + --o:ssl.termination=true + --o:net.service_root=/collabora + --o:home_mode.enable=true + --o:welcome.enable=false + --o:logging.level=warning + --o:logging.level_startup=warning + --o:security.seccomp=true + --o:mount_jail_tree=false + --o:user_interface.mode={{ .Values.nextcloud.collabora.interface_mode }} + +nextcloud-config: + enabled: true + data: + {{/* Database */}} + POSTGRES_DB: {{ .Values.cnpg.main.database | quote }} + POSTGRES_USER: {{ .Values.cnpg.main.user | quote }} + POSTGRES_PASSWORD: {{ .Values.cnpg.main.creds.password | trimAll "\"" }} + POSTGRES_HOST: {{ .Values.cnpg.main.creds.host | trimAll "\"" }} + + {{/* Redis */}} + NX_REDIS_HOST: {{ $redisHost }} + NX_REDIS_PASS: {{ $redisPass }} + + {{/* Nextcloud INITIAL credentials */}} + NEXTCLOUD_ADMIN_USER: {{ .Values.nextcloud.credentials.initialAdminUser | quote }} + NEXTCLOUD_ADMIN_PASSWORD: {{ .Values.nextcloud.credentials.initialAdminPassword | quote }} + + {{/* PHP Variables */}} + PHP_MEMORY_LIMIT: {{ .Values.nextcloud.php.memory_limit | quote }} + PHP_UPLOAD_LIMIT: {{ .Values.nextcloud.php.upload_limit | quote }} + + {{/* Notify Push */}} + NX_NOTIFY_PUSH: {{ .Values.nextcloud.notify_push.enabled | quote }} + {{- if .Values.nextcloud.notify_push.enabled }} + NX_NOTIFY_PUSH_ENDPOINT: {{ $accessUrl }}/push + {{- end }} + + {{/* Previews */}} + NX_PREVIEWS: {{ .Values.nextcloud.previews.enabled | quote }} + NX_PREVIEW_PROVIDERS: {{ join " " .Values.nextcloud.previews.providers }} + NX_PREVIEW_MAX_X: {{ .Values.nextcloud.previews.max_x | quote }} + NX_PREVIEW_MAX_Y: {{ .Values.nextcloud.previews.max_y | quote }} + NX_PREVIEW_MAX_MEMORY: {{ .Values.nextcloud.previews.max_memory | quote }} + NX_PREVIEW_MAX_FILESIZE_IMAGE: {{ .Values.nextcloud.previews.max_file_size_image | quote }} + NX_JPEG_QUALITY: {{ .Values.nextcloud.previews.jpeg_quality | quote }} + NX_PREVIEW_SQUARE_SIZES: {{ .Values.nextcloud.previews.square_sizes | quote }} + NX_PREVIEW_WIDTH_SIZES: {{ .Values.nextcloud.previews.width_sizes | quote }} + NX_PREVIEW_HEIGHT_SIZES: {{ .Values.nextcloud.previews.height_sizes | quote }} + + {{/* Imaginary */}} + NX_IMAGINARY: {{ and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary | quote }} + {{- if and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary }} + NX_IMAGINARY_URL: {{ printf "http://%v-imaginary:%v" $fullname .Values.service.imaginary.ports.imaginary.port }} + {{- end }} + + {{/* Expirations */}} + NX_ACTIVITY_EXPIRE_DAYS: {{ .Values.nextcloud.expirations.activity_expire_days | quote }} + NX_TRASH_RETENTION: {{ .Values.nextcloud.expirations.trash_retention_obligation | quote }} + NX_VERSIONS_RETENTION: {{ .Values.nextcloud.expirations.versions_retention_obligation | quote }} + + {{/* General */}} + NX_RUN_OPTIMIZE: {{ .Values.nextcloud.general.run_optimize | quote }} + NX_DEFAULT_PHONE_REGION: {{ .Values.nextcloud.general.default_phone_region | quote }} + NEXTCLOUD_DATA_DIR: {{ .Values.persistence.data.targetSelector.main.main.mountPath }} + NX_FORCE_ENABLE_ALLOW_LOCAL_REMOTE_SERVERS: {{ .Values.nextcloud.general.force_enable_allow_local_remote_servers | quote }} + + {{/* Files */}} + NX_SHARED_FOLDER_NAME: {{ .Values.nextcloud.files.shared_folder_name | quote }} + NX_MAX_CHUNKSIZE: {{ .Values.nextcloud.files.max_chunk_size | mul 1 | quote }} + + {{/* Logging */}} + NX_LOG_LEVEL: {{ .Values.nextcloud.logging.log_level | quote }} + NX_LOG_FILE: {{ .Values.nextcloud.logging.log_file | quote }} + NX_LOG_FILE_AUDIT: {{ .Values.nextcloud.logging.log_audit_file | quote }} + NX_LOG_DATE_FORMAT: {{ .Values.nextcloud.logging.log_date_format | quote }} + NX_LOG_TIMEZONE: {{ .Values.TZ | quote }} + + {{/* ClamAV */}} + NX_CLAMAV: {{ .Values.nextcloud.clamav.enabled | quote }} + {{- if .Values.nextcloud.clamav.enabled }} + NX_CLAMAV_HOST: {{ printf "%v-clamav" $fullname }} + NX_CLAMAV_PORT: {{ .Values.service.clamav.ports.clamav.targetPort | quote }} + NX_CLAMAV_STREAM_MAX_LENGTH: {{ .Values.nextcloud.clamav.stream_max_length | mul 1 | quote }} + NX_CLAMAV_FILE_MAX_SIZE: {{ .Values.nextcloud.clamav.file_max_size | quote }} + NX_CLAMAV_INFECTED_ACTION: {{ .Values.nextcloud.clamav.infected_action | quote }} + {{- end }} + + {{/* Collabora */}} + NX_COLLABORA: {{ .Values.nextcloud.collabora.enabled | quote }} + {{- if .Values.nextcloud.collabora.enabled }} + NX_COLLABORA_URL: {{ printf "%v/collabora" $accessUrl | quote }} + # Ideally this would be a combo of: public ip, pod cidr, svc cidr + # But not always people have static IP. + NX_COLLABORA_ALLOWLIST: "0.0.0.0/0" + {{- end }} + + {{/* Only Office */}} + NX_ONLYOFFICE: {{ .Values.nextcloud.onlyoffice.enabled | quote }} + {{- if .Values.nextcloud.onlyoffice.enabled }} + NX_ONLYOFFICE_URL: {{ .Values.nextcloud.onlyoffice.url | quote }} + NX_ONLYOFFICE_INTERNAL_URL: {{ .Values.nextcloud.onlyoffice.internal_url | quote }} + NX_ONLYOFFICE_VERIFY_SSL: {{ .Values.nextcloud.onlyoffice.verify_ssl | quote }} + NX_ONLYOFFICE_NEXTCLOUD_INTERNAL_URL: {{ printf "http://%v.svc.cluster.local:%v" $fqdn .Values.service.main.ports.main.port }} + NX_ONLYOFFICE_JWT: {{ .Values.nextcloud.onlyoffice.jwt | quote }} + NX_ONLYOFFICE_JWT_HEADER: {{ .Values.nextcloud.onlyoffice.jwt_header | quote }} + {{- end }} + + {{/* URLs */}} + NX_OVERWRITE_HOST: {{ $accessHostPort }} + NX_OVERWRITE_CLI_URL: {{ $accessUrl }} + # Return the protocol part of the URL + NX_OVERWRITE_PROTOCOL: {{ $accessProtocol | lower }} + # IP (or range in this case) of the proxy(ies) + NX_TRUSTED_PROXIES: | + {{ .Values.chartContext.podCIDR }} + {{ .Values.chartContext.svcCIDR }} + # fullname-* will allow access from the + # other services in the same namespace + NX_TRUSTED_DOMAINS: | + 127.0.0.1 + localhost + {{ $fullname }} + {{ printf "%v-*" $fullname }} + {{ $healthHost }} + {{- if not (contains "127.0.0.1" $accessHost) }} + {{- $accessHost | nindent 6 }} + {{- end -}} + {{- with .Values.nextcloud.general.accessIP }} + {{- . | nindent 6 }} + {{- end }} + +# TODO: Replace locations with ingress +# like /push, /.well-known/carddav, /.well-known/caldav +# needs some work as nginx converts urls to pretty urls +# before matching them to locations, so ingress needs to +# take that into consideration. +nginx-config: + enabled: true + data: + nginx.conf: | + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + # Set to /tmp so it can run as non-root + pid /tmp/nginx.pid; + + events { + worker_connections 1024; + } + + http { + # Set to /tmp so it can run as non-root + client_body_temp_path /tmp/nginx/client_temp; + proxy_temp_path /tmp/nginx/proxy_temp_path; + fastcgi_temp_path /tmp/nginx/fastcgi_temp; + uwsgi_temp_path /tmp/nginx/uwsgi_temp; + scgi_temp_path /tmp/nginx/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server {{ printf "%v-nextcloud" $fullname }}:{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}; + } + + server { + listen {{ .Values.service.main.ports.main.port }}; + absolute_redirect off; + + {{- if .Values.nextcloud.notify_push.enabled }} + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + # The trailing "/" is important! + proxy_pass http://{{ printf "%v-notify" $fullname }}:{{ .Values.service.notify.ports.notify.targetPort }}/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + {{- end }} + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # Set max upload size + client_max_body_size {{ .Values.nextcloud.php.upload_limit | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + include mime.types; + types { + text/javascript js mjs; + } + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "noindex, nofollow" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root {{ .Values.persistence.html.targetSelector.nginx.nginx.mountPath }}; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + proxy_send_timeout 3600s; + proxy_read_timeout 3600s; + fastcgi_send_timeout 3600s; + fastcgi_read_timeout 3600s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/_cronjobs.tpl b/premium/nextcloud/29.5.6/templates/_cronjobs.tpl new file mode 100644 index 00000000000..0fa050dba68 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_cronjobs.tpl @@ -0,0 +1,34 @@ +{{- define "nextcloud.cronjobs" -}} +{{- range $cj := .Values.cronjobs }} + {{- $name := $cj.name | required "Nextcloud - Expected non-empty name in cronjob" -}} + {{- $schedule := $cj.schedule | required "Nextcloud - Expected non-empty schedule in cronjob" }} + +{{ $name }}: + enabled: {{ $cj.enabled | quote }} + type: CronJob + schedule: {{ $schedule | quote }} + podSpec: + restartPolicy: Never + containers: + {{ $name }}: + enabled: true + primary: true + imageSelector: image + command: + - /bin/bash + - -c + - | + {{- range $cj.cmd }} + {{- . | nindent 12 }} + {{- else -}} + {{- fail "Nextcloud - Expected non-empty cmd in cronjob" -}} + {{- end }} + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +{{- end }} +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/_ingressInjector.tpl b/premium/nextcloud/29.5.6/templates/_ingressInjector.tpl new file mode 100644 index 00000000000..f99f5bd5047 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_ingressInjector.tpl @@ -0,0 +1,23 @@ +{{- define "nextcloud.ingressInjector" -}} + {{- if .Values.ingress.main.enabled -}} + {{- $injectPaths := list -}} + {{- if .Values.nextcloud.collabora.enabled -}} + {{- $injectPaths = mustAppend $injectPaths (include "nextcloud.collabora.ingress" $ | fromYaml) -}} + {{- end -}} + {{/* Append more paths here if needed */}} + + {{- range $host := .Values.ingress.main.hosts -}} + {{- $paths := $host.paths -}} + {{- $paths = concat $paths $injectPaths -}} + {{- $_ := set $host "paths" $paths -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "nextcloud.collabora.ingress" -}} +path: /collabora/ +pathType: Prefix +overrideService: + name: collabora + port: {{ .Values.service.collabora.ports.collabora.port }} +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/_initPerms.tpl b/premium/nextcloud/29.5.6/templates/_initPerms.tpl new file mode 100644 index 00000000000..ed94790ad93 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_initPerms.tpl @@ -0,0 +1,29 @@ +{{- define "nextcloud.init.perms" -}} +{{- $uid := .Values.securityContext.container.runAsUser -}} +{{- $gid := .Values.securityContext.container.runAsGroup -}} +{{- $path := .Values.persistence.data.targetSelector.main.main.mountPath }} +enabled: true +type: install +imageSelector: alpineImage +securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + capabilities: + disableS6Caps: true + add: + - DAC_OVERRIDE + - FOWNER + - CHOWN +command: /bin/sh +args: + - -c + - | + echo "Setting permissions to 700 on data directory [{{ $path }}] ..." + chmod 770 {{ $path }} | echo "Failed to set permissions on data directory [{{ $path }}]" + + echo "Setting ownership to {{ $uid }}:{{ $gid }} on data directory [{{ $path }}] ..." + chown {{ $uid }}:{{ $gid }} {{ $path }} | echo "Failed to set ownership on data directory [{{ $path }}]" + + echo "Finished." +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/_validation.tpl b/premium/nextcloud/29.5.6/templates/_validation.tpl new file mode 100644 index 00000000000..5650c0f63fe --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_validation.tpl @@ -0,0 +1,42 @@ +{{- define "nextcloud.validation" -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.memory_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.memory_limit) -}} + {{- end -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.upload_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.upload_limit) -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.previews.providers (uniq .Values.nextcloud.previews.providers)) -}} + {{- fail (printf "Nextcloud - Expected preview providers to be unique but got [%v]" .Values.nextcloud.previews.providers) -}} + {{- end -}} + + {{- if and .Values.nextcloud.collabora.enabled .Values.nextcloud.onlyoffice.enabled -}} + {{- fail "Nextcloud - Expected only one of [Collabora, OnlyOffice] to be enabled" -}} + {{- end -}} + + {{- if contains "$" .Values.nextcloud.collabora.password -}} + {{- fail "Nextcloud - Collabora [Password] cannot contain [$]" -}} + {{- end -}} + + {{- if .Values.nextcloud.collabora.enabled -}} + {{- if lt (len .Values.nextcloud.collabora.password) 8 -}} + {{- fail "Nextcloud - Collabora [Password] must be at least 8 characters" -}} + {{- end -}} + + {{- $collaboraUIModes := (list "default" "compact" "tabbed") -}} + {{- if not (mustHas .Values.nextcloud.collabora.interface_mode $collaboraUIModes) -}} + {{- fail (printf "Nextcloud - Expected [Interface Mode] in Collabora to be one of [%v], but got [%v]" (join "," $collaboraUIModes) .Values.nextcloud.collabora.interface_mode) -}} + {{- end -}} + + {{- if not .Values.nextcloud.collabora.dictionaries -}} + {{- fail "Nextcloud - Expected non-empty Collabora [Dictionaries]" -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.collabora.dictionaries (uniq .Values.nextcloud.collabora.dictionaries)) -}} + {{- fail "Nextcloud - Collabora [Dictionaries] must be unique" -}} + {{- end -}} + {{- end -}} + +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/_waitNextcloud.tpl b/premium/nextcloud/29.5.6/templates/_waitNextcloud.tpl new file mode 100644 index 00000000000..24946d640e8 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/_waitNextcloud.tpl @@ -0,0 +1,25 @@ +{{- define "nextcloud.wait.nextcloud" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $ncURL := printf "%v-nextcloud:%v" $fullname .Values.service.nextcloud.ports.nextcloud.targetPort }} +enabled: true +type: init +imageSelector: image +securityContext: +command: /bin/sh +args: + - -c + - | + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + until \ + REQUEST_METHOD="GET" \ + SCRIPT_NAME="status.php" \ + SCRIPT_FILENAME="status.php" \ + cgi-fcgi -bind -connect "{{ $ncURL }}" | grep -q '"installed":true'; + do + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + sleep 3 + done + + echo "Nextcloud is ready and installed..." + echo "Starting Nginx..." +{{- end -}} diff --git a/premium/nextcloud/29.5.6/templates/common.yaml b/premium/nextcloud/29.5.6/templates/common.yaml new file mode 100644 index 00000000000..d7576a0fb57 --- /dev/null +++ b/premium/nextcloud/29.5.6/templates/common.yaml @@ -0,0 +1,92 @@ +{{- $selector := dict -}} +{{- range $name := (list "main" "nextcloud-cron" "preview-cron") -}} + {{/* creates main: {} */}} + {{- $_ := set $selector $name dict -}} + {{/* sets main: {} to main: { main: {} } */}} + {{- $_ := set (get $selector $name) $name dict -}} +{{- end -}} + +{{- range $item := .Values.persistenceList -}} + {{- $_ := set $item "targetSelector" $selector -}} +{{- end -}} + +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . -}} + +{{- include "nextcloud.validation" $ -}} + +{{/* Render configmaps for all pods */}} +{{- $configmaps := include "nextcloud.configmaps" . | fromYaml -}} +{{- if $configmaps -}} + {{- $_ := mustMergeOverwrite .Values.configmap $configmaps -}} +{{- end -}} + +{{/* Create hostAliases (resolve ingress host to Node/LB IP) */}} +{{- $hostAlias := (list (dict + "ip" .Values.nextcloud.general.accessIP + "hostnames" ( + list (include "nextcloud.accesshost" $) + ) + )) -}} + +{{/* Add [hostAliases] to nextcloud and collabora pod */}} +{{- $_ := set .Values.workload.main.podSpec "hostAliases" $hostAlias -}} +{{- $_ := set .Values.workload.collabora.podSpec "hostAliases" $hostAlias -}} + +{{/* Add [init perms] container to nextcloud */}} +{{- if not (get .Values.workload.main.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.main.podSpec "initContainers" dict -}} +{{- end -}} + +{{- $initPerms := (include "nextcloud.init.perms" . | fromYaml) -}} +{{- $_ := set .Values.workload.main.podSpec.initContainers "init-perms" $initPerms -}} + +{{/* Add [wait nextcloud] container to nginx */}} +{{- if not (get .Values.workload.nginx.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.nginx.podSpec "initContainers" dict -}} +{{- end -}} +{{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} +{{- $_ := set .Values.workload.nginx.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} + +{{/* Disable [notify push] if requested */}} +{{- if not .Values.nextcloud.notify_push.enabled -}} + {{- $_ := set .Values.workload.notify "enabled" false -}} + {{- $_ := set .Values.service.notify "enabled" false -}} +{{- else -}} + {{/* Add [wait nextcloud] container to notify push */}} + {{- if not (get .Values.workload.notify.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.notify.podSpec "initContainers" dict -}} + {{- end -}} + {{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} + {{- $_ := set .Values.workload.notify.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} +{{- end -}} + +{{/* Disable [clamav] if requested */}} +{{- if not .Values.nextcloud.clamav.enabled -}} + {{- $_ := set .Values.workload.clamav "enabled" false -}} + {{- $_ := set .Values.service.clamav "enabled" false -}} +{{- end -}} + +{{/* Disable [previews] if requested */}} +{{- if or (not .Values.nextcloud.previews.imaginary) (not .Values.nextcloud.previews.enabled) -}} + {{- $_ := set .Values.workload.imaginary "enabled" false -}} + {{- $_ := set .Values.service.imaginary "enabled" false -}} +{{- end -}} + +{{/* Disable [collabora] if requested */}} +{{- if not .Values.nextcloud.collabora.enabled -}} + {{- $_ := set .Values.workload.collabora "enabled" false -}} + {{- $_ := set .Values.service.collabora "enabled" false -}} +{{- end -}} + +{{/* Create [cronjobs] defined */}} +{{- $cronjobs := include "nextcloud.cronjobs" . | fromYaml -}} +{{- if $cronjobs -}} + {{- $_ := mustMergeOverwrite .Values.workload $cronjobs -}} +{{- end -}} + +{{/* TODO: Do we have to cleanup when something (eg Collabora) is disabled? */}} +{{- include "nextcloud.ingressInjector" $ -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/premium/nextcloud/29.5.6/values.yaml b/premium/nextcloud/29.5.6/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/nextcloud/item.yaml b/premium/nextcloud/item.yaml new file mode 100644 index 00000000000..8874ed42c9c --- /dev/null +++ b/premium/nextcloud/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +categories: + - cloud +screenshots: [] diff --git a/premium/prometheus/17.9.3/.helmignore b/premium/prometheus/17.9.3/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/prometheus/17.9.3/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/prometheus/17.9.3/CHANGELOG.md b/premium/prometheus/17.9.3/CHANGELOG.md new file mode 100644 index 00000000000..5153614296c --- /dev/null +++ b/premium/prometheus/17.9.3/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [prometheus-17.9.3](https://github.com/truecharts/charts/compare/prometheus-17.9.2...prometheus-17.9.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/prometheus/17.9.3/Chart.yaml b/premium/prometheus/17.9.3/Chart.yaml new file mode 100644 index 00000000000..8b1b0a6fa59 --- /dev/null +++ b/premium/prometheus/17.9.3/Chart.yaml @@ -0,0 +1,46 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: metrics + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 2.50.1 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: kube-prometheus-stack + version: 56.21.0 + repository: oci://ghcr.io/prometheus-community/charts + condition: "" + alias: kps + tags: [] + import-values: [] +deprecated: false +description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. +home: https://truecharts.org/charts/premium/prometheus +icon: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.png +keywords: + - metrics +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: prometheus +sources: + - https://github.com/prometheus-community/helm-charts + - https://github.com/prometheus-operator/kube-prometheus + - https://github.com/truecharts/charts/tree/master/charts/premium/prometheus + - https://hub.docker.com/r/bitnami/prometheus + - https://hub.docker.com/r/bitnami/alertmanager + - https://quay.io/thanos/thanos +type: application +version: 17.9.3 diff --git a/premium/prometheus/17.9.3/README.md b/premium/prometheus/17.9.3/README.md new file mode 100644 index 00000000000..810ee1e6b8a --- /dev/null +++ b/premium/prometheus/17.9.3/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/prometheus) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/prometheus/17.9.3/app-changelog.md b/premium/prometheus/17.9.3/app-changelog.md new file mode 100644 index 00000000000..33fbbc34e98 --- /dev/null +++ b/premium/prometheus/17.9.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [prometheus-17.9.3](https://github.com/truecharts/charts/compare/prometheus-17.9.2...prometheus-17.9.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/prometheus/17.9.3/app-readme.md b/premium/prometheus/17.9.3/app-readme.md new file mode 100644 index 00000000000..2a4d2dec545 --- /dev/null +++ b/premium/prometheus/17.9.3/app-readme.md @@ -0,0 +1,8 @@ +kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/prometheus](https://truecharts.org/charts/premium/prometheus) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/prometheus/17.9.3/charts/common-20.0.9.tgz b/premium/prometheus/17.9.3/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/prometheus/17.9.3/charts/kube-prometheus-stack-56.21.0.tgz b/premium/prometheus/17.9.3/charts/kube-prometheus-stack-56.21.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ece8d5e68237ed6dacbd92c6e90f24565701319d GIT binary patch literal 518196 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 z®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

hqLq~uR=MQn$0kGGk913T_}F=P}zuc zQzC{rrcca)WovU0(pOps#;WLj3=;3@11?|=U2NLw{70Wp4sI}qk`zw^s62`O8<;%M zNk6hDl5Pal!QCRLJP>091rVwnW%eTQ0E)tSsEjp~-=%KLFMKbREaADmWS zJyu>h?LI12yVM}`K5a41YUf{2FZW%ZCq19(=CtGO=r%hUzm*SDBG^{shS92W7+m!V zc5j9(w@rf-t>~x26|F=87p;iM2X?^Jxb1-JU-jk{1D0IEmB{9D1)PGGq2NhYyAeIo ziReZF2D!sHP8YInR0j+WfCej|vjLz61{@jw9WZaeUKoZ~LgzZm5b8>>RuKkiX)^BW zCZ^Rz%Y-WGO6N$7>J?Pz2*c<63Z}8F1Fxl?$E*X@ZUz_(`@uvMu$%_NrNU5;bk;zB z$@Ff|Ew|Yt{=@qm{_M$LF!GqG`ELU3;`bkC>V45eh{WNxulhXo*B6XVRnvxsQ0r_N(c4+ zEh4%BPeH+Ve7YuELhH4vgzrYt&>xvF7Tz#1wN4!-(jcYzhP)hjQe3~?^^oc&Xfoo= z8PadJPaCh6z7hf95^vw8kX-pxkqVi0S)?uG^{SJuRjAHs1)5EcRnX%Jl*7+VtPsIc zEkht&cr-NMAgXEz9ev?=q&R;HoU2f&7}=wUQKi_bLO`T8Yu%qvT(K$aH9Cw92omff z=u4+0Q0&n#I)1P$tt|3D>TW_o1fDl;u+34e1X53o<~|pR#E-?C!KgFq5-`d&k~d~bVa~IF8d(>iJ*XsPNi@uBPpFl0D)?R( z8E!dLv%uPoxlZ^z%~Ys`AI0(Ui?iU<^qZRNZ*Hsv!-L5+;1rr2FoY)wS7_4uEXG}G zp{JjSngQ9>AFbj*R}yl|uemLy_2LsBAn;m1?3NVx^4x+K#(47FM6|k0@p4|1Tow7& zBPBsRv7lNZPh|v8CHm*NOF5(FjvX=uT~2qqyv{G&c97V1HxLM$dVc(=sT(X$1yJ(5 zKL$p*=FS$Z$%xg2Jr|3?x&kr5(Ks+uE@74!siPV$ph&Ba6S21I%CP_##r=*mUza8$2UH4*|-(kWEL z#;ipZtHuM$n>ED-ZxmDP!I}@Lg%%njKaa#Bo%Yzi4#{fDkwRET+#TU`jn&a7oY2=* zw9Qo&F*oD4fU2`%(9z^p>=GAw1}~X+6)%cx;cG=@g+^5-lUwx(@)Kbw#A6N~I`WrL z;^aDmJK=Z@>O8E@m567=8JLj}WTAzJ$nB-EQ)kPYsWQ-EW7aWI*azdwhJIaW2}DjeaZ1+?lk5_wv#k9sR83`o(TBUPWqQ+1vd?|u zwhm83MdF4W|HGJkEK7PIIb&smFi6P@f*@4%T3!cp@fq(?ALyaYLBE}?>zlXzyAiB+ z0R^I^OpI`O5?-M4<2kh!9x`^;xh40e<&S2G3osztgV4fJ@I6VH)VKvhET^>5YKE$a zs48_y&^Mso1xKHzODZLAq7u{68FnB)KvIXDvv8KqCdT$+%ngQa_W@4VgZ${pHx`!s z=)gA;!$3F#Q<`T~*pod?BsE3LMjSD_7zydLMqA0tfdP#Tf})GJ&E$01HJ?n1Q?)Go zY2y*|(b0)OM@BEp->eUwdnc_X&Y-$|-Yvw6#?(S~lvCT5$+M`2(2EqSY$e3-ml zk1JPhx>$cKKI#?@%3-m|Stp#^)2-kpB%ag~`>HKo8of{kDybYY&OXa^w?*mNheI%0 zu8Gyc5@OxssTV8T8y)3z8&0X*ILUIO4lqN*HM9b#6XXYCn&qV_t6tzT;&VV>PM{zs za|QNlMh^dKHkTkrsFpX z24l|u8V@9p5?LNs7eI`7y%F!B(C-D`y+%CxUqBI4K=-}b;|7%kR5}mFV?x9luCR23 z;t_@Mky0DJK8<{uqECm|(RLsI5ih`b_u^cl_$t^sMItJZS##L92bDJIlCdqsI%h|y zh`G*YAs!DZS5M@5U04@3d@`D7Zpl2oIxU3)=n))+d9Wv!wBtx0lW3^|VJ`+FaRqUU=}nxjKGd35)S_3lq@ z9|dltl2MheKzMUT2LV3=UrUpoa0Q;FF>C6viLQ2-F`1N)!u7Y-2{A)H4;MQzeAUWW z@CwZ>Aath9;4qb8%<@G9#SoP<045zMd${o*|3oo)RBz}608QP7&JC3p_|QnvX|r|_ z_$>I~ti=noAqK{MREWQ@caBnjm?|(K7W31Ln3fddH7bS0TYU7JjFRorhc#1IM*GO( zvfr=GvB!&w=Xs}VespkkOmBP7$47GY>QL4$OJC)4}I|*UQuNs?|!+GtBq;{!hEObztUfVHo+nl8M}PExU6pPSS8);2GkIg-<2Y#WvjP?$qg#R+>f8es&DJv0LA6{SfA;)^b03o3KWPQpGRP{;BW9TfZi| zq4h=P{3Z_4`hg=LH%-n%BZt`f0Z}T{^aU{D$B(i9#_3Id{3-~W7gM|6b1JAe=&;I7 zT+M$(B&-;6NujsFm$Jqi-X z-H48LxSpkXQGK#;-@o8P31c@)38W;SA$Ag+NRF-B%`>+f|Fl?_!ApwbNvr1%Z^Kzq zIxl{-Nn(QiaMV9eFM8e-1D0@&`sCs?Rhe|lRdFWT+8H`Xh{iP(6!d@Qv>cF2ym68> z(K=ooN|i-NdU>6QyGm0fwwTH4G7!y#KsJtqa*K+CL(HUFER`eoo zXy@ULwQ%=%?`!e6$Jf$@KET$6r*?|Rqi;HiGd_HLKJR}7$*IxcMJAiCP!x~)?sLBq zb$FknIIYDhWeixO2*}%|_r4H+KmA?1l3uXT_G|1;Z7V@5J46vf=OH7j{w-JYm$&Xo z-0})J61S#pg`N18VW+6hxPDMND0&$ID2;M#$SH5G9GK7dV8I0QPk()QA0zchuSuS6{*2ETX>B6Iz z-9rQvbMF;WAG|O7&f;NCJ;<{11f*#kpXh#mP*w38uo6vCDwHC^;_3HMGeA;1_PjtQ z<1T&>5yTSYyaUPr+RET}r~*mdhZ}Hf4JrgXbkJr5Crk zZV;j&1I!*jo676-e!bK5@O9etEx*uR&~5>SY(BDeZ7Gue^Szj#@9WOY?{hCF=j$!9 zshq@~0!$3Y(c)p;6v$|)a3Q^0$E(40dPTM_idHh+Zf^6kx1()w&(>UDDSchXc^Lc3 z`6#EOOV!OcLA$H1=W5-ktKz4eYfO5AU(&bm13>`+m-W(#W1 zR}sMzzG}(J)S7i;>x_oM(45KfB>XwT?A#GuA)np9L8seI(PI-xSIw{a4-5UvkGLgV zmI6qy42EDXy$OVZf~yPC_6Qpj2;j9*LoE%2RN!!|xKv2IOJtoXdm3w(RnY+sF~j`4n zGX8slJI4D6@QRJ`8fvZlmsiZ1dJX8Gy8(E`D$fb^wKM={AeL3x{%5b4H8sxv>=pY< zJ@P-jVr!$a-u9kaD@|405vCsT3cP$|HI+sdrOR4rvUz*s?ZS>}tphh??nas!35Fz29$BMWHy>v42;lf{hr1UUI^zp?T7AC3+11?U_YQq1v{D)+He5d52=ral^St%1 zB@W{Eub640*c0b56MU!Ps~SzQ`f_chXcF2}Yd}_Yo!Cpk;igNum#Z|Bro6FJva3D} z-zbf~$H2~`Ke7Q?H*Q;B|tK{$&a8@zyacojr z$BB=Lb|L1~ipUR>2BZ}+=I&mX#t+FlD&0$+$LE}Uj$-7FJtq`y9b_T-?(7o)HSutY zrY0(;X0YbO%iV1$SvKmVxrhTk&zF+U%QdB*`z5_^Y_}lUf1Rny9nTvACt95+0k-gejIO&%m0s^EWGMmSOI?oeV@KxYF$4GcIk z{NY4jfpH@Ag^{c&XCd5Y2HBc0Pf_UPMAe*fm$Vg5Kwve3s91>1*@>zzy!FqGg^*3brW7qUGlIsG`P(3m z8~oP#_i03y`Mi*Idr4i#2Ha3b(b_f^^I_sMnm>J=DJO=gx-Uu4{`ni zn)U!>^?85zqBN8&#B)-S#Li<9tQVi8r*Sa5Sj)D?(eS{z*NTd&Y^553vCkh+La)c; z!}a!Y<=P{ES$N3#(pDjm20b2E7C~I+=m&3olD^_&=IgW)$9AU7-vvAJt>DFQ;{mc= z-3{-o>JM-$MH@b7MO%!^5$&-fNrR31?-`i6{ognP9Q;4G z&IkuRm&@?CAZF0tcnC*0Or%z5TU`*TYacGb&q+AG-DTqUU=8@0sFp3)c!r9@a(JIS z4h@gQ#S9)muf@};J~P5gP;B@jPN{-_2qkX20ZyjOM>0Dufh=mPdKN?WK0TX2Ku|61_sRJs+5lYZ#ysj)nSg6K$D^jjxdN_w z$|^kkn4*!!DP1mD2)Z)v-x4*YaIkh>J;f8Rn#Scn# zVWg4T_%At`l;U*%y$P;o765~P5q|?3Q~clMWK#M+%jut6|1UXdoC4%@53*i_VE=4u zVEGzwq#`SlJf#7J0S6q?wvNEp5t!UrVXH4)MROnZUTqx6!%fOE#v=rsNk3ASRJfPu zK{l3oiV+O+@nTjWcc_hdsuyR5bT<@Yx`(EFrLL!$BF}O~l9WdN8`?zG2GTf#3(Tl~ z#MSI-lHNNoP2&oyrDAm4!~p``vjZEC@fKpUD>L5h8>t=)PF_#h?sZjH;yS}<>IyV| zQ+iyu5<2A&k{dbOp^y0}J2|UA2hYKp%;~-)0n)g$P;zVoHa>8_0~+6M@)l*`6Mng; zb?Lrr9Jhny1&hh!UU|urdHFtc_^i~OjYn00rL#abLUL>g_D>7D~t@=V?t!X0Jyqec)oX|Q0n*zMCb4yjr9%ttdIAAjpQ)BdY9)g_0OpSk*$w|;C$GCa9&|~ zqv3ok{~b7#&pHNJF`w!@guf_hIMQhIIr-Yq`gjhA?Y4j79tzN20R@~xSe}N! zdDR!r;p-N{Q8x#<(zWaDYxRl_VFNGi6~X~T0Sxn^-33g)!kN5i>i@d->FWdFd|Lhg z6;%MJ6hIIoPY&cCGN3twp?pF9e|gIh0B92Ct`PuK3e;+F*Z~y4#XzWX{OAXG^*28M ztt5^guZmB5+5pB+4mKGOIP3{vG6%s=ffWieiu=yOfe#2X29f+5qQS)gMoDWAfH~mF ziUbX?QU4aopy1ZW%r}BdvSvayD}cCIj-hcSP1!sA0~v_nSnAbpfhwFH(dtZH(oXUD zJn=DR%~SvWXxzpW43@YvT`KC0I$(C^OxFwO zw*+3^_DM9yi3-QEM3b+3^$&rOGU?@P%kSm_BLYV%{G{56TG=MKAca)riNqMv)d{D% z0ke5k8G|BddHWH+BneE;LrqeiC!%?(SY`oUYS$hoS7H`wJ8&rsH;>6ftzaBarX}b- zn?i0s{AD@@CANVd^ev8eTP*ao^A7}*Ga@6~zW7@uVgpC{*!ub#uZbzth;)jO-akbv z?c@!fVhG}fxCH99^hH#hOfXxgMQ%JyeaVbR=c6*4X+`R^S`|%0qbAjFS@5EkQ)N_D zqkC#mL^tBmxrpL2Cy5%}yf%CD8SLlNr z^>_P{J^QJ_K5qAnTl%ro4UZ(QSU(1z&kf`o!&r*T)J37rrW9dyTTpRxkgnqzd-N%# z;4enxrm>YsPBNur95}i-!-5g`&GoLofM77bd2J1ACHycNlysD8!J193v5D$u&4__k zL@Q0Zku6Rm(trZTw>BI?#845F>gB_PH>Zgj`&!@nx>=dY`MP-vTIl)pFx6CzC^hUxTqfLU2d%5h|%aY9Q&C>)oxzV8b=>+h03x#VBWL zDyQ^<95u9W6celNs3pj62z@S)X)Lt-@`7rLgT@cfsGRv$CF3g|{foPPXt{<*u~vJN zL9|32=`nzsw*sl=tIB-v0lG{(*}8`hHCvsSmZG`BB|vKEXD+d7I(*u7{lh5CEryy{ z`RBqG-3JDE!nQcpxF(LgRB6{uby5>xNh=&h)^XX9yLsYZ^KT%NVf^La6O~ZMTrNw1 zB%dpBk8JrXeOsTF+`Qx2J?&3T)!ufhG3UkO?>+WyK?<4g5s*|d>bl1YQ)nnEd~Dk! zwNGDfXQ^-dKi^&6|9r9ge|*Il#LhkoPu5kjgne8zO)t-jY>xjVMw--NiT2v0vA(*0 z#l6y-k*)#xW)0MQq0na|&OXpNQv+|huhJ2&>p!@#Sz5W_E%(C~0#q{?AVS3%oFUv>nsL?}lP)P(hpRqg4*!UL_Xmzs(@}qjaS0 z5=8UJYF7Em7)UUH89?Y9_6<$Dsktz1@^D?-v;TA!f0l8~)qZ;Mb3G))gwdmbuwZe} zXB@qUAY}~;w7Qe={OKUUtklaJW~~)v*xyKVv${Z18^(h=#+v0E%w3ZF>QPW*{w++V z#tn3V&6oKZJubcRr;=uhbI-cnC)`d?z>1Z)jN1lDp#>nmsWGcqUi>4C?aNI>3tyL2 zYlbKCeX!1KD%_x*4y+Xpa5o8o(8 zzdg?$f|sX~8T0dUJ+iArxQy?%vyv(O-Nal@s}hkMj+zby7olY3<$ff5b!D49@%iy` zUROMRyV_|MlfdMYF4fb(V(pqTobbb>^Y-rW@pWQmX2veP`U^$~W|GgG9JRi@^Ap9G ze4XcOf)(Qg=C)Q*^YBW?c~7Na?NC~&fCWoTEF@0#%mH>8wmwN?aI^pnh1m)J5N%3P z^_%0@NrqY7QO;C$4|T&_%UW`)@1ks%BkD71)X2uqYAkhH_m9 zjg{LV(n*@_b7WRlbYr5})wAoKoLw_Dgs!p5k2=;RIT%`0hetTfU&bL`R z?FN`~{s6n-<4W5`pdp3gTu64yF{w0_mXfY&Bv_|EI4%{%d53;fRFfq&t7fLAW|tOE zYHc)IZoW-K?_Ql$W!{sLcOywuBv{d|NjJZ%__{t<8u-_)Ib5@wuP zA9ZA03QZeuPJQ^HSahPj{ZRCXLv#oq_I|y6O~KM+cYP+GcbJ8vLQSc+x?LkYU9T3u zgY==`eYF_zR|Nc7@QZy-J%XwGZQP9<#ah5J5lJ^Iijl?G|B8MZrg|F_TZ7FFJUCV9 z6-TWoe;vDQ{oCYVf5iOB;vVnA;Ur5m=Q=>n7^;W|VQoD{3I_@l+i=C0Ch) zWVKNB^1R7m&fm`^s&RLr$=E68M9=(I>kYq13({?z#ep74OYRu)0^8V%52XV^+L39! zuYaD}{O;Udm8upw^dM{2 zB=w=SnR%48{p+r5rS}5s@3QnGZR#8e<3&p`-9UAStpYfZ$>DH9dW*^0U&=LJdO-G4 zcxmC$T7ivXwV&6a9)~VLc@MQCL7j=kcXIAftY%W4eI_S<{Ifo*1bYD^rw#?IcWhJp z?-sHXZ)=lzScgbxC-DdV8y>juoAoRZi#Szhj`f#w!KP{LD#0+!M~FYjBLdvYd)ACh zo6L}!MSIjONcc1ps5K6Q6Ug*vxP7|WpMQr5`gNB`87|KjtL45ulCn9I@9mdWWv8t! z8xqa&f@w2U5@wLZ3!Nl5&iry`!&g9IG8qaAwnn@wL#IC+@PxE69Q|(eJx)$z7&umg z<6X_apvCy4e02QD<6|c=B<|slo}d1YLUFGpJ2uVQ68%Wyv^PZKk~V(K+J$E@n&I-A zNfl96HM)uV?BcBU1MeRpc^>X zD~StBPNss3$?FlCUvQj#8;iase$!oy&UH~dsdmiIy5+U3IlRW3lOj)@a%hZgF_z&Pn-hR%2ffo0PuQnfTlrVSNzRn`khp zNM!u@cGYex_R4SN{C1kFJBgGO8vg21R0!wq>^5m{Pp_U^O^qGwvdW&i#w}RK6q^cc z$ez#vX)rY8WE9|V@kr?*_Gpmk*ipP4hc{x#aBaMk`m^j1ha?z@=*+H9T&xBgjb4c< zB6RtUCj@4ZtcT|Ha(xZYl>Qv^b8_@OPQK8%m#CcDuvq=rmY@3|&-j(DoQ{iCcZuc=$-B=L!R-`@oW9h5F6Bx`1-}BIqPZ7A7PFDO{^vPcHE0A z^8U5Ps?rv2WaGJxZ0e|;u|75vG#KhQP{f6?VoQaxUVF9_lQkSWLZP@i0~t=PX)!sWKyGLAcNtX$uk~JZ zOzbeVPJUb>&)pxbEX}LzD6>H>fPwS6CVfma<9mJRZ}YPAgsja8m`8!WeCWBq;hReC{hM&4_C!VRgHfAtP;hS;RZ&rQ;@|XqZHCxu?~jF1!>XhEdj}c59UHV z73lE)Tb6(z%?I?x4n;YB+r5ZXQb$-MHCshkoNB)0EvLV*b+-trGepgCqDZ9gW<9D+ zmimq!#l!FUd9GpJq&vb?jLjs&_eEoAy2eTMfmqiUqscciGjuK;>(OMi$ldM}N(|x_ z!Nj?#1%bg85b4TMLNB`oj)6vrWn6P4jZ(&aX_{TfrE0!X8r>edeXmfJB(Y-%V=6vD zT#DawKDbvRi>YFdWHf0xYGO-yAmr6(J#6ahDlUIjw_+%!=oMMgspqXfRHZ6ehnsIw z8~i135aY;--)F=weH>xB5>btlee8)(^c7%*^M=d!!=dcu)dEf;lof2jc5)>*x(IG? z+JN1Ymj{yjWaF)d5-uD~|7=k`*~IkGX4*7yxWpVT;N?~j1*h=*TnGoHzNUC@PR-Pm zj<^>Qqc#qZ`)Tz|{|f4+{hE=>@{Gd#DV}h4t|4TgITWJ)WC+;i6-gii-{zIIb*4!C zZv+3iVeKAsNdT_|d_F)7$R&3eI1hdw$c1n|Kpq0y>(<~{fPkzDNm$lBKb9>k3wX*~ zUwsY&RX}Ulxm=1NL|Xi^Tm8tHIF>1Gx@VMY8=L*7cD>lly5}as2!Ek|n0-@sHPm&& zTK-#z^wUC*03F9>-bs#8yKs=3`R?U3%}MGYDEBh7vtNPHouo`;0cPkEKS*BCLmL~x zjac+bm90`w^r)#sov%Fp-uaf z1THG`g_tTA%=cHHU%5Pg)b2X3+WgVZz|Ps=k*Wi~+6)gy7a1xm+g@iqwYf1aq5n`Q zYp4Smf(l=h@zRmtH5jELuYofX%Lt*ebBZ&k99$;$GKys}SFI|B`W9PJA{uU6$8z*__US zWW&BxeP>BL8&hsI7r^SEhkfkc&NoOb^I#DFK;~G53`j1!$fJn@vGv>~)}g6|8zAE+ zJ56k%uHRM>lo zC^!9LA8hXOm3@MG=@i#Z6gLoEa$wm-tF{LM(Z27tACPBk*ljEw6|<&$bNGJiii=3n z5*5}bUM@uxnHbMLnU=fnB+2Fr6_!68TTPS)9YLbm2VYv}H61P%A;c`L{(z9CvyE0s zEGfz1RA6mUVk{wW76`>tYznX04m=t!CK0EhGHiZreI4aK;>^%kA%!+Ft&W;ghXLD| z0M#eYsETP}*_a@hQx{Z5H9BHUt8Q-Wan~jnQ&>0A%Ko}CIMY>{NOZTVvXO6U(}&X- zcR+VsDuY)aSD;*5w5RaOYy73<>XvEKep#G)(aljMa}IaD=jsG{3$<%U9F*C6-Oz^j zYLn?xo1(mv(3%c!=z^~<`RF6r<8CI8&I38QpHgdhq$>f3;lN-}#!gD|_!0g*} zP`8eJN^jv)>ejO|mD_$kgK#L~A8{^{KRZbckSuY41s^>h}tdE+slb|l)pzDKc2gPZ4ZWggTG`lvq)Ll#UR1#Q0gfny4yI= z?sVjJvfRR!i1HyZXRhOnD!E&?OM0-Dv^(pp)3GP=OWk6a`FZW*!cgVRk<20Mv!W~` z=I~TX8y0`sOS!9={8Jv~b2h=l4`%>7kFc9`;d>yyoY2Z zGCU#rwKOeDIj;{4D&^x%#xwphfBJYFT?^LvP^hw$n-p!&;pzXu`EybXjyQUP-`bE2 z$$9Vq-}MeU$UMj+ETbm=d00bla!2PDY6khvKSdpA8W{#e)6hITk1RAr9U+&j5!^f+ zkm|#*i%-g0v+~_OMQaE(k{QR!;DVqE6F;amMW72CsT$Mx|1oB=U!M?3=`{qh+16|yU-6o+XyB!A&mtWMDX4FOqB!qI&S zsg6g452Y%ONkF73{;!{aQ^4gU^^pDlTm;7#bpfp){h16}lc0~9`|lz7cZeSR@c%n- zasDaIsoj8W4mNmWl0m(I{_+uoQU5UwqKe!v8L0lF8Ueu4j;u$vaa*6Wr$(?5^dQ(V zkOb2vug9LVM{ri$-fkYS?MTTU)TVfK`*(UEiA08FP@*Mt%w)wMHjaj(ZOB>Mz>U8b z)Xyw~)Rhpepbceufb?YqD~xA=RBO8>(bY%3QETXvMLGc50Yfzj1K|2(Fcrp(u>bBY zSl`c+3lJpcza+{AZypYYFD_*bGL0-OWsO-~M7W4*4YG*ZpB|{LR2?v+qGZ1x%VJbG zS(*!@+L^Q)LBH86lyamRcERb4!`d7p%(2d=Y)ob6m3@g7SGa&jp7F<6mzg}0mqabO zO7ie@1(+6E(dV$ra_NvOHsgyyw1YXLmRi%~70iP|Rvc`}Gcc7=vw`$i|hN;_#4~^Z(o4%}>72uQ=xS{DzkT~(a zmvW3!lH)bcRWG&GHOS&5cmIE6y;W2k%@_6yNr2!U9D=*MySry_n8DrM3GVLh?(PJ4 zcXxNUkN1DhcW%y2ubQsfwfd%4PwoACo^7-?zcxc-I>{!{BDDuk?M~m5p@rO2CtP+- zCY`8->bfe`nCce2lU}a8UizJG)>oE!K8CAwUB*7qX+7Kj%wvt0>*5Jl1luWipjqI% z+@uTpVc;!O_F+WG0Ywe&Zu{DZHmA;Kf(R!C`+DRq1$i?`9vS(WQ@9gLWecMCAmg4! z`)$Jd6KrdRe1yE~6lL>0#Hs|lUO)nRN!CD7Kcc7Am@kIIGKA`i?TcSzGi7DdR=BKV zRYltbWGDB90xah!Wb{MJ6wx~HJ7&kMMX4~&!H9ssnU#5+jJ<^=l~#<~LLu3FnT_dj zWK&A_kIXVR_Kw%ep?NbKE`^3~0`q1_3JpZX8nOk5s?;hK7m5v~QY+qJjdiFG zI-gZ_i%Bvf4;LsdU;)_h+x+*qV-RLL%1Io{X3xIIkD1;!Y{?E$e%mb#(Ub zgZuv&-v(_6E-wb~ZiJC@q)G{$XUzeE*m9+}0ms2-#8MZ7PVAWNQ9SEx_IP85OvYRm z+MF!7HMI*&H1_SxZfkES+WU{%5FivG1xKzjwz={!=f8P;)+a@2XM zXkvX@vN=f2IE?TzW2QY)L{J@<1Kyf+O|vVuX4xVzuNXru<)T`UhtlPr6 zYJwY?TR-2PlKEE*1b&tsW|9>LrSlb?XkTF7u;o$tSX?9M(vDRCBkixzC}i{KnYb1O z8QS7o;P{Zd-`m}fA5-%3C-uQU<4dVv0A>eTzkQApqC!9K_V_Vr0nf8>^OcEPODxVfSwGL{WOwDbjF40jaurkE5&1@Ze zpXqX0mORx&y+Y<54zbJX+nRomykR&LQRG9Q7*UKD2MfJXEJmZ=m7BqyyraKJHg>BY zVvaE;nuPm)GuBYG$vqjay3u3N9K9&BM4FuaPj}A4P@dIyIx=r47m;%1;FPXdm(m-0 zGwp{b4O=gaJ&hDY;!A+9-1mDf+oaMz))i3PC2a8-Br=qIlgZ>So5cyM3&4`Q|1=_B6Bd5e7@m2nZ#dZa^b2>FA6XXgT(=#lRwIp|{dSW`N%f1hG_-6Cch5nH`FG8O^3G?a5`CTg zX$-y2g9m@P#O6cUd_1ONwHPyK{Jof|0qtRuvvxf~z*M9R@DsVhSKGHR=LSiTCOC|p36`Q{tLl6BWg0S8#|};S ztQ#jw17wX-D*VhW7IbzG1Q5))4B}*GGl|=F7+q+BY+)8`KdvFC0;Y+g)?)|dp3+sl zfNL5c3CYKlAkR>@e|qdKZdF!R%fBEI*ucL-33hjbe~q^3WD-NrG$1pkV+ZDNRvLe- z=10^GWVW&Bu&IBPvwx|-io`EuNpxQ_w&w6UC!~(rS=NOX4mo(@n(m& zvO5ZJKvf=FqWda*U#nf;ASa1_=ytv30{FhVF^qZtCt&otSjShpc|1(X>yPK-$2eM6 zbsWxvHb*jYd;oo{A(exxfq#4$`{DZ{s>iS0N}e%?9V>6sE1l~AvjckIQNn%7CSA&J z_VPXTG7ip)KdyaJu`CqCJTONB7f=qr^Ne?q-Popl!x8q7vcF?3)6_0A3P9QYAVr+< z9UCc$+)bi0EGP&zm(;pOFAFGQvZ@1U?i_htF66>&z!v-ES-4=8e5&PVR{Bn;%X^W(Z|Ld@^@B`vkp>8FWJ+b3wQ7qN4XQJe-i^W1 zeoga}kYP0q`n5t4rlh+*rliSgDB#IzOfYQOE?n=So6Z*#Q4u=5H#7w^_wTQg?N&|m z)zE27jM#g*%zJ z5@x>&Aw#ZVyD78uKHo6lE(0;~u?BJacx=-##J)O(yXc-?MIF%f<9$r0WAMBw3itM1 zf+2bzQa{>!eIoS?HIC<<#6QQn_`EKN6Wc&iM(k&Phcar!YNkQ)j~PiG7(e9GX>E?m z9H*Lhu--~di6oSUEv|*>V#}qlTxpdY%MqbFW~!UUFkG!pXCpF+D>BmuG0u?>8J z2?TCto#U(krPpyzATZTQHD85U*KDOz#6@RHMEF$h$j@Z-lkJ`l0U9q)i9RKz_^VcG zE{wl@{Qpuvk6G{L-k*cU;@%&FmxyXmx(oc9jb3t^{PddqhZR|>ua75NqyC%ghQN|= zvPI3&M*CYfm_|Z@p2qd|9KBPIef%G3Bli-W0`ieyduwe%&xh9Z6B-!wPKx#)KSunI zDB-}0eZJKv>=+16Y~W_4Ul=@MxlQC!wMWj}9;`2t7bzIPQ1qcF{SktZmT&}L)C*bbQo7o*&-VjpQV)h>|t4wRM|kj z>C}(O+jh}|n+mM~m3o|^C?wF>@-tQPr8K_9+7;Tm1e)mTWnoej{f z@JeZMEZW-{f7Uj7+8K9kOIi(2m#PB{v?gghX|TyrEqeN^_=V(ap{EL_0eVp2@w6LA zNJk40_Km?rKW<(kN2p8F6JKyj3KuTU$54JVN?T{Rsn?Q(hOms~0pwg8>vBU!w;0$0 zXRMYDbT*X(3QdROx$Y`^TxC|^NUP)~1)Fgw1tkYqsZGV?CU`olf7$XocS19|UtY`_ zRM#JnlmZC3Ay|t{WQH9l{-3D>b(^ZfL$+ zjr~ht>C4-z74tggV!@eE9g#w$>JfX~G8jHos1Jx&Wpk+GZMOdIu3FdbGqHeN_VQny z%E*C@7nw`$`SEgPewC{0a^zqDVVubo)1x=WJQHUhPUT=#EiYUV#f3qQl2&TcVo4#4~-HzY3MuZ|#a-8XB#iVM@p-LN9b1kj`XnXJK^jV+J&sjrJlb?bQVP=`v zd)?mon{N#AtxebyRRv>n;mn?_ar-;RN{7p{H&l#>mdx(D(giNI{{b2=9G1oxZ$Qw* z9WBt0X3J8jfidr8&iCW2lp7@XSNv`ux!BjY9*=$Eb3{;0L6)lLE3da)`Yf#SSn7uQ zrmdFQBB1PUKhshsU1R#X+T_uwktK4$V~qfV4sFAexm4M9=AUAa3V>o#UuSR6%C+{- z_^A}nGR>nO#8xzEEnXEc*PMo!CjT~d>oRK5Wyv!MhQwBp)z2QALG^C#;p z&m(E`6>z$G`N0mroj}zHPf|6|l+vs|%%NYr2iaY;GyXE@Xqbl_ON zz3PYo>_f)KN^|Rqk-tjc<~^@&(&e1$xbt-%0->g;-NRF_;*a-Cxp|*VBh+};p8~RW zIv#L5soLtmUUy{tb!rsnz5ck@vmg`z9NGrEEO<{18=dEsZY(SA+zK`kn&h3s?$ciI z=8s#KY*!vkZEMf;2QtGZGz8TvJ>!3>1dTql;=UK$(l<%E@jb@*WH6tpTb;Ij9Rh6h z+fYgxqTLvrj*=@(GPV6|Ey@K4r^marLmN|205=fqU24J;vUO>wfU5&s*D4oFZ{--P z%%vV$ujO0hRW;c}>aJOC;uec@b7pfRJQqs}1f`2L{O@t!#_w8`v}nq4E7p&HQ$+Z# zkuOsYw`_5a4=ljDT}bzwIT4adV|MA2E*q<>(@ehw-m_iFO9RjbM5;|+EVG)pl6g~x zHqQgT#Az>*mv0BX>A$n{mf7Hi(%v@*m(hl?Ab{h!evk0jH4DXa^Hgk;AxP#>z)I2l z0%gMd@gR!gwL4*3kiLb`XC^Dskt%Ed5dZD zgu`+z2I8@}0(5vu)kKB2F=ZfUa?i7YXP)vjIdl3GCl!FqbYx@{%hkDWB)0F4O&XZk zJ!WUBq7N|bS7!Ssi3$Mw>|lMV!}5}IjesJO;%l@v0(REkF9*j4fk?}|lrzv*PIkLR z4=p6Eo6DtQXVFuV!gWy1rYg=Lep$PwdS+JRbK5C^9G$Kh8I3uB0lx-d>T$|b%(IP2 zsqIc1jR5y;?r@x10zaDAmr3?;3igTUPU@Yt=t|R}sksG!7_C}@C;qF9toIX3_zy1~ z9Wy;S*Au2{uu2wJhMq_!ml6G@!ctVVC%~Mw z;mFJ4jb1Fmxcu~bxY)ZR8iI#ZglZOnW5?W(^w%O9gNKYkunobqVrZuiY!N|Y$1HU6 zk^X1zFF2Q`Wq{3&nHl~oDfu5fB%_y`mS0F31;X`!tD1&*L8g0JjFRR6(5W+Me1F*r zl8dGD7yIUHZ2Xw&g{s)~1@ThS173&|c#}I8zJ!*Hn*os%x5?_)zq>_UI1yw@*XP^e zvaiP?*Uf16>WVwlX%^z!_d7-F#KV;9n-7b{TGuu#<8rR>2Hq%`7EX9U0DJ#{@xd&H zu@Jp_hJs-|kT>Wz8T^azl-5TPz)|9H7m)%3*1s&H(16FICMb~We3R(7a-F~F#soReK2X2O2JO{;kb-8*2p%6kZq84;J}s>;36dDy+g%Bo+wZBI zqXl}OWrpIh9+3P|brdo@NL>;r{=+<^OYVjN?~_7>8bZ%jbthtTLpcvFj??#RweViNYYm3&fH1g}w9>75LHAGw$cvMj zb9hAT*FhF|JHRQn(8LNJV`I;fpi_pH(N3xk?pWCIsuO73MO1ab?D~35m zC=O7e*nK)i$*V6Rd?oN7=H(?30(eb_tuGQC3r>|!)AK~Y02HrO+T>?k0-c2tK(2w? zIc9c}4^7GU_;g||)xxC{E9%l;O=(fS>vK`@%Q)|I7S8L507@7CZS-^Z5en+d)5Gia z;WVsn@pB96^F>kRx#4}W>%kjT^@$v^x3x98{msep$VQCrE`}!RY;Lvuuz1&s+$8Px zW@9ukkaJqy}jU#r5to3ZfK>b{WI*%zz#2OoO^z!r@n>;3z1HOmd#CMC# zDcIH9f5nsk;=@?dIFP>MzDtR~*^Je!;XvJ$b|&UWizX=YBGF<+a#TUV^7g4X$`na* zSI@8`igYaOXzy{1{=`Vs|7JkIL76f?P1vD<m z3O~I0WYC7-IX`d&Gg3~ zgFxL91vykxL_$fVW2~2CHn^!?@Zj{CZO^9kxn|M&q~}0nVH(@u?0lH1Z`|f=`u-Yu zy^PSrv;(bB?2tR(#O&~_m%?(to|IRKpI@i>;c_K z*BqPr-$0W29ZWSb{IDzeoQf&=4-*oUb>Rtpdq!`mG3qv9e9izH(^t1`n>m{1N8j8! zs?iD1K%8KagmXjoZ!q7}0*H1t;>#b^X+V>5TM4;kcxuGq;rWs|W3^KpqsjBVRN!LD zZfLtttfm45SiL;~9~X=Lsu)i&#?u(BddJCm2K%Blc-(gA!=@&^;6T-%TB+LRJi9Y$ zZMH{~w@wnX0+!Kt)=tGXKUk$NswAfyV#Q)Q729061iDZ#T!cD*=5Sytl#Z?5`9PO( z^>+?nK&kgOy{wfH@oDYp;G0(4?W#3a%|0u=qM8P))&aIo>sgQqO~D+< z`|^0BC(xgK|nJcZK zOZ<1UH{qnVHk=ve^<$&!0Reh;7`!FHK)%mmV(2fejheRwDK*ib@*tH3M_?`b6(hys zclDcMr$?KiQ$(${@MMben@}GA43H~!PAKRtkXM^2^|$~&5SB9XV^|7{yD7oOdhiF) zw~uT#nY+NCxzT%aVioAOY!s)NwhG@q^azL^@P}7K}Tv8BeV6RvE>4xd?uD7H;SwYUSxS zAvDx{Yt(=;A7w3vsF7f)oQlwa5m#ZN!n*(^5v{%7F4pXIj;!IH(!crktmtA^URiUy zShdOZw%W?n%eY4Abs124WdrgiPXk3q++-LG)i2w&)0UjAF#eD0TmA`}6ns?ly}hTq zr^DMz-QNA;WYrFPEA)JJaoeEEM^qhi_0M}e&hl%VwC~1u85gqDbrsI-S-=!25oSN= zF+uYF7MV(NvrJjqF{~CBS0hHuFYJC@G%f)lfyWO5v~%DbJ_;_azNRf zVS*t4Ht#XPjNb|_X7Sf2R&b;|nk`{CQ6#1k-zNcmq1TZ`q`32DC1jL(g!xKMwO7s7 zcga&}PA9F=`U*q6>v7}xXKywce#ty*QFcMdAPCRXV64OH@61KN@0cgN7jz@W{U60z zd)nPJ>9dSw3`mbJh@TXmJ=7VJeL_1{ZEW!;H+M;d`?AvvBuW@uF%`g#JzP(U7oy2p z_0KKz6F{|AnAt9|uNYxB)_XiUxtg9K<4XV&1`AViN(r#Xh}xws(O{ye@8PqlpxI$g zxj1K?1#-OP=0g)hP`BVFaoMobBsBSrE&IXlC-qP5Eh4_nYt5sZ4j}ftPIy`+nPm+f z{A+XNNN2D@qOZQhLhsEMU_#F;QZwO2n5|gPrx(EAzL!7+6Xz;)9G+7$$}=vv@7%EKxus%XRZYqJXMJ*2RO%?9C$^i)(3}8=lF3A2 zCFVMyyAr$A=~f@Bsr7Z$_3^vfA2cGYJ0SIlmOy!}?(h%Ve=hqkuoIijq|2=hBw zn*^mpA>VX|$5be@d1K-f@2BN4#cR>eNw=8kLSf{wBld0;9Xf#B`^I0?2XtUVX!VvG zVB9!lEGt#k=+ioL_<1&+YFsLhl_S$J9+O6k#>mwT>DTW@ES`6z$Sl9tpCB&mjMK~rR5eNS5oTWNkV3HgHwCFM8^>(%sCYjiNC^UrV z=qNN{_VG5spUY~x8to%;CHv;6=*freOw*i9TI$7fihuS5+Zh=_PGqgZWC0FN=o2kX zttpCx=}TAR0aLOTOJroAx>Xz5JC(s=7e$?RQ~Y+xjkaNZER>-s;!|2bu?{CxGUgpw#uGa}`(g^K?vVXZz!iY#cYhm1y_t#LGB6)R)x;5lIW*5k? z;|E>Ko;23G-aa!&9VIzp`1lK#th?yr*0#0iVXdIP;@Z z+AiOk$MJ{W?$XJqWH*+H&HFA#iy!XnH*Z%{8&871GZL8qRzvk|c_{Ussnx8BzQtu_ zyWL)+`7X!?S4pQ<*Hz?4^J9}#NS#DFRNy{E&|ymZr`NQ^e0yZ7ETz!|yw=$#4HXXc z5${6fb}oQdw&I^)&lgY>Bp~HsYD2B5sd_7@qM@cvP4uJmV;D)ni6cHoXmH|K3W41w z(4g{7s(~cyT1%No7YW@ryu8FFQW`I$se73ze>EC+y<@&ARR7zOWfBur4LD}GF(WOT zndL0Q%a>&r&BPO9ggdyEYalbTbh5(giTwy&NV~md974f0EKZfb6Tg1!6w17 zZ8uUh991xl(g_Uj=C;y4dot<{W}M-NB1;q!xR2|1!m;ni|Z1M(CA9k%uUlq6$E^CuNc7KYhm78l{c#iC%-=0p^Pwgc}Xr!9`%>Z$7dW)1?^?>r1g9T_L;NDO6M6YVCv#0gZ(7FO3@guaFArxyb9R+%Frk&WY9>;sguMQ0?>&|Q?an- z9mG0gNr&G#*~LeTaSq?Nrw)9Yy!WJ3Wq3V5&g8S+ZAB0}lYT)vDq#gou0~wEx3Ao@ zLYW2tnlm?%Jzw%xNmxL#6n{5t+^id$fyA1gSwoT(xCc(Taf=P(+gzmRvV}c_u3{fT ze9>J#$hZB?3n*FGNamNziAAUfhfww-b$@f3`9_q);4?#4tyt9+BbC+KH(dd@?m^9-PU2Hz{}5iA?NE1(E=daFSkkH^ zMGP=-?rQ0^otzlS(1M?QNv*+m2+h|KYoa1VW6A(rTm6*AX#{c?S4(j^YP?t z>bF1k;URrrO?)HO+uqJTAlut!?g)te$8oQ(I=a&x(U)~HX4)z{sE1V(9;TY(Ch|ly z@}ruRt?1p$H+DMylHqpkFnHcYTqO=(v;x%9u3s`g!$U?kBV?DSU4J_RRTFtw2Grp? zDER+fUW7-@d)x2yVHoN0ZfDrRZf6+jJ>eMs`+=wTUj!n*zw0qjg21vB;-J9#+kacU zKi@<6@8X_`6=O!K{FZeFr?D+=IMVKn7aQ+B-!NTu9-wz{ zswUZTsR?R~v-j*G6CX=1<)@trm_oSBvQ zuyd$-{ptilGV~;Rk0xoKDqBR{U9bBIdy|*f-`jfgmIP&sHI5>K@y7OGS-6i;BF7d206MZ6s}^So^z-jaEyaq&$ciBB|Z{BpCDg zcrV$H&0>1;qhno0$OJ2Qqv{_G z0-&`k$4b+O@78E!4vz(j+4v5yFfP~N!daf5G92PkZ-P1SFrvLS>Q38fxZ_H;cc(xM zrN*iq8w+Nfj3he#&_a&HSjX`DDa&w*B9*#nFt2pE+Dx`NgTd9i`BG~+3_EvgXB1RL zMmnezuNk-7WuE_ZsO$jQ#xd@Ey|C>4Q0zV5)fFlLlseI$YoEuDpIlr|cK=^Z@zFcA z2k~?FtBC0R?EUt!rS~;sz3Js?`|v{Wwx!D-O4Zf)`Lg&Cb#~8B6oZTF@!Y0Zd$C1( zDs{qMtx>^(Xdh_*0!~AkIx1z728Z~K*M_ORI!Gl!S41mr$$#I@+9r!H*7M{BlijJb z?zrjeM4slqui))ZO=MpgaSl=mN&JoFTu`x$ePPjqj#z3LwcZ*60_KLlGPk2nvVO^J zVg#c!IEcmhSW#r!0la>S@gb^Z%RvD(bI8v&QD)&##1;XS)`bhyaimMPOfL%{P?`3qa__Tt)Z|Tr@sfS1 z2}(}*n1a=@0;y4q-eqE!Z|$X9Httwfu9~#JCk-+mxU;OaB$$ydL3N1Dho>*G9QIwH zZnsoGt-|C#O>G>!g{OaS>fcT+7ZvCqDFO)~1<;h38Tx_Bj0h082>msp3?x!MbBu(m*b!4iuEvqE))8eUn3?KnXQ%Bk5M{VbOVg`fWwv zS2sQIS@{G%o;*b>V~liUO5A3?N+dh)NIbo)NH{Cz!+)>*y~}{$E;WI3i#jiFrPYJ)`VKrOxuYwaIp0VF6vI_v<1YLOj zuxr+Ih6j}ny-v;!EoGfTA2dtnlLykFT80kDa%|34758k$vJ$Q)NE6x7TG&RHisHv#x~w#9cTeNsP>!c zxtcu{J%V;AwOE{CQoSdg%WBoqVq>R5_6z`x7qQ=lkWvT^RLBh}i|FHXU`Zj@G90!| zv`Hbm&tguU2?@cIBNdy!DN&WU$EQ8uOIZ?_2p3?{lexV!a{JN}#)EEXvZ(oUj6cf2 z!H44tddgn_Ub{(5x?ko^{x$V}Cj|{XcBPd7Gw*GAl1Mp>BfXmCV1qv$FV%M>wKp%ogU&)oJx z3lk!7VgmwEuuPHyDqT74Y}S>s!%(>(h|m_nMbkM!HYVf zcC=KLx51&=ww<_1sU~NTxOtuoXjJ8@8*Ez}v|30vO;zIcQljy%z-+=$1T@uK3y6PoOz=0Q~2))MnL1IGm!zwoCbf0-3enWqepk( z0GWDQxyhoF5shUO<*53)-A)i9z2S(Mc{NZuf!+eW?y=ENapfhDM7XQ}W?S7I|*wzm_d(KI*i7jVF ztdoCcV`y3!8~PNW5se(>v`2S+de@XgKg{wh5Ii_>H#Tj%c$G_kGC@5vXP?7BD zi*@j0V+|h$a=Bv`7YbMX$Itk%|D8J5WwB&oZpO2KX>X6z3RDiov3p&7C(VZki=1`F zIREENrN(AHMmG6op!E@gr`Taz9(I!&Hn)CjJ}GUJ@3;wDrZO?~sLTP!ewo~Wyz9S?F*~sLbCwUp%zifd7Id{-CD1h5Ij3cu0wATRZ@+pUqJP?lsYc{* z!#7$708TO_Q^yNnHY?!i7E72F7EjI~p*FaU)tc6|Z57K*NM&TH>0V@S@g-Bnkqx7b zMcD1;4EB5<-QsvDmUk5{8}LX50Y*lVLI&1LiKhLjX%obb;L>TP<}Bq45`G-Cn=96# z)35O+w4TOs>D~+~ay_kyPE`3EX7bjzhyGZc$oKQnwrtYnmvs?C&pJRCpO4{PX1r<6_u z9K=-1wsKEDV<1spGd}ysc%3OtL%~_^Q|EHXJw!h5I}A_WPCvgrD3YhVz_=Q-Y8+VQ z!x70A7mu=kILDI)r?L|DK8m9wVhe;1!+5J_-H$UeN7PPC1vQt)Qlp0Ee1QQ_1AV9 z0BbwbOTvTt-S|L#Qdt?W!M85*Nj|KD}Y-=gF@dg!=4zqa|`&9CwQ0=~A(G#0x} zRpR@zOIN58Ed60^)gJ5W=*U_t4ksK?Wko{GqT0Oxl#n41VvXHy2nu)rufLF@n~SAR z@$1F*YxjCo?NAP+_15hJId~1)Vfq$28*s32FbsQQFt2Hmr>N|b;+%<)NK^f|9l%(O zwqi4uK>{#fDCGU;|BacWF$>}xqw@0k;mX}3TUh)WF+-Zyl5rHfAHOP(lp1eG($8AO zG#>V{E5azD)WlSq$uT5iIwOU6t~-!81}`6a-Pb3LgE zV@b>VKz^u9YC(fOP6|42C}vxo{h@ zcvOl+gB`hy9022(-9v$2!XP3g==FHay_h(#D3PwepH-!570s%2i#$CApwxZ$tzaGRG zCmAl3B!NGR$f&0JE0q#BQub&_WRZa>k!)+#Ub_N;=hU)iKF*io}*6cfhqTe*>YiZ+)K=C?v{c6?Y^{|`7mC?C0Nk%rH!+zu{JI3 z4x{1*bL9ak|2f2)1!^7nd^XWIe56~r+CVa=A8M=rLj$k4;h|en?O8DZRl0S8Ec_D!mYH>1 zpv(RZxrsVF3rg75pAYDNaBg49&Z!&3p8dQ0U%45!dbjmVmBGNIl$N^Fvm`d>$(PD} zqBUEI>f;k6j2DCz+RQg9kv*v(%G@a-tDV{`{fHA`Z#*8}mg##md{bE$+%)Rc+^w91 zlB)K(eH)vcb{nPc?R3vjy$r(zzI6OBW3PP0B4TA0>%6>2W!ZR)Yghd`s^ga~FXxO+ zX)T;@w3RrR)$UzE$n`;Qd(g{G@)ygaYQ7>*L;FsB-tRd-(e568;&+;l9%==mnAO)lH438;fC&A&PaLVMmM7EY-kA0 zHC^0wt`?q9>Xr^2f$E`ONiZ~)*UGaJU`x#Oc^26hQvTiECcQ>!bt05ht0CJa`c&!< zF;p33SE7m+#XI=35BOI3&ZSGVkO=_P)Bg$aA-%>uv(xDrRr+nR?M7 z+oHGLfLqd$R3fxHJT176QNm2Q2lXsIYwj0xc;9*VS@X!gX1ThwLGhtl%~SW$s3|G8 z!g-hyXPh~^FF6zWX^B$BVS3pjJNbi%5E=-xg_MtXf8h1lR?QCPhXUipY4%1ktx%F5BgE#ox8K!I{i?H1O#W|TF$fBO#x z!|_DsT&Yl!;v=@v&aox+E@%8H{L%xR`Avil|36hxlq3u$&v)%xD)+}ItEI_Y50~T_ zO4;0qh$jl%DRKf)<)D~Vs(&W%DRnQ2jDmD@+dflOfnyO~c}t;?XwW;opMCJRFm}3s_EZcB^ zt691pa6TyYX#W1SE&< zuSuR?==mLvu$@|psU;H!*p?bY{kydWWdptpO(d668HL&5*HZy>_K&gDdFlm<8yFil zkZ9%KcGW#KYYAz96Jm5Hv6y*op-E~Cv>4uRhTUmBomfL_&MbP;NZe##8zWZnt= zy-otwc>Qq>ZwMTMD{;HbYZ(DkTCz?KArfC7%+E53RRq@|fFL=p6B>*&n6~AjQ0-{U z<5Au@?+>ds8;`M3;%D|+WqL1rD`O$OGG(E|iZP8Gw-Gr0J-SW*qEq?V%A5vX{Lub4 zU>*{7VNwo8IV2d;E>|y$rZ7Fb#Ud2QS4N6`<`uVr(0oQMJ`JPZ5?eJY@M>D?KCo_; zIgduRp`5ipvV{3)c$pxu0Lin%_5KV!o{XhiF~T6Mkm0YEaX{jm_+BU~Sbs)z;Nj-k z@m?fFdNYc%OfXc(qx+1B`(Z+)@E+)Hg5=G`IxBX&|qAS81 zW^vC7`=(tie0QKch#0dldc6!z*-ToLSFwe14Zk`@&73BF zb1EO2RVt7rlJV=)&}--I`+InMubyQahteif zp0UdJm^p?okM3d8?BgLm;c%mN%-4gQbL{-6LL&24!rRbkb0KrE@9YrDCkYna$Gyx8 zs4{U*KIv@&11R;f>aNQw9E<1E=XFacsCoNZLR) zk1!F_1*ye32V4eYe$VSM#McLZV@t5l@VDloYgRL-^~N?GnxBq^8-lg8>DvAAG*&bs z;pWg6Kz^p%~RCg{kD?5&`sE=dFJnB+J^Q~^X`?e>&YVh&%{w+?Dh*(K&+ zE7F^0*`^H$DsFlyhMIKJZ5?u#peoINvZ2&oFuRc1d6yqV8gH@`v1Yir-@_?-6+(Jh zNsV7zopgNmB)1gKt@k&~K?_(4-wgL@QVG4(|SUps%w z@_0WV+KrUd;tB@4&8!~pI)y^T0-c_)U3FiT%kC6z?k+JVGrK(Ouh08$7avjZqQQFRcmV@f z=Mv5ul{#uNqZg%19B7>%f3YMU7}hT!%|mcmz+ml{q*;EEvD|<$wvh?lc|{@5KJp^Q z{ajAoTDH#@p&$#(+UP+cvF2?S(mJ^%w9B;XrsJIA@UM?T7hV^P$IH#i1%(iD~)xo zRtMW6c`wqSpf9cp(UP7v_LP+1y#Cg6b?-$K8}E@MnYD|%>@ivE7)Xsq9S(#WUpL>w z1q6-Z--5Ja@T~S1I3)$D`@K$$k9OpjTdKsOb2%-$k|_wS|`&{dgfwkyYx&$M-S%IQe9H#=z6jfvr%FG*c!etp)HA z^INb8>-(VUB|-}e=c10~)4=ooU-%#wpNq(Csjxl38>n6K6is8`^>5rg_>mzW?s!p81gwXC6*7VM}Z ztWfx|4O}rN;U0O0S7$QCBHP*7W<|iOdX=%;b^ps2mTo;$#^^%Q&`G3oCJfDhZ8d3` z0UrhI|9M4as$D0=L-^@=b1@ni`5f2;d+JeVa~*Et|hAn#=~=`BfO=k_vA5SQvqZlT|P26kSjtFu~{V;FhC;_g$x zcR*1K|KcG>6i(biAAwimC=`XNs)H25PtCfSAm>Zha5I$~YaX|f(tLUdM-v7yN!wul zt71A}vBw3e5*=0` z$uL+q%8}DzgK6illCid6kg8Mwf>d};F4^1ilX=X!XYD}9CTn0dLq4rnE(nFW(OO%g zDQ*{hWQD!JdYnKw53<`lF*Hg4m5G5NCts94Bax%uVsf6{S4J-jW|J9QtWalv)6}?h z5#lY+7hC`RiiS={o4k-L|VU>C$UT@Pe^myqTAc;I~*38i)Uy$~Fr zr0g;wQsKA<6Gl}R3mpz9Qal42_ZzR7X?@d*34{s`6rl9rv2Q+^g+NH}Y5VBs@CP6P z4UZ>{W;gxOxT4oX7NZGK@tM$X#OM|?EP8q-9BsXEi%Ll$N2AeoPh4r1;Hkrh1Q-O3 z@M5XWj|F~%_607Qc8vv7>s=|YfTUqWDi*a{i{U&#Lqc|QREVUwveX4PDD4`zCG%g} zuhXFE&gGS1tc)0SKYg=P+Vx^+BQZIykm$a%WyDIsZvpf}s1?4&sdGPJ&JvsxR5|)) zbPytr5OVhV!cGwdh6^YVQb+QXx4Kv3AV1gU7^+rzu-oXMb2|Z`jBK4Ah>~Qg0)=we zk$nw+u6XPm?EG|-0+ss&wfY&xSNd~eA8FYzzx|9}xL__hRDE<-c$!ixuo5hQVhl$4 zw<-0!PDeCh^*55S&go0gY0)%IoT`=7()9|seiJujWaw9C@D;e`MgUk?3D4Ad!WS1A zcUtRn4?D`ugY-)C-q`M=Nv`~ETCj7qD`Wqb>Di%9GK1%P@7X|AAwN3HU{8ZN~4Xj&xBsCp3 z3oq*e(QWbrcqz8Nc=uk70M=S-E+;!Vmj~>S zpsIg3bI8l^_24eFzN3?rRRKq(K8NuheBoeQk|pT-e%#EL&eald6~5RH`Ggq*{|jfT z9QXGBaCOeXkwk5{kFAZd8+&5g$;P&mjVHEk+qP|PY}>ZEac;ivtNX{jRj0ZS-qT$* zHB;05p5J*M+mUXm8Kl$xgDz;*5i1?B*c&k(J{;@S z5FZP(g`y64&r1{RGR}z3$`ZI2l_?6k>WmV7;(6q~obCizmqvvbG${68sBqM5vNrxq zK6YtlT#=HVJ}!@j;$9e4n%YgIC8@?_ZFtByGdWW$hNr|c`f2X>H;O@9&lJm;)s}?3O++NOP@RD%98B0-Lg39(!_CFUh;k~Q?V2Tu5$?79*l|2LTO!~B2 z?;jj}h#z3oP(%$vhLmVkIuo7D4f(;qwOGQ}F`$Ds9VPu=O=HRVylXx{*5XhL;^)zx zixBIXNLlqJq?5a-#a+$t1{$>rLF$`L-&4Fb0N|`LE_k9+4@4Y-hO+E+XpT+CE5ZxV z+NT@ETd7bM2o6`dDzYhzg24PCus$s04B2DgPvrz+STC0s_c?=#@c+HmOV^MM*{SJ+))aIgFdCY13B9g!f( z9pnU@K!G>s9ua*dshmCd@q(yp7aSQ}x^%p1mwd=~C74unxQ!#x1w3)JB7C0$#&>p@ zIR0C$I{$CY+1 zXm_x(@}H@JjB!s`@?uDBd30kbIV}6=(n6ud*OO#zp|ys@e!NgU#$rRPSXr^Ue8Z8SS!vU#-*jO8f9OC^5`kNCFYIk-VVNKI&E~SChYU*lN7MU0l!6gzG>Ei z5GHaGcZn(}Sg{Gyo3Jry=t2S1Nyjs(gooM$%v#4d^>{kp;VG*Y4>GIHOk#`|jszUf zVa~*BMZgiTx|_4BJBap|88|~I8Z4sA=mAG* zj@%Rbm@}7*jl)&m)b@t?$1PC&;`j5i((wh&05Q&C%ZdE^BXf1TR{B5FW{`}%=BJK> z&vrax1~2^Tof5XvpYY-AIkG4>OhnxkW@|VV!9K-+bFr6u_{BygTa+%yYfj?ZPBOq&#yRbhOFuIw=ndD>V}ivo;Yvv_0sc` zaAKlLL+fSJ6;YPd>r-jWvCWIYmTM$Ic7_&+3!_U zAxb3@*RC*}*~RiQ2|Am>vbs-OQOdN2bay|o;8Dsxh%79|A;daJ8+VEb8tkf!@Hn!n zRkJe4VZKg;PXF^Lc^XO(*ZirTuhXl1Bt7QUg@45)23~7y0z&i1HOQ-$gKxZSq#i-{ zU$^0k56bYXve59#Efzqn21H`8oUYE-H{@dFVRLW4|4ra2!1|~$9K4I ziEubYc}8+j?-2G0jZo+`Lxulj8=g_Dzrny>mB}4>wq)V+cy4!=fUn?9Aj>p>*03F- z%^Cl4Hb96n2Wv|JMpd|Qh;S2&iJb%_E`IQQTJ0c!%#F z{N}pd;L9Q&)n6Lv$?HI_k5OaPweM8|Asfyv6|ITpINePO`yUP=X-Q^Nz!Ha4NeN>- za|WWA5xo)UJ1lv_PhOg)!Vsv!GY|DU$ARbf@0VZiaBXdW(VzkW>6MUl70p)0eP??8 zr&rN`Jbu`AK6Rne`V=&Tc5o!5cK%JSAM9mkDJBk%ae3=5Rjd?Y@)sApv^1sdI?v$; zsKh@RmMjNJs#o6hwC#FKO^@g>`wO~@Dt|{2xA7M6k_IXsG4pIW_1`7ap6U^!L(BT0 z9b8z(*6uwZjpnl!9u-##2Ko8kMZ+61;3m6Lwt#Q2MfN|F5y9RZvfXJ&>w~cND-qoXN{V-=)OWX!wVlj&=PoAxf5*9(|2u}?j`W{cM~7ek z?d|{fb8k*q#HVE!^E-C){J)d8+rDG`&i_$teGk4>|G$_0-`#lsLC7|RQ+)zD0u`Sn z;+Se=f=G?=S&bjEvQeTuHvyFYnwF*cIhL1zOi{2B?Iam#)OhQdojH2 zXx*yk!WH7G+;WXIY>Q0}#{3cX{ng~eRoT$$O@JC!#6phskWh&=H)p4(??BHfHjVLW zV-3q2X&a?qsBhDkiW9q*oAz9H?fVJtROicL+V3Ji+&{r!x0j+183Mdg1^DizX_tBM z4AEN8=krgq$DCFdD*I_{3*{qssExt5c(-U140}_=qIvtl^puuU%G7?I)Ad?w2)eBd zFFC#O2fYyq7COBP+r|Oc2DrNVQ9-Yg)4UL1J7f}>DxD2RdT-{6GyIgUJt+~F-wuS-S{Bxq= zVfe2#oStYp65EdU<&7B1Op-Ee7BuM`(P{)C^PD`G=J3YgyRhSN+p^d&T69P=jOMgs zV6BH0#5Wk(_nucS3RR<{I>|xax{mtGydV<7rO{7}_tNER`=aW4qiX*qHCAhoWygN; zx&1pFK0Rfppy20E{~V^*%kIqRCD626jJ;dpiTcd9X`_^NQ!W>a;NY^uKqkSLWpa!cl}lizlK#H0)9Do-G#P zkR;WC*7W4pKS<006=4A;7X3zKMY|M5k0Ba(hY4nrTr%-`vB)LfO3l&lD zSEl^3l@dQ;v6t3x>!PP3wAvN?JR59`Au(5I`$SZiLa(GYbspW+e_Y~KT31%9HMN~l zz6Xd{$*tGI@V@CM)>M_xW^u0}3E0X%CTxBd)csT>dW?ZDgI4Vcq{XDE$O#-==F>cR zuWtKGy<~OygDN-Mr4WwgTi&kDSV>;bjgi)|Y1Z^0X=cy%dNQEVFSJTLOK#`(@(?6D ze##^qx$3f|AvZ(i8X<@DI3lPR>C{F@6&P-VuUfp0nMOm3uyT_i4GO+54*!Bv6|Fe% zexI*9YGRJ?{l8RVar5gW8gO2Aw#6i_W*!V+3U($Rwf)*q)VEX&dCibzaC!NQL4DQL>SmCE(EBnI07t*K$s!tQNeUX5dAfu%z`-_T$47^E0&#>t-G1-UP-T0PqWMb92Q!;*;XJ! z;<`NI8@V;+z#a71^CNba<_Ljl4LEJmaD8Wdr|>HnB(HV~4)Pj2ZX~Eo;IZJpNQraY zXwCAVTBXB{`+mB-*{88&*Gx}g)&DqEXuE=qXC?xYaGte*N-B{t`>U3YtgJeQBiX28 zBO7b*sW}VKUuuy+lTNFq*PofbROv|ev>CF*yv|8#*2qI^DLGBrzxPqPP9efbc3bUb ztUNW~^P_k$=>B{U)vQ6xl%VRH-BguYn3lU&%U|hCuK!%xH7Bjf%#kPFwD0#%74dsQ zx8!zL3JR$Sy0gWBaW4&SS*O7JyW(7dYggS}VT8ux=L}JKO_zP@lusrvA1b0_1;S|x zP0W0xB`Ww*wMC@mksp;nLVprGBQ%Phw$SR2n|?5B)>K>h5i|7KvfQb*y>`^3`MuHF#PG7rS|VL^FO zYs>mLS14--X#}$RR$sf*8iZm9>EX20vqZr&Uef7s@|v{rnnn z<2^-W9r3=uVuHL+n)zNPTFYAMcM8gaD>NdiBd+8k;`!;8hgh*K!GZ~@81T(&Yc63P z0CD^EHD*Jb!R8OP)2uEh{*AjT!$nGym#6HsBKo;g)~!RnR`un|V$Q05Zb+O;zyrTw zdqMdLNCu*eORP!ef2hDvT>L)`J-pvkAT(V%a%v{i6oUQZPkgepUqq=Iks^~-tR#%s z$N3GaUDyeHi5T48*rTXkNU~g?v=+!wh zRkccpq~e0dl?;q=*gt=<|A^GA|C2v##7GDK)kK4RRInmzj+&#Avopl#HD_ViB9|-T zBkN^BYdAFFne%cBXhi!j@x>GFc3LCS*%{;MMXVQ7bQr{Ea9HhPvOoLGE-~^ic=?9Ft z7id&U&DOKuwX!9H1ww$SH#412Ag?_~%Lw5u_^G*7J;GBMSRv9mKT{+@TYa$WNwtwoPI7~F8@y`%#$ z;5%lPX)|gHJIN_}=QxxGQ_d!6p31HSe`04u^g*)v6$30%(!rx9wCVMUYlB5HwJd)I zU41+5!SF8rbDq19RpDu2}E$diyzwGZe}c z%AC*5XhC)C*W{k?$M=GGh4)*c$>?- z_ryxvk=DvMf%Pj_i!=C4b)_uU@C@1J?fx`U8zu!8)uaK!Du<5<&rt;^d$K(3cbgX! zzR!!NTV6C*E}+)HYiGAlpSF=~mi z-w|$*4{hfcjqia$m2crR>hmZ9!mQT&-`#;+UH*mCYpy3c<8CxRo)y@D`;%M&}_&0P$CdX#~pB|^E$EP1vG86?OH zXcI5JXoz$1z|{sAi&~pEEm7c4s_uNVfCn;=tOOQf_mj$tjY~qD{gy?$k4Sm6t9fHn z-c>{))ZE`?_6M)>Do*>kyz#NTvFX2V;iO;JT*|9{-yJ3Yso+@eeusaTDW}qUhthhq zb|e+&?=tbfCbQ>s-k5CY$u%a=>wo5d&)`&EU2Xf00Q**a?fh<>cKmO~|95o1f*oQ# z^hDXGgQOmS_-etaG1{WR^kdD(A?|ddP|p(uU4J5~a|bgc?RP*1y#zOsk)+cfRgng* z4JMq{^Ey`@t39$|l=k1p3pWU4>q70X?)4MAlA2)nlZBxeM1*HcSdW3>uW=Z$jPgG& zkZJ$FTp$g0o|8<&B16S9EZBja@4C3ceN;I>Y?)&QLrW>ThLEMgh;YDZ6P=ZQb3Dut zr7+sG5RW5N#JpdU;#taUO!{Bp$`D2t$iicLB|A2bX)XgmC82VMMn7j5lQ(h$ri48`D}`I*O*&5j2|3@ULQTjw=XcYD>hevz{SgIZN<| z4HLXAO-P;gD27uJ+m`y2vM@o1L#si-_*!|0j#*%av2+AvV+YA5{J$;NEu0sBD$$e+ zCVg`PMcv+&Emi1_*_Qz@g)Zb7aU3|F0EqUsP9p zk5<7;ER;t8Lx%l6ya7_f7G~Ptw*Oym_s zKY|KY7U}y@^84%d+NgWBulUZuOrU>IfC z;l|bVM#Yk!{DAq7vCgqMY;GVQ514mk&|f)n*04R7pE`f>8ucznw+OiHEH_%T@(^TI z(_`J^f=JqCtB94_Z)(aL^8yd&96myUz1y`eS%uyzFYssB)K&I-|A)kE(BS)6>-~5l z=QCs_WF-3e4zs7Q2!VroqwJ+$ZLVNO3$QS%B9r#q?%VRvSvHsA&?xl0Kk8}R;F!Pw z4u%gxFq38$J0pb5)a_cw#@EBkw)}gsCy6kb%&x=B*7U5t4{WMO*9L`~>x^Ax9i5DE zLOCv?&32wvq5Z&g7UExOq-j$(?DQ11scRGbKr%adL~0xVr@Dv=8xnn&?cIdDYCykh zgD`;~Bq+LufVBLZ=g$LnFH%>?T@;ldZ5DpG01m69q$*W43*hUA3HG=6RQqcB#no0; zqDA86Pe^MxD2EMUSji0#5S;Yp5_)56e1Dk;h6-LGP0gR)Oz`*(Wj>Z~3!C$=cr9hO z)qj<@zf^;vA~!~BLu8cNDJ*}B_k=wL`)*F}VPcngnAidyeq#3>JdfUXU6@{2l1a5k zE@7;k-9Ht0OIBfi?zk}c{N~ce#ig+U1p$c%`{m$FXr+>4Rs|+xeHuI?$wr)$7xXs` zsB6jkT7*8as2C}Ksk#m!OoMfBdvRN^?cXE>Y*s&)8rHPi-jM2`Nxlwk?)n>aF8F8< z{{*XNP8Qo#)K0wb{rx7LOx?9HKhFno8F)2>=Apvevwt;g6&=yG`HsIF<+#GL-4F9l zNAN2St@9o`p^Dh=CT!lS{p(#A2lQc0G8s^|bg1AD8zrh7d73TP|L0b%IiDS2uGdwt z!i-LZb`;|&Y9b?@!LA=bwIsa&(Wie5d4E3td3!K?zq~^deduLiQE}>1V7W`%gS9n| z3jPfPqObFvyntq#y%lQJSzDAAVdPEl8HpA=PkP;ipyP~XmGWP1; zUlt2LCCU(3yXTC)tG7j>ZF5>A8c$sRDh!>K#vB0t-tmq6cvH#{zUSru_P*d|mw_dM z`WCKv>0q_hcg?Htn;dlNt3(xH0MHyQ%}}YtiHtc*R-LxBsoLPNd5?)H93|T1tt{RL zi~2!Df1_kte~9^Jk#}{aep~#7#!KF!&S~QHHu#C0&!nl09JZV!L_{WO;~xLwXyc-_ z@3nL06qKm`qY1k?I>5x~KR{MF!Yx77kGDIgwRGo|J7I zoVqs9^BC!;Gn%Sa2R&Z6!j+(%`N@OE1%HV{DwuBPMr9Q{RW!kPBVi0kW`}I$4O!8; z=2TGhA{I+->y2WhQ@^Q~PiV5alOvQUTRGtrDxPT>ssmlopUg?|1&x{L2fdTa1+fj2 zW-*mdoa?mwxlL#M*|&2l((dB8y0vD{7)02HZGuq3Gf0OVwhV=`^eu7>vtW=|G_e@j ziKhQ*Bh}&0YwBw_xDz2aW00BId<{{FHb@{#EG1)<4>3$7sd1MFJZJn3&LRIqJ zgBmmDJQwR;+1`FE+S|*xKIAnalR3@^Wbfjp2DF(xhO=6Pr&8CuyRe98u~UaxxafzB zY}QKJQK9}WWQIFZD6A|qajFyDgsHQ-9pC!b2y|?H>6i|Ra@uOYPB|W4$d94s(!yZv z;tdIr{Bt8DFw|;-hc?kvOs3HEGq{V@Ah#KTV=NbFF|M2N5?qVSS^+^TPHSwi$73`I z_Bj&1h+)beIb$((9}F_AIgZR#X)EzI{kdi(`RE12*9_UK3g2sfHq&|-MoSu*Wk&7r6kyY7Xl$Siucgvd>+1zIDo6%_M?Oh5 zHK;q!VfnlPH~awpg4g@C>YB|nB12bZvW8W?v9{Aa508DI%NtM)_Z29w^`tq<3iR>i zg-yE(C}NgwRHoIUfv7rUG!SU~O9OzRW!08$ghZ=5Bv%F{H|)ZpgRW{KEgs(?{#B>BP} zLO-;vj9@N;#Ws1p%Jix=cfX>XsyyF;{-p)dj-;CYhlPUYMBYxT4*Wi!V|pS@#wv8| z!2tSkX)4zBY?+#$#en|IOf~LS#xO{fck>U&$%f@($m5_YC)r7;L2rNW>ngb3E&bOkC@O@bib3&3;q5jLhIfX+s$ULtS9=%; zB36!T8e^VI4PySfkPTh*##cLkKRB6Cu9}$7g+S;Pk>{M8iSYOn&{1O#4nto!{I?=X zuZfS^P6`Rn5P5ax?aK$JKA#{o8>Ha$x{JN2{){wS(dj}bsLaPJC&VjBX##alVPCEj zT=cv%v%MYc@9qmuecta5M>}xdZwF7=O9(DQ=;h?(WW7H>2VHFFa=!ZH_&;gVA6dO$ zUGJDZKBb7`zKNz!j+xx9_}?8&*T}Bcji5~K*OjNxwO5Lf=W*}?<5m{e4>;*?fuHzM zGiyIcqdxwe=`NjpomtW&{>4uUX?oJCZdz8=U)8i4N~vvFgK8_H2Q}}8{Z#y&1t4DT ztd2UltUD#5r>@}!u{Mzt;9!Ad_K7Gt1AiObld>oy`_WAY-)sVg_(KVR=Euel)Uu+< zybvBzw@znptn`%40Nnf;w5Y0hg!JMxKD$+mah5^c0epEly-uE9@gbi6sV`eK9>jbX78##ON8gZ< zZ0+LS!O*gYl;8L5Xv!z1f3<_f!akn1(!9#2B9Bdj-vvxZ&E8&~6U>a~8c!hOJ(O;$ zc3zoA-YA-7F%hk{dT1-+=B25=a6PmUmoLE)4TLM-K*v*1*3 zqUUw}%QNPb+!=u|eAMRQjak*yv^#Hi0^w03MV5fO7nJuYhY!gdGT>X}vaMXsS8Y=g z?RIdsjJzpcv>L|9QrI=1NX$$}%@b+8avL#r^szm|#3I}|jkgCf^d$EzQoaz!sJGRKXTM3j!+h9Vf0$jLuNn$ifyJJR}mv>Cv23WK3o~y&B z1v-QPfwyhZ2hh!5lLY=o&+LCSCGa;Czwx9P`J;V&hZ(84t;6F`hxoc`Q=`8!qQS$q`1UhLT?p)Cl@dl)V^ZKntQaK&^G-$!W8yy~Xs%I~AB#YQ&(4R<4v1W4^ z7N9t=0N=o!-3JCwrs52FpFJFTDa$!v5j*~f*v~aSBd?VZslg02ZZq{DWK1w7V9`?7 zs4b}k7>wkfU`}0nK-xN)oLh~^bAR zKYkyBJTs`5J5tmx@Xq26g8{u)Jn*VAdO~uB68}mbKBqUB4J~UOTC|2Q3gm22(?U7} z1DaQu)|1NI&-ernUqBpwY4F!WQov!)Cjfrq)}UAIi%sy3iw6TKwzHOd=Uk}_kV$Ex zBQ_P4FBL&VXH?eF6r};2tt)tg)PXU+feBgQCt^0r8DCM4lV(}le*!e?*AFM;nHW;-Yj@ef#GLAvSK&m$u@>D>;YMLJpV|$n(vxp{XsUv*l+RmSn zL*;~Y_8Upn5f$L`*&LWDkgbk;L^NvujPUmwn!e?=E;mtX#1&o%tUPY%g2 zkK~N%j)>HRx0In)hKLxC76l#PQlqX~h~ISF0w&B1Bz2HuhNn_3`HwK%Aes3*zn#bY zsGzlQH-Jo3Ab1s%P(msXh=%%oUgS*70!j`?Y*^zZT2e}^v&7{}C+KKy92#wfj}}7I zs)V5xjHbE;tv;3S3-leb(hlGvRZFuo}yK;O%X)h2-`^%JK;0~>S*m-k|+0K-FQ3wAF!M0%YSi*S7?uc)$Z zneu9YfvGoc8$hA)=i4wsiylVa6QD16+AQ0|*DTc=Jz>k(dNL7Q5XHb{K!0_nvD#~t zKs=DmO^>m1m_*;vOqnG1YmS7c^1!KR9Co5P?1GT@FAMg0C(-w>8-6vpD(fcDJ zKBeiHpUHVQsu@vU>1@5UwDvO1jaV=6ClBCunxNd!l$N}h++L&bJmBd*5lDkhu!jv7 znqqWDV68$>;GYT0#DZjckxC=*80E@SMw~fTdkAh)FqgeJZ^U=&hb6W~fVV1);$J2~ zN~F@bM{YOfu;y4tevI2*f_hVEQH8vTK1;U zLP5#7aBAm`#bCK97!~84W?BvHrCE^`*nI-`nyB|slZ%KFUDVP`L7FurjABHm>G&T`>7X-CdV|n&D|!i`eMt~h@zYw zA#$5Ua5vjSIrJP&>?bx;V^`6p|$rz?;`xwao%Ukf#814&dD zE+*-DdKjTB>0+QQm^X8%ey{|UJXL|YZ0Ml*IAx$rD?C-6C|%Lq;t)1bVh>np!2n>Z z&|o{UdO8X$tP&;~e4C$4c7?)t82gH?;Xa!fb+umk9_^jdb`Eb-+o+3fb%1pItG(FX zZrs_jS!t&+n{+okzr{`C`lC9X*4xha77#UjPO#jXU2DR54IXe#pw*e7j8Lo4c;f}{ zK3QxOisBE%vw?Smj{Hb9SuRC)lTWbee75{n7KwulGg1x=BpPpu!ueR~&m4Giox(II zM;7fhkV6PlA_m;~SLFq{WHgK<#<9F;-Rj|x8Y9Z-6q;CAG%XBpm2C#?rJLdqVMdrM zo&5!xVoB?RRq7047qt;P`*g&fuw#nn)zUA3sfkn4gCZJQ&l!BXh+4;W-lEFlY2iX% z!-kEwGHdT!R|O1AQx2fHO`U0(l$+?T+QC_2y2SdSS}R2;H!OjhYuemkHcrjgjScW* z7frY{XYK^`9It^463;0{uS)1ge?hDtG>l7ZG6Pr*cN~VL=1xs*y5DY>wE`00?LSNf zqCF7+w;c`vuwOQ@Zeoq?=eY|Du|bH2B5msVPWZ5VpU514-uxK5|M;u$teJ@0M zI`kNyhheKara1_HZ&%Xa-b;l7nTi_3JD<#`blOb3L}0p@#u8f6gJ>k`$$Jv4>e~{x{&51D zgaYwCdpY!kn8MG8SmRZIn+F6_v})XAXfg-7 zgS7dBH$Sa7m_@ZSX0#f2>cntTNdX);nW@`z>;ciL$`#8w%C3Ts1V_Tem#H@k+G?QR$ ziy~qyt-?#{4}a+%{M~H!ho5hgb_p6yaPip_f*$M#bC|IQ6r@G2O)?ObaRILi>StIqOXz(hOmUJ~Y}Fqyzf5I87YUkV$pM5-#qipP8u} zIAJ1fg*4SE3QeIvWGHVrdK5D~PNT$lD%~5k=ivE;FJy+=R2d|ziJdE+pHwUN%#Uzv zs{S)JnWaqO^d=mMeoEP?X^bq~1e=X@QD!^Iy$Ro9)GOyT;t(uh!7(hRnC*62M30!Y zAe&2jxJJoNBFUuKrhwNgOf!wyj1S|9X8g<~(l1}c^uF`r7~#j!+i+z8T9&pbId1TS^B1UQ_64G6`^#F^ z)m2taLGdBJ5g!#r_vy3@7xnjxNRJTdS0CPhUCPVY>^Ak*#%>qX3K>5;0`s7XM1Q_Z zmFvb*QI4D6vmK_jlnx$61P~CGEr(D4232&@HRCWKkzNRr0Z*!TQ3D2C5WD^l$cm=wX((M46?{J z`OhARP|A9S5&C^K0vc{5I4a#z>kg(?-Mm7#2H^?Tfb9PE<2fIzk94~Dle$W&hk@(< zNptN{k#MiBPL+*7OblOr1=?KOND-{

Kf7!`~?TF;pU(&@J8yjV1u* zB2=TlKZ){&VPiT@STF$a76?2MVn(U4y$Q*Ir^nHMk($B5N&B&|a}o^!w8L|s=SBCJNI&*?aChfIDG zOV5&3lAbLVn|EwirR9cbhNE*r9$Q5vyLNqWkp(G;Gotx&Q`}yxCER_+Bp z{M$t{aNOnadLmuQyy52 zS(n-v;{juyrR@zWa;2LCuZ+smHO{G?o-ahMSF}{oU$;B#v{=v2*@K;_LOGd&c?Loy zb3NkK>S>~=yuI2tZM0&c|6U?2qL1P#?$qe_w^P=OqG5nEj}c6vIemn4`PLF&qCRcaPcS%%z=~_ouw+&}vVEodDZ4G_TsJxzy^ZFk?vT>xtwW(E{=8IG3R~o24DP5CW+! z+L|98dv1Qb#!;q_VXj2;d6^i&5XLB2*NGpmv>SO2Q?BE(ka5dfW4@O8qRJ3w@~ne7rjS*KOPU3R%z=`pD?)CQ3ajPwnO7)uez&ct zi|~8#Eky^jY99P9Re89CZ>;7hwJ~k0>9n0HBq-1OF&vIIZQFLWFw!^7&&nbZ1x43j zY9yRqEm>PkD*YB$Sh$==MG%^*u-K_U^Y(`kvTfgXLBi7HvzJs@p1bM#^7HGr5O81r zeCV>U6z@D#Me*g*Zz)nYAC-mX8b*~xR0-=vU8#!tW-qe0*U@Kc%P{59XA7(K<UT%(U5^Tg{gG-q~? zplGAc6)>OG>SLi97y!aBx5A)aK9lf5P~}^GJXI@(t_{j8sv*d-l;q?aYISq+DI&VP zD6~<*aPKP%)T@GO>x7e~kN_faZ4K)iPdv!rW|vA#meJt+n){S#MJuB>fYGr@_FH<+ zlqyUfEhND|9gS;BfiEj^aN~I>Gr0T|a3>MQV_1zd)_w-C!mn7aZC1Qej71-(V6~Px z^*y`HM=Z7|w?y*8;Fdu|AN{1T*4gcjH|tlP2r`<$eLD-%J!vUW)%ncAgd~=%Rl>5J(oZYL&L%>hsc4wkHg`^R?t$gU(A~X8~d)@d)*MTdvnxQ%;u) zNoAu~=EUEECWfQ+-*N-?u6B$OmtwZMpLa$$dCqOzdKbhNQLZzD?4vlQuyMN}Rgni~ z-(0@H+lCb_2^xVjC(Tv#fXSiRlmbM9eL6NKsnHeu+4I6peE!xF2D|`%3d2C;t=LGB z`LtwH6NU8)A9%XXAl8L^Q>4aia1y3=?t*Y;l?1K!y1&*7Ni~q7%X_BCu@}J;EoDEj zO--q+sdgJ<4a;2lL>2^9InZOOiW*%mNi^*PGSlD&UA)~4>ew7?a1riM$HT@{EoI{5 zpgH}OP|F6(3j4?wwCf}j8fU4~(Ag`?i5UJ+J=gStfLQtk%z}^zA(GpUm<5yIGMgFxbU&QUh>0xvx&a?*6<>umTq z<52haW^IPaPFzg-K%ERdhN#+DWO1Sw&v=u*Fq!#|#e{gt6D$u1()~)M)38US^5F~j zkFyGemuGR_z9lT`Ppu>Qzqa0fcZ1pdteLZ$0)T2Q-T(v~!cUCoWW+vfzWTXH8+;h) zXWOmcF_L_=Ev}i+(gB#sLm-fXLCjTZfpDfPQUDH3BS#pC&#PRdOz}F+9Cb`Pq9rma z_@Kw=B0=LybsanBeweDG&T2|u$-U0LGE60))hZ#wr*LO*@!HZ_{R_RAnbvqFJ)2$G zxbeBARk=4&heBmK9bR?=vyDXH;i*VevG~jq|L&Q)pJuB;!?I-o&v- zRCx?-Zv1RIt#J{5cByo-37y~^hm#U&-n+lG^h7*{g0u+1PD-EoW}iRhJroFgOaguz zrtQ_0G0s3hTl@XOkj?46(D!DNO4^_MLj8Y!b>AqL(n+e|5lWaT)EG5r8yH$!=wGL& zJJJhXx~WTfpc{@MndCI>VbHRwRlD*8;w4^2vv51$V5l=iW8tBci&*natTdRll1#6* zC$dt?)f#!RSA=L=Bi{vP=_B9QRYVB8#Y37Vy@F4ejR{3qJ_jyh2Y;+V3EKo&M&Kt^ znTa-}t7tFs2tRDLD%xN|o&EOxTXF0{R`J#t(5Sb|j;-fK^n`>YW{mVY~v|fGT?%qYxup%_4L*MjlS^k|fwvcxPS$ zbOua1hSdWdwlV|*K*$cd@;v)*{ScTjD1vGqQ!9IHo`il%2MZ*Lt69_0iu_?OGvrecGMVsMj9K)@Oc9gqO>+}NKoDLnd;P@> z{EGb{el0y;1EaRFP-ZAm2;r|2@@vUKLEL8esP>G}-%YWXDEvJ6Z>AXv<-kU#lUWOs zBV@o{SHTY`u8#1KZxZOvqQCd-!k_I26Y1o`gS-}+m|d3?ix9f=oMe%Pu|Z8YfOjN_ zJX+82{AtSl5zBLG%d;OG=lf<%gFbEc9$bgQQ+C7sOFZiU30dg+qVJS+zLQ`jYZjav z$(jPk!ju#rBdqtr^%?ba+#cJ|^i5~<`xAG1C31)_dlEc<=sP4;>O`xY5*N?n-EkZe z9FJ@uD-=A5^q+Pk?C7T)$@F5)QD|VsBp(LZA!Q-?L2QckPF@tD;F@W*lfi;z0E1hC z^+3Lv-2oZlKw)>*U3B^pU^EQ65ee0DDzIGWmgfCOKVx7r1hpOmLTwo))bW|?NlSdc#ui6;e9l@K#-y8AGIoUe!X`_p-B27 zA}xZ(1edf+Xv@5REC+xK|N7Y_GedkfYqd{NyVpK!a)Pf<%#_Wiuatm3pvDkqpItic zQhMd&CD;?(A&qevRNHbBA4f{J9*8jM#yU#Yf5Q`EU%*fx{biO<#gNVxRcKzEj09Ij zC{&q+3|ITT0EoS-kYvq|9#qha^IIPw3G;OZtF8FChCJ_=KiLZ+n!D8G$iE4ZVX;s; zQW2%H^zcko&X=uAPT<<=w**XWyJLKN$zdTI>{C^0GKSU-a;R8-c5E4jMunyaA$$26OZ4^W*mKRWSY7~W$i0#Tecjp}XzamyVwLy8Q|*@+?c%ZYYkJBk23J<5iF>oz7|OsLh)cq-4JdJ>nENX){^d6q?Z%%{cDt1D)`lmS^Zo_hCf z;e(h@%U1YfS!fH6qQmzIP|=;h=KS~hj=_?h?S35~_BNgjg&GPgYWORdLVf(163!RTAE>U<^le`gtI++dY9tuL0{!@(V z`{_7F(6_BVAqQpi%utQQF~Dw{t)3NC!ClQ^w?03g%1pd-WAzX@H-$XtGZOv{=l=j> zK%Bo7^7Gk-``jtiC!%yJQdcy)R-H_`s4i!zpo3L2JhUI`P0S(G1vm0R~++kGiRir)zW60c*aV1yaCR0=rGA>ku?~zf$tqV zwq8yU0zz_y*+(p&4D>?F9}%jCf&maQCjgSXX`v-L zXhhUDPHn=Yg*|N9YES}=c|@FinkIpw^c7oSqeV@dQ*b*&Cjg zZ`kQ-=V=FGq5r-GRMdG=ygxB;A7+G7f~^*^TGRRo(I?DQzcAsMQE_6rXJ{kVP1<{K zx+FRylv)?mjf++|4KXb*YB5&}kZ4ZC5HUDFKa25OGo|Qq{GgfV>`1MeH5Jo}(HxRH z&96!0#zhX0^&h`Cb(`w@t9nA# zG+S|D&Ji>Z=pi)G%OG|w6NFwf03c370|D>duE}GyGn}dQJ$Y@kQALhA4Ee~^$S|g8 z|0GNzJbZ%KGveN-JQkv~Ct0|8>^ce`KW{c=;`Y(&@TRpH>7yr1dX`9g#1N#$MNiXW zK2Tsyib_ciHjTw6l`E>o#P7lV+Y+P|xA4cInfMgpc)=S2Kh|`)I|$wIxHlAh+UEtU zYRtZ?+Pp==*ZNpM#GRa#h1~S-<7ZxOql;eFbl;moW$$OimNC;BBIv7Ng3#~pjU`pA zo)JH;uu+U0A47|dj{yRe(HujZO*84zqTPo;Dybr1S~L<5+r_v4#s2l5eaj~%JL6l2_H(!P7Tjv(5Ze#v z9#YW*0&Sj==Rt5(JPHxcgBC@Hh%(5i-oz#XV$zC{m-0$aO;fN5xr6}W_8YL3yp+#B zu&f!zhl#S4KnhxW(&sR#7&-dUtXY>uFblDW9WRFwdHTR$7C9AkZpstXvwzW}C5L4Z*S-G%$$8BmaX+J=;gZPB! z<*CQX-Hx4+ziuqHKrq(Ccbk|tnr&mIsAU2RSwYzTNiIpKv?IIWS$#Sq|2L~7EIYxL zwC1g|&f0)#Q%IF6@`#+kW5exSuUXD%&5F&bO&-BSk)Z`*^=dBafB#c(5rs^w(B!0* z^P>e7Zbu9So~@-|j?y5{>`73?o#-WhdbI&#EYqPu{6nulN-DO5J%+ny&mEQ^e)b9E zwJc>Jmz%4yVl;m$g{mvy0DB8eNRKEW2>x0_ac==?pov~Vg_XQTG(vc1P}(VFt_WRA zBN<@`mTmPuau383Tt!eQIvx7Kf5N#rYe^P>^=n!WEuE1|nFki969$nPZP!o+hj}AR zSVhh-5;SaK6U}rMJWc?F;Eu|19EX6@D>Ty z@P~o47!77&fhwYO$H7>n+t!nyD;@^4Vhmix2y09_M8!jaQ;dM6Ft7>-1xjV0RQunsEfAa?>38>+x4)@$zM>Q0(KKxS;qnt0HfXC>@H%Il`I za|)hfurG^Du8quXN~7y#Ap^?)HQP*4@x%MuX~kHqj#|)mJSci&5fZs*ORSC=ib1kA zY|if`jvExIGQ!nDR&$=`pbcRI2p^88gz8{h6R&qnN4J@6-+_3A!$iI8x@{%NO|Tn5W4M`-b0V4of+@olxj@4}y9{h~W6)e`#!z=BzMI<-=y=^5 zhNqj}9l{H7Df6yIJUs7%6&c8h{bTOzQm2D)dXb|&;h>2hghLR?L00wQ>YCjq@u=e$ zc=Hw(Y0j1vgR#Nw1=}qY`wdm^*$vavo^##jc>`PsJPq&l%6%&ot+`roJ;49xnS3d0 z>o<5mEOhhQDmWGexYW9OtyTB7K$@$72C1x|s1KW&7F|<<-3m3WmJsb_6nJ~iEekoP zg@tDwKAYa`-0NCyKDHKwP6I-F6b^R2gpgabDClkYE32dpfo_Rz-58*&NWqlCu;&+C zJj44tS*sIxJNbJ0s}zi6MWbp~4NsF@MqJsDxyL9ezz755cg6oYj9`$Wu~|_?zB>Er z?C}$=fuQe%DmLkv8U60ZGxBkeqVCCK@)7?1%KZB^`A9wza!D?U|F8asd?Zsn$fj$d z(R@7VGSW_21GC2An8jBD%gJQGEU&x#)&I87VyX|3!ccg80$n&Iw_sUa(`&Teohq_O|`6-40F^OWpmRr`wa(jY@dC#H!)x;Zx zP)p7I|CV&dw`Y0yzy_VyGa11ysmHcL6?p@looGdyzw zisE$x3}iwCyMXHKTIcDZlH}~7WjXd=_x(2R+IbsoG}~?sNLWs{VNPxK%mwuV79fNrUkoUh1&>bMH6q4hc>ZZVHdia zic5h@EVRuQ1zisAm8gY7kL()=au~Y_{HH=&0A4Z72QX+WxZHb}b!hQ;%N8#UXYeaX0*nvn``okpOiG7#(@V3F+ z-+k8kuqg_ou0H8Hw`=M9#K_e*?fuqBbj{%Wh1o(w>f6~Y#4F)|oeEH1g)gPHSP_u})D{NS!ift7B0seh2&35wL#*)y|2e#I^t2w$o9vp^){9ha^oz=- zCUaU)D3ZJrWfQ12120F4&??0IAk1%=^~CAA;}LW~?*9W=n9XZ!N8(E{N|+s#?%BI~rCPVN~_X z!<}fYj;7j^H##DpKoUgz!jQ&rvSR`I?eC(`OxE;462(>uW(F+GDpIGsi)T}6w@i?^{ z)X!SB`Zov4UCZ3?eDo0Xi5Ul`g(S5VWhX%#%O$@76vq?;9~whftSCvv@+N?H42^`- z{@k|)U}as4qI1-l$Ros39^T}gLz^#vzaehMg0LG_ZAd8F692Z{QM|0Vp_TIKD(7mFS{ zNg%Sp^r^E`5)Jo3pTbvQNB{b?wd<3w&%Qc)e4_jO)v4~iXPN(M`uLOt0C_qTP0yI> z*yb;U!9BT^Rc>Of%_I(z)jf0N!1>yqx3K-Z9eXQ*-GEDh*W`<}tk@UBi{8;0w4D!` zz9TF+6t^_B=D^fmuS-DT}PckLN7ZqfxK5#lzL(3>?cM!qk*JTO+a;6)RUO#jil z6+IKc@7e-}klW(IsXF)fjFIVqY-%mP0XpxZDXv(J(vr#S?!43m#)JOWLvzjuElVbH zG)dti?~pJODecYp?2~C6)Y_5>$P~#@Wk(~Qi?hjQ4FuUr1dIEYSA~E##sBfNubq-s?$nMVtfRlYR>TOnj?@GjjBPY zFeJ(GlR@Z|s7QvLs$@x*uv(M)w*62W>W>21+U$l3ut(soP`r>0i_%iGUZCDknP36K zm+6MkN;bj-Km^2ilhgEKtD!GFptspp34N^_hhhdE&mKS8dzeE-{-Ii_%9uEsXovqv1qJGzoj>rk#d8|k!WqrE$^qFox|4^nS z{s4ZOX8L7HpND0fb}RyY{;P5NDZb_ft%^-ZzPrMnfRx0<4X-4~?Bs@4C~vwFNs9dO zZe}8%Y;`yoOC;=hd^tR1I_gn70W_yB$m+scY*>>w00N!N#p*h{U(ZXo4A?yQ~ z$8PrBrx78|o$e5yE_h#hqX{|suu%FRQ7_cd zj9jc;*?TS)tg3Le%$a#0NRuyoLF7ReMezM^UOjvD1jOWAB03+t@yef=z3k1dKBj{d zGr2A+x#k}J3T%>4jku(A9We5Tv;wlTM%^QJnR;JzgpX*Q^PUBIu^ zxtoF{=NtQW&4Il|2qC)Wr?Z^hoT;2Xoc9lvGR$!XQb37$iZPAUli0K4GB|s>b-7 z7qZHj#kPZ6f}^8Y4a|g#jv3>VGI)}tnGh#MT|7%4C;J4bs(?U9E}mHi@1g4DTwMnT z$`#h*coLtSuj#K+kmrBBGR->ujRq~qd1C36Q#YnT2|JLhMt^N8rsa|(LC4*_E!^nu z$unA0lyQIqg{;u-K-A*P9N-t=5l=|DgFKM|+h4|t`*zow_mE}Tf72~|ir+&K)Ff%EeCep^0Hec|Xk`DX6w`>bF}mYI~Hwz`)yJ>*Ii(qB>8#eAB>k+`clVyv@WU0WZg|Eb3WM>)J=}4<|6NM zeFF#<_^FFY6znvv0%P7I=Y|&nZ9T`KV5>wH0i0%B|LhaCd&m&sYZBO4iA{=c;C6tA zZ?SFMcN1rGZANUUe;|Pg%Jl-(EQh+w&KO>^z;!jbGz-ApW!nqB`HlsBWMo#6zWy?%cF z?8WohI{(8;-cD;dZ4{gGI&?B7K9tvP*AlBU7=*J%v1*2|{#*t(cF;j%U$bB> ztG=Oq%@%zlYrb}#-!Q{L35+)N3M28s@@m9^-l0aovfqAeQ*jGJ5hMMh>sva^DAuE` zd-6sL$L#j(R#w+sET^};UQLY;^bG2Gp8X-E9IAD6oaec5zcz|3ngRoE)Qr%Qo0z=` zD7zEV@cf(5(2=nxO%yS0JYbc+^j=M0^!je7?C2j+m6i1>noEdBs$j;$rt%%lSv^=g^^b!6IV6Ou7h5YgM9G2mk;jX z@U_bZ6HHBJS{o>a8|b&(jlZ$q7K004&@#=EWbfXR1>DyNVTHl0r7Qv1a&QPRMLQH; zm9lpY46%9l`;? zCVl_QjmWgY!9v!A0zedqNnzb~ zg_(ji07zj%0AH?ZlRBbpudWs5|N z;jlrP29^#R(XK_s>Q5Ml6tz!w_7dE^B@voD=@w(Rq`V5j(GnBO0ihq5LDD@~GnSL5 zj?LI0<+76hfF%%iBnw+H&nPR(2;Da2-E$RKKmsj{WrMiwF~qH0>1J+HsN&)Og_ zXsHm1UkkBN>p}v=Lz^{1lS-d|qM970g=THuYk7!uSw*ePVAlsrpAXAR9eAB&DMt6VpOUnLCwCy(COYM@F$>Z}i zcig+FBWb3cnwUCf_5qvpKyFve_{BZRNuM6P7rdaoK-9BB5aK+AM936N--Fa2$rMks zBq&Z!p1OoP8$fg+YE~_1#!h_;11nc-&8h(0sSSp-Id3Z}asx7$u?iRo`%tq=&&AWL z3zAp-hEVQuv{fIXIWL?Cnnr3zPrZnP6cdEn$y zSOQQ;-M*(q1_-ydVrBz`mfgYG^1FAo>>owl*7Kzv$VmsjAlQF<5ZME3|8Tr9d4%V+ zsRHyF)bHDF5y&-Kbq6*!H3OV^+bqFC?KbW%V{C;2kO%O~0745iSZ0k@#E>8BIcwt; z;-xzimTp3V1hjKsu{M{t;+9tV`Q>2#SXU%#@ArjL`!&(u(>VYuV-7>W;kD}>`z^g- zeFnB#YF4)6$qFusUN2Y3d`DE|6x+k8hL*A*)q_**;8gp4IMpuDspi*1@9-N7I2E?i zjrChRYdIZ?x7%r7o+KWVWTe@&?JRn-y#?6~SKJ_@JRm?TqQLa@`M6CXK{!}+4tgHQ zQbx>rc!973wNS7Q!^9OL6*e0RB+HU!EQq_+UhZH`FfXSM6oESGRy<9)djJ{KjE~Az zY)#?MZ}qqhU}^PTToEnI)eON*ShZF}E+(D0yrY}P5#8NhqbgII1rvg~>t4H{cg|F< z7fV|qHX#+hy;=t>Y-=3Z2k35^ftrALwMd@DL`4Lz{nQb>_HiRdm6yTfj)6nk0gB#f${9DegnhIhf)+N^l=~l0}kpHpPAD$rnj%B1r=2 zNEr!af7k9q@6fz7p2S^OV!|N!_H7tv1cxx<{;Wmj)mzPY5>xhS)o~vlAJ1mT82HgD z3{Ab5{+Te5$zU;=_Id+ttW*tRRcng!ou_Nt-cfEzY+rl{j9~Z{r|8=~g`!pza)?K! z!ww`dStha+6e;+c*UD8=W2#o<1izeRWs|})%-w6YmepqB$mqvAbj=;Z#bw(IO3gG? z#YA0f9#H0TBNt0%Z?Ep8wC*x6pL!7X4s0zcEQENjOn8=w8*)P{74I<_FJ|TZhAWx0 zT=a>!d6lqO2}00zrPXO0ym>|O?Bv)vn8GVkLsG>*MWTGy-+ zPso3ty!-Ow^z@sPlb;_=|Kpc0Pu|Vok1tNYIsIrqe0h3$a`N-{FTQ(o`TQ4t`tfJc ztgrFY$CIDg^IsB)oSuI3$E4?n9^w*?O_VW-Bge7fkAC?Rl}J>!WfjP~ws;zG^VrL6ux_TIfaZX3%N&ENhMSn9Ku z>>gD~PSVMY&rJ7KY^Pf%wxeSy$+@@PCqj{^Dnu-znjj@t&&+qf3wr|~$RYu-s^r)m z;*UH^p<6QkZj8PWTM2)rnyPfz9*MoK@opR9i@W5v4yci)PYq@TTi^#uI?P2Tc{0*>0O_!1R3&b>u6lHo3_4 zGhV9t#Mlnr8`ORPN704poBDf5Cb+UQS(}0&qtvLEvI1p8j{xOgFGVp2_r4W3rA0*F zI*d8b;!mRiu(pd(Uv6j@Ewn%={UlPa4^wQdfy)EXDj7r#fI!X?i+=fy+P9O8N;A8ibhVZ&NxI2tICU4}>LeH1`vd(Tlw4ZqW%M^a&nRD!$C5Gf z(rjt`%avbTMr&lzj1?2MP*jdsU=C9b`P?-CznX#0PCl{Qs`JnN+o6CsEK^&6<*9Ju zI?gXIq^r&Ax{CM(@8C0$FI>E>`h=?MAcq2LzL(_ls|zH{7t3;T&%m>b zcY4ihOec9eK(+srNw{cAZRbO4JQT&G8^F!e@sN!WlYnBacVyQNfMK57iit{?1f#fG zTInm=x;;iHFIfYH+n@1D#LB};59rg|W90X{djDLr)jFePd@RS&Pma~x@xH1vP4jd@ zGqvq5e|#Q_6tE|?5sGzPS4B1Tjg+7^=!_EF0Bkj5Y3fv(0aMC-j@6Xa|6Km~{Dkl+ zo0|Xgk~Cz@HBgEL#@O4G57_W91jpX&rK#r0(7pM0HE{LjA1D9rR6F?Njk<9P^*}_4 z5dDT5*KNzR-CTYPB6eX z{*5a17W#cI%HP|qZ-NN1bUvYXf}09fiUs6gun$auUgg<_thg-cEt`@nC2+W*3%HUw z0gQf@k}5B`Kl(_$X}=HC;0h@hb0VumU5e|1O^i4c+WcJ%Rf7htg^prZUs_U(>{_S6 z!DG?qTp!7HEH{i@5LyegUnge?ladx2tntcA6BCUQwf?@U z6x2~yt0Y$mtP~})Lfo?4rY5M{;Myky5)&1GD`O&9A#_8KWJ&V{t5dmGG=)9# zoz(zB)(o>6bgm?9Uc$1>lt5xVUhi^?X^LKE|5?>j$g|#yhYavjtXN4?TGBz0*{`Xs zoTVdPV8Wb8n7Euxs|koThqMxB!eE_YjsQ!koRT*p($k6o*&r%IJvGEAvtL7I$x@P5 zAdT0|G~^SEw#+K&ZqSTg*NOj09c2r1(Isn!otKIr%S&D`gKL0A#9^YV95;4z%EN|f z#j_Wzlyz_>-e-z2YUxE=Zs4+mWe8HG+E~%87~mpGq3D}&@=3084*h(|dr3rj)@-)UJ5)n~o+CWcR zOunjVibq{VyMUG?PjSPw?Ph}e8iUmC*zi$XQS{Sw(JtpKlHY)y9FNnd8 zYCaz0uqLe!f@IdMrRv0?IA@}f{FNkLfJxn?OsWlCh%93T7HCK9KW-Z|P)wlW3c9{d ztog^PDtTwE^zCNkGb#~H(!?cz*~>&Fns3HA4(onlDP*8=o^Nn6UpSiv4L(s+7iw5a z<;m$RQy03k`D}li_g>tb3Ww5LHrJLK_opWPD5~|{+n|q^Z-e;M2C_yG){?!07pc?P z>Udb!P8AozP;T|gMZ)PENkl})(3lR0q=k5}xTjm(==|~mUN(B+0{+L`_R&sa(`HPu zgBmdjCffbR;1E4*%`^NR)a}rYH(QLoVCqZJBw?geC=*EYjSkW)m%K^bYPpH+CNkrqH{cjSTMCFMygfdF4KGlVY{983+|S0@5gvF5DzIE9-*&L4ECn z@O}%e+bGFJKGDhg)_J4lZWBR_HU*l;Np@OjgWkI2&o3`DlYX3w9N8W|8z;D-C9PAr zK{8hQF!|)MH>?B8WW*z$r|Ld{YY_|?vPu#bd6cx-(5-}AUjcf0RmQ|00JaV?Mre6(Kr_FWZ!EG=sKg?L^ZGS1VbHpxfv3qx1}h6RYRhcj?dAP zP+J$`SgP4bV42(CExI(7XF*ZcXoBC0xQNCXO>XaLkxBqKpe4tOZ6_$TxdK*xd>nT~ z>t*J7Th4R`{kZ;H+%av-s86iyE19hUR!>44(W(?HTJi)efPC(F*H*Slg^8tzJE9

NqH}<)eEJ+xaFE_ZX{1y>VT%J#7ni5NvMvv zr3mCs)LFl0S*HH&)S_b+vI6cAf}#8=#ZfEa^Z_?JT>d0Omxs1I*!#TrL2H zdP08CCE)G-V)L?l>;rK^5ZVyXK7gJZZ6cVG$LHC4>3lizVzIo*rmi+;#qD<##pi{P z@{J+eX9h7th&3>nVUC*ksEKzCZ`8!Q+HXMndYq2cvQwG@Ya0y&jk&Dkh@K*WzNAfT)`k_?a=E|;FVg(Yry-* zQb!1=zeC3HASPyKc1o_8shQ&rx)}r(O)!bIC>iE#+CPN62iI+9?F3 z>YDKh1HF)zq3h*d=?T!-Uy7y<3|$xOj*BX89&{Q*RicC;ORcLf`NCFqHKEE7dQ+tF z+AxL`)3TCHtd#@;8V=~l2No1v1?_cy^nGA`>(5*tAUDL6TyioFgnQxa_jvP>AxfQhPmf#$!ry6@+iQU!-G ze}@s*eYFu?e6^}db?9Q*Eg=_(>i`O>wo}b(bOBaKZ`_sJ21HJf_GWqOE~f+7Nkkrh z;Sh``ReQw5n>Of1D#m1obAoM%6pL+JmIYP>W@me522n(NQO@eQSc`Ppab|{7g}^D1 z>Y(7VvGZapA-L^A4fNLJ09YnZ?w+N$<4$UHn@AHf7p5Y5%h_pk?I@VS(6Fq;279P>{^muzsN2+=hie^pXIsiJCU?0n|5Q*KChzu*=?nrnqIBK%If@hFFUtmrK4jMdjg~ z>)k+pq!}Nwi`)^S3HBmCA#X&f{`C^_8VBx6)m{iD--r_4{~(Km!{1|xbkvD9>Ot-? z;6DxQN8J}2;cpk8OLCDDQRvy-;RxtXV)u;GyN=NsYF*jxpI&fLG*<9nUA2)}fdtg; zhIGKI2XT!ySrJOi(vmGA!hf4>#fk-BmL^d}8S6Iij>5L%zTU-FvzyH+RF<*%wAnNt zla&etp;wT8`(ZTO9oBSPa>EXz)Ul###dZEu2^VmH{(FEP%L_Rr=S1>+kujHsaW*-h zizcgjr1Ye}SNx7<472QMZYzX@xDpAhmH6nEZH`Xbd?}jZ(M5h#qf$3` zkd@)Uk#Piniv-mtI)At=0uK{yA5w4HH!(tc51(fgo&3W+&}|AGB^x~hj3^- zhb`A=6v;i^rvL;Mml`~XAt3!wwIb6xYGeUYya5wyz*a_pv6#ktXZc5Pev3KzHm)S2 zLy@nPgs$Ppa#0eVCs~!EcNWN_kM?1vbf*nmziM`_$sMu2##rk?7fJynDcCsLBo4D+ z(C8!iMT}@Lfz|Om5b>?xBlBKBh-Puqq^UH0%Vz~6&zCgMS>}Kmqd~8?&$KLQvc$j= zN)#u^Sa~eTQh+lxS@PV%P39JwI*^O77QM_rM%f-%=JibtSZOX-cVk1LRg)Bn>?Z{iD=9oO<>(Qbvh+R_x`5$Oj}@UOzL7*Iq=Txe`cB?52(fPyHOMDkUYl{9CflG(<)oj&9ugfG{Oy~l$Pcgfnvo0l!5K=H&ZSTKUz zxYg?H)%4WfycU3ty=RFAE?H;Qg7?BqebCzSb(!o+0${d(DV?hF`(6>dm3#j*#enP1 zQtu>XYnBJFu|!V3t@kNT$li0WYhwNSWsi?db*{#Z;e^mFMV3m!-j@aSemoJYl@eqv zy*Z(|pLIp44u=v3(oa|zkfz9g{3O^{nzPXOIZneg$>CVCzFFfQPA1DGhdNxbB}z*H zRk1CsB`{-svSbr9!YR)0CE4s-NQdD`~ zzi3gS87-+~Wyl=Yl+WsS6!&n?i2f7Us#!{CfMsYLS2Fpd7W483mANSF#F)}Oe*SBM zg5cX~jtiCqkc6XlzwXfwKU};RI!)>wBM8EOH>WDX(+VX__}?p61p~NzJ2{%xexnSY zqD8`Llj#dCZ{tc@ZN1h!T7Q22lIUL}HJ5HXVaQO}Pgd0E>wDIRStP7>PNZDk?o%df zchh5AUocf1>M|?d{k9Pmxz}LbT2Hy=>u2O;E~|po1$J7W3GLxXt%bZq+;;iQ=qFyn z15KE1Go_dIp?8D#V^Q|fwoNpoWju_%bWMvA)UEi!)#D12o*TXjMjE%gEK#_|=|H6C~hhJmD{Pu*f zW`a9vXPJtZZ`ryxNTMZ4;lnNaFE7;(LUJezN=rhKnIu(4eSRaf{!Yn@mzQr}K0m*H z`QjP*v;G2ih36@`7PYz9qwv^71znuO_U#0jFrj%}lMqn+X-+P3UfPP$e%UX{M6N@z z6;*AmUhwh+B|ZFz`g7we9-@#6t3<~-+jJk1&6X35R}ySJR|E2c&Zqi!ypn>3;#^oe z4G{$vp3`O9r_0JJGGrUef#qK#p{>TRk{z0VtKk2JohJ-wrWzFSIpiqKR8vfG?tNHX0r2GinYkZ zqPw2)fQk4WmSmXFiJIa4)tYiSM58H}WH|NpP}rW0kbh&w@L)l$ zy>jVPv|6)b#W7;JAualKq+Ut#;U;)rA<`bPelfGZqJ5AJDvosN+1$;wHBUF0;JRQF zTghe4GX_Z5=C1Ac-R8Ba$5`f!9S`5mHmy*;7~~HF?t}QRS+=Q*>S^l;U0{`!LVHTq z1;67NTlfrtOP((rL@F2ON@Kq@4f(It|JB*Ky@cU>y!rkbir|93cyC2Vb;PqJ2$@VK zU{ZSgi;|hs>F*1u>Ra%nB=<{UOOC?W!Yc|#6>F#Iw@(!XC4b`e*r3DJ{f9;B z(0ja>e7ysQHr9446*@a|8dG-2@Oet)W|i^$wk`-X7aDMo5%mYNe+x$a*}U!BVXqyq zH}@|GS((A0tj^hA44crw94r&MyhA)a;c!i1`*5u3~z6g_&7{N2uT1V|<3fLyYdQ;qwhYR>1O3%N_h!eww;x zgZ)^3|J4Tw#ozO$ffN1D;=AHGFF7qmG01Pwc*~klDp`sZo-i!JJ>@N-GJ0AUETmPe{)0b)UF-pZvQvD?;Ur?2pf)OM%yA|4j8%Z7WJdp0gxW zfHrPP{vOZv_}}xEr4)zyzbl&I^u0NRnXfth@x5!jW;$9g!y9WasbnD9i{^S{WkGYP z)~)F;Io3|jWAeC6)?WYK!E<1;DtE;d?B_Ku$19ryjqsv zzXU3h{Oea|Ajy64`B!J&#s9E*Cxb0XAJn_Jw>UFAwzv^Pti}XV))j`=DqgA&Ic&ZF zLrCjeBVJA$V`D$@*jSU^hKwnCInGANb2Qu$6&5V^4z7!u(XilB49UPe#^;U9qRtO8pF**J#rT<& zF^DnkUH7Z*ti24r6FrVy+5EbzG-Dix>wFde^U73IsrjGhSm_Klv=4XJiZpRFbmdg0 z>fhgoD}Yk}guh_TlD(|Qio&qyQ2RIvtS6rXDtPe(^#}m?jfV>Pb{W~;X%Bv* zrx!1FKA55???o{Lq@(#tD}qMLuZ?_MXYUHmUaNLp-x>5v#8zn?cm(}^5bJkq z9l?+5=22dI7wdozrPN)of>mRt~2k;#8f;MERg{wIZ1*4U7mL8gmnBMHnNeZF< z*8hnn6ERPt@g7TSWSLqOk-Nn^G_XQ{xIGq@SkX0>R41vp&+loGdI~Q`r8(e648dYH z6CLVzbiIG2Y^RLOc!`C_FwU-Yb#1?^B(I&4ij63ip}*qT#d0E&l4hn%BrES3^GlOw zXJ=@8Jp20VuL+bjNm;^IZ6XAp`oq(wQ}X|wzxIXn6J2^%B4QQx2o}U8EKkV)y88Z2 zU3O6a)k|38=c+wor*lePIN^7$t&f(=U|on@l!VUbxC2dXMa>xu;0RwVO)+n^$1)zk zzXfv&+Jz0~4Tf35ckE39LpUKBzhz`Dp^Udbm&Bk57fdRVKcTtm6@IARU6Of0hz{$F zjHnOW^bqO8Y)UZbnjj{S9C<tNp9I@0<0m5DngSRi^U5y*haZqr@r{}0kcL->~mvpLE@j2_C=)@1Y;=z zB6;puX>?r{2*p;4h5i|9Iz>{w*vd*%Cy}L!xZEB^Bvm`sI=n~mV0|4|x$})7^9k68 z5N0KrPJpMTj*AmWwB$+X{MwF6AgU>vonROHBsTD_ZjzPN8oLW&U~05XO2T1%ROo%uRxfFPwfnogU-W*pWCHMPpF4iN+CrP1h3ZV<@>B zD(?tL;4PQ>;*O+B2#vrxblWbqh6Yv|>Z>!P$Ei=#kjfrAmFQSS;r>b5K%{fzL*0u=}c4} zMAOxK%q;?CmYb6FAexTU9gwUCk@ZR8ElGP2U5`{AThEXT5YxAYwNt6mkn6qOni{;5 z8)`2posP8Il9U3b6a`T{8k8R+ZtGgP1BM+k3pbyR-1z%cQ8EV5^UI5Y)&%Fx z9(#iG#3yS}xIl}7Tb%YqJ**#xh(FO9{qD-sR@c5&S7q&?ioQ171uca(E7zBA4d5J2 z(ZqNFqj^Au4Cn^}(%Wsj$T-}7jcu``9^Asi$-?p9ZqIQPTQT9S=P)-=p4$z;h^bg-PI+P7+DF12`hU+}VIh@i-d zl_X+5v5nI-RrkMR5uH6Tk zmf=-Fm5gbpav zno;h^K_o+#7+9-86vLJn*Sa!@w8s(??bF<*8Rg>~Y?1O?Vn`ApU%TzMWr=ab8*^(m ztTMw59c~tmG0oKZ(GjtS?WUbM)+i&21_| zi-Da~LV9fja4lNECatY!_=&;s4H@80SF4Gd`F3xCxfYWxGRuJ4xu#jzC@nA7Q9T)7 zaSgDf*eR0({S1$hz%*G`Cz{xF#a5!&oLGYDj{`5Zx;L8I6OhM~swh}qW}6QzncMk` ztt9KV=7L)ES+tN@8EmlpIJaow@}xG$s9#xrNA76hjj``)I}6t-zvEJPGk&@n%{Si< zIvND?Aa`Qy&9`?LWNRU>w1|LqcTtt=s?>MY;HA{8&R`_j(|Ka`rNJbXe)ZHJYP#Ll zv@BVXKO_J5@wh)7{FnKke|hrc@#DXK_xjJ* zmoNXupZwQf^J;aA|My>y|H@weEt1HSCx7}M13TK#3wT~mL@~i7eMZV6It~S!neP40 zb$#{M5L&|&1OiHeV)q~D;O?gW1uLiY_3u~F{)W3-J{A|s0OA;$JJ80gtFCpMm-Qc0 zTKa1X>aKolmgQd~Rt;e`BB_pnYM*eR+LbOh=&TmRpAG42M3frFpG6XljZy;_cl6dD zqtwD}j8Yq;)W#^aAvDJ*wJ}OB<9FC&=2aJfH&0n= z{}8#wG&d>LXs6_y6fEIuuI>+j1cKjj*O>~Cu}W+ySvJ>I@^ZJVbFCC><#3NKqc|i? zRW?&XyI{X)e{?Lv$MIh~y=g=Z!4%se4C^RebBz!75PXWgU-JSs`xQ$>p6+6}+M-d5 zOyCZSHnF4?l7Z}An(>sE8ygX(%eqrMU&9vWT-Iw&=z3iUnk<=gdLFLyS2qnaViSM4xtb#{eK?DM%I{H=u5(x!bG8CqDm@EJanw>5E}LrBaZm@Ftp+jDB5`j8R#V zr)Olv^Gb;>Q3M^8<*P3T9K(2JC0h34jzJYQgKyj7Kze4W|Z@ebmxA*OFh*E>QT(>q1 zLS4jbT2MRviCC?ue1c9GLX*HPr12}&y;#t!o&_iNW#7$NvYh5#-)R%+93Cg)J~y>u zu-5XFze`w*EUIYkJBT|kyx!I@%yK%X0{FZ2`vL|y%@kYl>thBzsEz$o0VEIy*W&aPu%ms)XmD=WR8iiGFlri#0lM*;m) zm(F^FCMlR?#>5IBpI&u06N9gkwB5P&Svga%Al!pFz$q_IABOhsRXDWF&_4q6`b3<6 zvG_O1=6G9)z#n?Es{4`=Xhn@w4rN6R6i4CJ2}M1;H8NbMYl^rUfIpg>BTS1`C~%!ZPn^?e z;=5dn2ZO;$`l$2)=QPXL1u*Ca`CP~0c^N}Zk2~vj2G`#{-D8JIw zR}c6f2XjJR9%d=E!Kn$1`}O&Z`|gH?Xiacm;W;&w}aQ@D@`hpKTwUouRtQ zmvL#vtB`kDd|5Dx$5CGRD96ph{h8Y75OB@s)98^(9=00#%#~M7RQ@dstRoi&9nl zDFV?a{m~;Eeby2*d3H`-lI_ISOglZfalwtTp%QTRx>#+we9wqi1ME$dU{Qp=9-7&< zW8S&3D{5bSlwI|Gv$I7;!}j#GslDHA zDp7f(|J!$adl;@!Vll&j6;RCCP6hp1Mx0JnDsH-HmqgdoD zZMZYKs-okKS-jxJ`?BXy*tUr+Ir~s z8ac*^pAxZ|ZiP2R{5|__*Oe=1nu(@=D%>-85zfU>IfF_8R_*%Hu z6u>&Wv9^F}+$7F1WVpc36mCOoiuWQs)TDxTU$b#YCur|FewJ(dpJm2n(f;SZbhJf#Z08$hBe++@18;`F)?)*u>0w(m*Mk!Bw>SyOK3(E?Hi05bP z49lHPw@LGne{xdxa0du$DwLVBOORo$xsH_|r}*A~r~dX*zBLCM$1iBmdws)*Wm4ZB zgLp^;>cl;QC=6ICl^NhLcYYWwyM%PEngDhgKv-@;-ov3V)!~0KmdXuN4hqNmkN6JQ zbfmLyyfXLX$n+c<2}cj2XkZ=24NfK#%%b3qLoLBV<>1*3Pjrvyd7=W#WhcW5vIHZe zM+vs^9As=NaM4r*lcxn^pY!36cR3V(+3k!nYV$t;=S;6Nn7ptKrDrJa!#E8-gj>9%cQBAK0--n+Ljo=aD2D!dV4il zO^hn|$S1Fj&Xg=3NYA~gSEIsbrZ2WCcfK2pvQ{Z%iIA*m94RiW{Gc4h1x$8j=%W&! ztAVh~^6vzW082A1k#G2Sia&^;Nl;624IJ3$FR4)@Lgfn0I&pO!q_S7X$^tU1X!za^ zFBG|524!?cZ~_o9waJ@r5>q02DHX!*z*@V4i)bVBX&IG0e6H~mMU)7IBpL4({)k~2 zOXo6*tS_+XWwUDzJpK00Wf6X{zLPfGJw{fI%WuhvQF%wQw3*y!RCb8%KN1!jv6>?p z)5i#`r<=rg-qDANtaXY|KqB6&p8Q*(RLnI2)R)a?X)7jjemzg-!i+AKUyFj{vSap< z+j1sSD4s~-+3Pk|*q|OSLSDUhu@JZ7G^mm91QOpqRaIv=Ihjje-h&V;G75o|%1+PsqP36?ggcfQ-qzGW3U|W)u;vB7gCuGK-UNXxxP9Mm-xe4D zeH08loU5o%0McBmIjTMc6P{z4gUK>;;)vv&i@kbAG_ail5=bY}ze-TWq2r9iol2G{ zX)MkS)NTg-QF&klRz#3h^Wv*hO5FKNup=CzWc)iST9d0bmW$aQ9@;cAXK-8HWP@@i z4s^Z#Rvtc3YSAVbh%1(-UO^~ z_Pb=bKcV%nzTEbeq><8~On;NqWgA(Q*IVDYGG1~-1hRm@ze5(Pim;d3c%?$F*Pr8%w?&!x0-$Q4~qw|mPfQr4?Se{7$@ zue1z4RhBpOD!+QqpZu!UaI02Dhw!_!d5_8;f#ofTj%lvyaJ=REm@&5C0Lg}ytA#U% zC*2tNw1Zl-1E^lr=ydT&DKFB)BZ>wAe-T6V%a}W2zl++vogN<|Vi{N4rIfkw*?_X} zU4gQ%nSnaeWZhkPHi%v{4~z)w&>{)Ph(>^&NU2)ZV!Zm*eq4C3P-y!1pv-Jv3|8G& zOsMQf2)xbYYB^>{e^*qWAoJ&znE?Cs?WSW`I}Xw^(*ytb=SP*3n_GPbkKX{E@OPn9 z58b~E>DH&ZMSg|5eAFHz)D;*lu5nJbA2zDD`0EW$V@mpz=`gB9VR7mFd__~%uhKf-WSBI%z} zuk>k}%0Jyg@H%V$h2-XC#Qtb=e*`>&rEaZO9eHBrQ9gC2GA|?-1|Hf18MBUhY$O!bTiXI zo;RH#JO-Cpru(K^!c0;K_dRQLLoq1@5c64JN}_-Bm^n2QEK8)pyf%%g>QTDX2E>M@ z$%XlC(ED28rP?%qritbF*|)oooKfOBEKZls#9mj)kxDgt3@X(-pqz#k6PVugsRJmv zoieckz9bmWRlCh|TzXw0+A3hzzAm4*li0)xGsnA-AVl<2wzJi${A%;TA3v8YF15IR zUO7b#1@l2(MLz6OMogT7_A*XzLS+k^<}~&TU+ip63!fv$2Sw*pUX*k|F(&m^BlFWT zBNctqTatDVQWo&H%iU7V$3qft+tTU+JMp2=IEftIh|oEIlC+vwZ0T0P>F5OztZa0w zj_G3+dP^cVz-)Hq(EYx5-s{i*T%S%V?Y}i;uD;F}4qq*H&}7K_J)TXcaIAv~AUsBQ z-jHuv-Oo=A+ro2x7w~L5FbYGmJj)b%d|he0X{l{y(#Bdp^eIWG1B zN9Du!@Iv^YD?L{5)%HFJT$B;OX*4Luj(i_#dw~nMI{%+0eJ39$N?hxeO-+lsO6P{J zXo$8)gV|5ZVQVwq*^IZEy_U^OD9MTZt!7ysSMW8iFW=S6E4syrv76wUu7wewujl;f zp(isICo!odToa2|X3(M!*>4Sp;S@n6Un0!I8JNm6BKuWMTa85;;x4C&a zf7I}<9K4 zSz=}{tyaHI_f;`7SZ%QWA1dF5=i8O#+e5@DW`}+-LuJUaD;oK3oHGiNi)tpQPl0Rw z*<>E#;v43vH{@ul_Ix}IP&fX!4?jl{)|bD71LfSZD5|&O+=)viZ^zzRSlv{azj2iJ zK3EM3SdQD$wx*eq>Yb;YQG>0HyC9;+xf zWn;MRDSPWC&&jb#6?1i%JrypMo|g!;goLh6%c!PvRUcz z5gA;?R7u>$+@?(-nn29+_IYG1)=-*NtKP2ba=GlP)9$(0%fIL%T2a^Ogvy-gtuN?u zP-Fj%3vSfrRi;j}L~FTXos$C1)Gud(uAQCFO5NXLdkmR{qamfOj@CBfa{NPwX#jB# z$BTIr3So?QVQ;0dz;S~>-H-YHd&QIOef#)e*_PRI)oga$83c@#A82S4mWwJrz-z~g zpl75!*rrxfH?6IT4nhwen$AjObT_nu(KadM{hcvvdLNO}DbL|)3RmsNIHhW=FDCI9 zS{W_l^zSE;ai~EkFez)W?J}R%FxBtIj-J1C4!)Q+v_j^_KrW&Xi^3=ztVh^q zS7W;6s9e35ca;>ONtGNFcdd-@{z`5OJvK-D8>$6~UEa=DdMDwd_9~89ahNpL(lh(# zdo2ZK+=1V&E=>7@?fF%s4dr=5L-$~y80aps==aWboIT&Q)R$NJQx0a+*-ZxKV{nj$ zphEEcV#}kG^WciD#D*9iztd@p4vw~I5_z-we7EjSA=aaHM%JV+$ZNO4q$RC zy+*^sB%#}kN%pC<(*jhmHJAbjDd#R}cNFPU$T}!8b2>Ddz-6CMHNx~6Nq_J_Q(7_F z8;3Nj$8=XtjMe1L$O)UHXUzPZ^J+yG=hRB~q6Y370I;G#wqvAhM1t*C-^Keq1ZLy! zBAr@KIa(JyAMk3D6R6?vov3O=0agWmF=d-F>@?;IIvckuXr3DhItA(+p<2ncJ$O>P+&JlX~ z?6KTqQba@ka(hbXub7vT!2I+fPFCh{#H=}o=W4hWJwumC3?7q zCkbC?!8NJYSk;`#wxCS)f4LU)@8^l?=JBXmt%@faPAp4n{|tKHqo-Ru(E~rs5+^4ZV z?p}2=C*EnJY|YOaCbJ$TVi$vtJ)x?ac!AOK8o$ptEx*33xvoYfZ+hReYCCssyXTBo z#aBRHuAy}Us&OK>G5m?UXRQuciMvm+X33{*`uvF@OP2SN4!;(jnt)clr^hqiz($PC zx#UR;iC`v5(MY0LpVt^dwe#2wN^5EDif#W|0WWy>(1a+^iKP_}6djz1D@Q-RdLWkt z?tQoELeZ$bNoH1Qr&;YIPaBPzwk0!R?{pyaIYBsVP*?*lqCZkvE_&H57d+u;gS`l< z+-vrhcf%DwHJSVa;E%IlbuYg6K)Y<9%%`wfi{KFlaR2q`PJ-^d9OsZepZDOdIc$GH zPG4l0kWy_ax9-*1ZQ$l9(`$k)D8z|h4ly(m!jOc(zis)^!*fO)A83p*CY41wDUtq& zj-|7WWo9}HwNA{GPVAnsBh>vQ$dYo$NU3C)47;%a|HP8qQ57Cl=_dU=`D;TYXB4x_ zQsur=3_YjfrQ&Pnw@bgZeuN`lo?QB)f=OZT&D4iM`rL8t)sM=!vWr0Me9sk7sps1P z7#LwpwX!|v*V_qwvfBm%v_iDdp;=+rsrA@487?-E1Ha8Xh>`vFdd+9Pjy>S=Y6!zd z7_#a(P_drT42jD`KG|J+3AOK06G*ix4bW>Im!hE3s#NHAREa|)cO}KmN_SgU-y36{ z08^c*FoHc>kJ}tlUG}-zWD6~WxR}r`MeRwS0S$h7(N?v=drqOs@(P-U`ofH#aoTOh zY@ZAmG!n`O(<9$ro=-Y4_}`C~cQ!un$>izeK6T$-*B>rtAJ22I*NOMrbDvr~uk#7t zyIQa|@vUhM%`7_<&g)j4%|^&o0V(b#RV54$rSp#*>#94Nq3f}RLq{X}=#uW0u)rkM zN6vFvOF_DhddH3l^QbbSy;m^scHq5v3m7A0YNvujW61oB$|XM75RI6yXCPF&V84Uo zzmHH?vT>6o8Eb)QQ{RdeVA*+@Er8Ye&%eEkRgO$PTDQj$OK)SGEohjzS*OP@xiG`)O^o!#v)= z>CsSM=I$({taQ+|-mlN$#&4k80ORlOS3jV|OV!SwAYdtzS&a<2?q-TAM3sp>$&vMv zVrxtb6ZvNRSK5!z-?tz!9gw_r1@^7Kz4s>rKZ3>%&vz7T?VIWc)?@q{ZaH2sWFs(0 zVk0mpXChMEbI<|bsqENQcV_JEX>Skz0q5^f^>se+K7AI@27SAl%w7 zh4J&fzyCC0U?5rQ(IZ*fBEzN(G{esA!G5G-;cCfdNe~5Pj4jzR*jeG zrl^GV=CUmF)VSzN0M|2vfu0l0IDATLiQ!p-Fe+~`g3p%z4E?Q$SfyqvHs9(F@!gtR zwqFo=O=mcql@sO)l~wrA=13mXMwr11OMj~JMqw0`vGVjY+z1nyoJ-nz^iAt7It(~S zaERJ%(hDZ8U}7tti+r8}*m?}9?3V`K43db|YjO49TFqr@-;Dc_Tl26f%+0v44?fOb z2f;>D=CBXLq{C&`gjSSXrt2bQ!*m%Lkc3_&m)=fwP7m;p6TYvHyHCH_(m&RxecrvY z?akC1i0NRHBr9sG$P*{5q?(?`Naz+f+I8#3_%i2*QzT|;#ba<$v8SP&en?y*Ao%QJ z^I{^D-Ke8NR>DvZ4?tGSpW(3bm<%STATCE!tTb?Qw0VSKUE+!3+{Yo=3en@-=ymgS z%r0IPUMe9?nuain^UFroxe8t>L6fkDc&Gk_;Gq1)zfSK$`T|w=gR!AZ_u;(!f-kR@ zCY6LHT1*&MwIt|t@W07^t0A81i4zH-31P|KlGGiIeig=nFHVJ4D%=6u6{S3U)k$j? z#lffCJO|@LC=(krY6}PpCG;bb2maAv%JvvO*NNE$CE!&#&V?9|hEV1-I6xJ~aep?g z%+r!42BRyz6(32-W%B`3EBY0Qux*fw$5@J-S&asc5DeYuUFRFT-2A*tf)Sp*&;905 zC9R)HX-c-6l>1qYykkIBwl)?d!{N3IZdj^UzHaCgQ z)lEyUAGC62&5wXvs4M@a3etWa%qdFn?1fpG3`~S?Yn%B@UhB z*gi@J@TN^Frio(Ydez{avl?a;c;ubmTKDF^ubF3e4bNa$TO zl6D%&&i>J(M9b_j0Bilb`6iEI)UC$MRmI=2?aC(OA=A5$s|lg}EdPnxl*Ie-DmrS6 zarEdNK-!+=_4Tm*W&0p#6&loL4=qQNw4QYFwHgk!@-QI)py#+bDGCjT8F=BHCQ5JN zV;x({|tAR1Zdy!Fa>BiPooHvHKu=x!N?(oed#)eJ$tZb)7t+WtegMm+6S(=?k(9|vZ_4_ zb<$ffR_DQ$4BZ`8agnEK94;aoU5*=n9Z>Lw-C(6G0OhE#;u=Ozq}8wP&--a$1IQEw za}8-h{c7cCkI_BcXoGVtwrp=!;B~*}7%xv!%}TTjoMq2JK~yuBMFeCHI!A^x8cg^k0j)Fmv(BE~m42Tji8NLk-?b*=xhl|z5r+^?qaJ6}OK}DS z(hdX1OX= zyJ6&rKl1-rAV&lXb)o)g$G-)efOT1&H@o!E#u+@0*dZ#F?xG#Lu_F!sIv%4OTeUVK zoBf65WL&MI_4CgY5SqBwoNACa%n42R_;B8u2X>g30xUzvdSVouwOQ*wojU~JpzCPX zmPfu1mo%_-&57#WHFzkTAKJMAuz8mMeA>#5z9`)s+Oci+((j<8Wy^RhM>3R<^j~36 zF$P5kEEx;!(xHZD>mjZk+&roX-&&(w3xBbPyBMNeH?31_xrK1l6+2@Oa{kZlXUJU1 zKSY7E)A%y4zZR|fibrl-aU<|D>f4Sdgi%{dYqwFlUuoF-M+!bO?1V_6(7){ zn6K8qY6AZ9kZYVAeX3-VIHZk++HdQ8S(voixOlzE__=((8PF{ebyf*j@+YRo*r-pl z-gDBBbe2}iqA?{qC_4^&s;xNuDHLT3jA;B5wvEwTKH?-zC5&wToGP$v zEzb|?;tHvblnh=rB?&f=2l1<1{z9vKbVA+n`H~4;a+?4v`T&FRl>p0Tbh!X!t4l$Y z5ZM7c@S7NNI+*LKJK`g-1F7(BdHi`pc4L^md zh9$CxslNmAaCy-pk3#D}d}YBwHtlXiK7n=2mG%xw(C3vI{=+$dN4oqinA72^_(Ngq z1l-wAldkoYAek&>K^Zd7T-bCJ4Y+(e92G`*DSY}>_>oW#@u}2-xpuy*UiRz~UlXzm zG!@UWS&%o&09%?W=mtkVr2 z%)~Lh?^hlH{$m%|n(dh&>6ko+7epzjn*%c!^CAm`$6N>Iw!; zOgwzbxm#okKBurGVBC4NZtT@2|BOOsg0n~sjQu4_Ng2<-Z*H$YU6v`%&aQjTId$e{ z6bpZF3>vg@>q;TZ)8#L#{{t<7)JH$*s9Ym9`Al9o_%P2u2WS_ww+h} zF*W80pYWgzzmxiudyK>U3ObI>EynjLs2#|PV=eNoZF_yt>{&=rEM6h=$tw?;mbE}v*Qwk-Bx`nw1BVPoJ8eEObg^vAt(83}pwA?6PE$s~dALqt z6dhTeZpaR-ieEG-Pdm3P1mH1UPb1aAFB8scA$7-oI4PA0s{?k!1r6$v0H{a>y z<|H*ytOr=Dk8vJR@2^hglfsxj-htn(W3f=5C|N^TVQEqNLFo!Bb)awLm^FPGrAvQ5 z{2O}Ds8W5(5P#Z%$uU-!UKkjn@f)XEN3a>)4EB1gKz~bi)XiGErA!d7AVGJfZxk&1 zQYF4zSai^s=UitKek!_}vFSDc#}6s`c6?PY*v9Sfw;w!>C&9naoZB>eZOxvu9P{)~ zY)<1~n>1Gmk}&GIg2SSAC8sYeBat?PMHM-j<|X|YUpPGPB6K*Vd2ZrQwMA3JExOY{r{ir7WxWN@`lEWyC?HiePo35anewwF z+e`#N?t_!jdwfH?*faemmc2T$h*%ZMtIEZhy#L8ApLEoJ=X+&8N)vaZ3(u--0mBMM zc!xP!h!exxvJrIxd|4OK+keH~r?c39Ib)B#QkA0Ab!{$jJRj|XW_Spgb3I#QPk*{z z@eZ^;i}4YtXhmowJ%f?B1Q90tR|p36$@H3*onlaiGjhn;f>XGemdMhjuLcYvuGN?Btw`*Q3^2UJ1Qg=L zX8t-FoECOAA=DP$HTnGso0raxGqG(c8wfJ|$&QuWT}2qj{(;QA%l(>ldsr? zHCV(`Ff6q~vMv#!+2G~u12;l6&GRla(I!yS+%ia~9}Ib_DBd*!_`NP@lqS2sI;87t zg|Imvp)s`dvx3!T#FfE@?&NNJ2#y6wo`K0G(qcGoYr~0s7gp@0(Fho{{ZA7sIf|(U zNE29K^pp;vbCJJ*GyQ5~%yD}LQaW*$gcM#jTtqJ1|HqmChXcICOL!+EgXjD+BYHwi!f9>{ZgWt`LXS$Hsg**lhC^Bf0&K@xC`N+>DlfDuQ zZk^Y%iMdK1xd|85DlvowF7Fofg33Csv28FR)h#s!l|im^oJwjp`!;XnJc#72{i8sG%pD>j|nt) z2{hLUOtGLB7*}fJ{X#a8)AJG4`U&#H|4MrK)4P^7ll2NH5{Fg_Aj%n2se0%Rmw~!t zx`)u$Z1te+IMMC?Q?K^)>aQhq|C46!{u=5Pn z@1c7Skz_V(Y1>jMP*iI$h;t)`&SkC@idlh|)LZIYUjSyiI=UD-cfoUYVl)$ugZ zoTJqG!9{P@_E6hv`LcUi4w=q34AkFL$Y+^bHIIF$&4Td0Ii6P{x9RR|QL^?m7?J5U zfix1qsYe^E$Gk`2>JP;APCy}SY!{qs&m-KNV1@vcfXr@VhsYiPKp?hl3nmC3+}#hH zwfk6MlN(`c-`NX{g~bQyzafmd`WjK=+%b-d+)>c|#Yt%NiPpmBOAQUp!`3C;3#P-y zXStEo;XiC284-cmCo&*7)Y2k6&Fj~~rXTP^XZH79k_iD~-_CRX<4ej)n|~fxF;Ans z`$sv`DWRnE7?Fm2Q~@!mgzp)a+w>HiXR=y<&brQIWjriPg4qNYoaO zYa^?-xTY)@{o4M{4Gn|g?CK5q>3CEx$KUFbzvne6WMSw{@M7^9RBIP$+hZ3-<06*f z4micEq|2G0*y!}(H=emQVHDsFj+n{}+||ytof8%=imSO@q`j9RNKp()DJ`ri21kms zRW1??5r`Wo>OCW1;knL9t#uP~*UjRGV$l*48gPosep0Jin>c z^N8-PbP6D`asE-9q3?Z?U7>hZU*p;SvSVk%EbUiB*rnyAa}QtL6tcC$ z*j*_E)yoCc-=}^70m-~d>D*5C@GHrs?=>>}m+u#oGI$Xnj1QOTMN;7D-j{jLZJBDV zqycusy)`E*(Vu)5ACiTvpg-C+Oo{on56Lfc+ziI9)O($AuEpLDjj5|Co!&+R?}h~I zwU%XgaPXFanyf++0%@$VG?%m)1H=LJEfWJ#eZSX$*_>fgI?#L za;(G1yc#Q#ThTiZN5a3n!%cyx>)7HpIF(L`~N%!{)_THmg$$hPak z-`@*)2CeGfn(ZMzOTT=UsviZ~EOPC|X~heRfD~iE&t!lUBEJI``;@}Bw41N-#@=YZ zgeIb6oK(FHpM8+(vk5WTHm(s6TQ_W2V6HxK_j^7?3ThDy_Io=?I1L7U23u_B^(FdW z_6N=fL&MRl@qK(-?B?O|d9Bx??GFC7ty9Xi4*|NXW##lTt;xy zFFFt5+FgGX$b!6jBlO{N|IFZ}?ewNa%+}_`2vx9=i^Q^}ufVZ^!PNSnCkRqK)KfD#SHhT&W0WAUX}^o+mVVuTLrPZExN?O$3Ku*qxhLpctja- zL~PV0xjM~uTioY6ZXb)d1v5I$YHyz=bA>FELSNpeZU={VA%>NUC1AsbV_IjQA^n+Y z+=&A0-ij`9s_}8`B)PtC?1ToMUEr-`GkkDV;^uMpKKtj5mkD^Tctx2q&~?@Sb#+N( z@x_wZF+kc&Mvc3rp@=|O5i zFse8T`_!VfN}x1(OQ~iETDM$P;Of7W^v?>w%yUy&YSx@vSk#Yi^eqa6;1EAR0?Z4A z;ueFtgBK+0xv?0+cCpNh;HnDIn5UxCOt#X@>zOue;eg>c>c1%3x=%QbmT zy52Va-)bJ~nR290Yr$^p*=u28`n>JSaPQ%8jD_}NAjAW4R0<6K3RGyaQXm;RE;e>a zxoyn%KQXA1Z?; zW&tT}{Ksf#2xRL>Ro7TV4N3sFUUZ6i@6Een!))Nu>fs}y=TT_h)P>Y|E~^`#sSRFT z8KBKK@;gIZ&Sbg0pwr;|qyGt38c6S2?plL>;Q^B}0vcTL#~W!Bv3C z0eg;frxAwG4ZodQ=#zJYKB>~5XpReCkw`al*C*g2X+umZGMFTp#kdqDE(tZ@fyv_Q zsUn%~nZ(RV*P=;P^>^y20b(ztgvwec>0aVNZ^h)E#n+!zW&r@wY1wQPEw83-BG6Hi z;{%MmxS7_Fj9tzEnAXyNTt@WE5|(1M#b7G;6x)D{|Y*@0z9SJUHErSCc-?+B2KROl`FE zF{}IXtXD&5;QrIfJ#54->OklF;pIEEEcwSx1cKdr{Ga0pV-gmaiZKy7ZZP0VqYBzZ30iDp42x<}RYNf4UbTiS{Z8|=EC zLX@_xiE0XnXYpjX@O{2*XJ@QR@3Q$&%=7Y!a&k!`JO&u3`7u3$dHlx@&iiAp?A8Gr z&^Zdg`L+JEOH8R@q7Ujvk)+)G=ji4=7-LycL-F`Q%>}vi!OXZ655b%zg*cqWG37Gp zhTANFmL+WlFr28iB9Yp`u7r)`=>>iEmLw zG?DW`^2Q=$sd1;U_4s$Kx)M7bYq71-t(sCee^$|t)VDaEj;uj6sl!lA4fWz*)$6ae zECbQWKcAVa?sqK$JX`T)yJI&MzHLlQh`tH!nlcTubK6}VZB;Iv>XA!ox<4Zuy25*IBCnHaP#LF!IM9W)|y)XVGBq(_CMv*uC9vlLb{*PKVd zWEpA5&Gq+_dJ;9(5Ns$pggs9*s*Rx_D{s@+&4-d6q9gh~w$iIXid${+Bx|SCLmZDL zXy#h?KS~LuO|zt9QCW_EdaD#9kdB2^pf#!FN^ToQ@8T;0akb`&8dMciMmeq}GnMaM zH6^%*hdc+N$9rC5YMHYu<>`n3&R8MwT?nbOgT-h zQlUU%wC)vo@%r7!1USu!@X8gsovgW^37>s-j!ys*i2jZJP)+85WD<%B`cWuKJv(gB zzYy0iwzJk>Di)nlzpNl8k7>Bu3A_&PB{G&~(Imw3p`V$53HjIX?vDbx82rhbky4e+ zl*13^DcV@Xt7uNwFB=k@aKlVaphlte+T-K{-Q>45E{qNEu%^_w;DK6qNDhxrjn=4P zUX;|ld{Mm_Em^9l^)Z)$j5BuXv@e?zQN zW%kr+*{{D37cUQ~9lJtajOfMzV)H1#$q61-E|@`Y0u9=NyF<5CpD2?|chWc`%gd$$ z?!YHZ?c1gIs-wWgi@A;PII+#flnWY=eILkbLW~M!$+woA?9nsflcJaKx_w)EzqB_p zghGs8SwP80x=fVp8LTv^^3Y_#VHlKpqM5gCB)$bnAtWe~{yT3#N|^9TQ%mRKQ(Y7e zg0A3zG3&OjeFQTVHF7K7ypzIo%y1qJu=va)b=|@e^5bt;@8J_}+sja7-KhCbHQ)D; z9`eMV7IGT7R(<|Aco(;ZRx*Vk(&|Yb(@mBWp0z(UN1p@Q zPRJ+g;_wL#XHGFSJ)Jkg>eUvY8e!u4`%bCi?9Ri@rjqcBmIETdet5~cZ35R}piuO% z)(hzZ+zgD5Mkp~C$8z;{h9pF@;G&~h0(aB@j8?KQB8%tMLi7hArZros?g|D~sCfYE zanxEx(4n^1^YMPoB2C1H)91886a&zp?}zv%obZ-dQ#Gwh{4Q2V4vcR&kmsbhDUJWh7+3lC^4rRG-m>}ZwoZnkcyS4 z`(0OYydfZO5?>}mCH(8Vo&rO2Q&5@evDIS;eOx{Zk;h13LCLHRR+8M=XiybOKHcbH zD%#;T2M?P#E~J9xI75|oW=kRy=4jl~z=*-io`2y{Ezw+QA=CuBkPlT6yY`1#a|CxT z;>7Oh1i-}HBvDfMiLix<2vaEH&$*4$Yj7y6N~mm}fkCtL)x&*1^3t>p--T&OBaD*j zP)~BCmqkrx){F3{EBqa6gf^sX=gc)6{G$&JX-%S~13NUV@*kVA;PEdbZn#Fw&5e3D zR%+lajQ8d`;~?=6J1d$}Y}^x@XRpv)JaO=W5RJm*$L^K{(XR#U2%2+3zqRadCgOjT zg=#2~Gj!9@Q$Hmy$XTEo~;td=tJUt|=3(5`Bl=3QtrIG=#~a&c56won|~ zIkxad6v=AO;U=gH`g&}pFU{`&^mXUp%Pho>m0;joeeBQ=F>wDoeG9_SiROf={C8ldN{ zRrA}E?6xAwwEET`bsn+r7AT&E`oJ~AU^D-P3T_=f#0v5b(4_idUcwUKj{wpO1}!t@FZf(jp&U4tQO^IADV8z5d|0M2KEr>0eKEt4_CUK@@31} zOY#QBrb-iVPWN?j>mw@Xyna}D z!(xoOvs|+dO-iKJCz=vm=BSItkUG4WAJm5svQQRw>p`j=`n=4xOaPH>LgK;eD#CPz zr&0jAzjHC&VXZtrF>*!zd-iM9>20WWui?=C}SFV8F*N%Vr0>J<`i07ErnxMq`56DF%?rcUczrgc22(y5Ybi? zsv?EPB_c2C?1usW7DpnBfhQrm{>rG_H>e>4A~fnmB-2oQ}AX0{;5MqO3XSRYgt zTASBR?p$Hegv)?jo>;W$z!GiHJ6mJXh1*CjW2V-|*N+Qcs}c1GYbX`O{i2Cj>gip6 zqN`T22qCVqnl@8y0++uy(TQ<7m(^NCtFrKsR8=`=MOYNh_9Jm&K#J3v5Hx)D;@;2{ z1W%6~A*e^fwB{h{pA<0+i3=b=Q88O*LYH-WxoqiAvzD-4(fh}t>{!_{<@0A31b)V6 zc>C%fx;)gI>6()nhDYRmt7%=C$PXKrePudyCm%v?Ua0igMB_8$5b<6ZE4fT17fzFW z@PC*;25NWH;29dRmCSkl@;M(ITesFCx}l$SCI>Zt*l$l44jb|SnYa}w)23+1^;w&V z(GWlH4eSvY*{YArven*sW}6jU7b)8S_Ne46G#W1nJ#1TC!mv8$Hyptdn|cM}!fsX| zm}x+BzHh*FS67&Ht(ik^Ld|a_5gFq5ptkrUGLIE*7~B7H`y-e~wqVUuJ94yKNEFd> zTS)A;T1d=|YP&0;iutdkvz(3PS8<(A87_* zeUDcIhRsH#DmiihB5{t5yTT9ti^;g1oYJh;>y$+hveA{{okE+{tRjf`wx4i@u>u(0 zrS$^c5%V(Ye^EI~B$9p7YB}JkNn@l${pc2Qt=o#k0{FD=!V2XfuquSGnn$tNK%;Je zu|tdn%Fi~DhF!0dD@-GkB?1h9sTP@q~tO-dJ~6<(S~>1qh22tNrs?OBlHV6A5lv)g7n_aHI0PE2;NZB z>TS>iB-2@jNmywFVDHzqnKCxAFDRL`WG6pbZf}`(wHpZk9%L|ig7%@#ehGr7`8^y) zx1JZ4?3}z}|C^H56-q;nh+p!><#_5nKiNFc7bw9{C~yuxvV#=EH7km_5Fz}-Gqhy7 z7bzPb<@!K2s~lLn+%?hbS#!smZXpG>Bj2KWIR*vnO`*BdQxu-oOZ?MgQ7hIv!SgPV%uNjAOzyy{!`)%yG^-v}{G#3PBbmxCc#nGYT|G=#s@ z6(8z7G>FHt4;^3_U>CC973VswrZTb1a~qgXX1rDs2KKWDt(SyFrLFu|R7J3vYnA`^ z?!zNxiJ|PxHddJ%K3EC|F$D#45a1+KB~&V@6=#)I(nv6Ay-0;pi$>C}A*gYX$mCl) z$Z!OVWQl;>$wF^WGj%M*@wwGi!t4lu2pbZqXth4NAqmV|T#G&mB}PUnZ9)zDxz*;M z`T=}2jDL89B&VpO!Y?*m?Ym82kWJj}fZr?gF7D*6;!8i`mT7PTuqWC7#n?MVSJp&r zqp_0?J9c(#v(s_1W81dfv2EM7jgDDYEozW4u+#<@8+d!lC5x>%#e+H=-3pL$2! zhh|UCLld46YSh=q10y-kE4$1>5oQD-S!uB#jo14EMv42A#_u2r0luw5NHbxv8EauN ztXY)3u*hSWPn76m7*g*3&}d|<|HO`y-G8G7YZQLbj3ltp|1(=p3D^0bysAyJyeh%} zCB?`cHMC=xS`C=zzUsCaP@9c!UvD`8|Sp+C=q z(C!iE+9;uWVLd2GX7sRRYFo|-)-heE+CAzhpP%2IXxad@WKlX1S{?i#Zj#iW`0%g=dxE?Ex_T5^z9)|Z9iMmzOf39O& z(&GO;B|X)=fSldJ;D7%d+7^)ibo;X~(ERVs{eme)LLZW6=&|m z+7II~T)#^cw_LhbF(vk;(cfu&b>^_W3Sz@{?tKS(y6kMZRy+nx%4S{`kW(C$TweMU z$)-G>N#gtZ3m6wTC#b;x7ah}d=VKcguY zQ8NjdD>HiyrI#`zi9VpahVGOiy^Qh?w|=wuP-+I*l3`8VCtSt_s|f$EfX9$Jwx!$S z4X92DUV z?LB|SSzK87PTxgWToTY}jonAfWZi6~KWJvOdsXa1-MX-xuuoh)&Hbk!GpHPgY0;z{p^De#Bt_7rBUAcx7e9 z2j}^%2`}&ur7PuM@EBcHM~aguL9>($|-L9Ys+kPQqKyI+fl-an?X$j>6 zj~PJR9T{*D%(V;f0mWA8Wc)pANiA7wgqAItEU9zL1Eu;uhwuwo*Ow#VCc-LbO_Yhf z(86AS{%OnT)N)nT-=^h5EDv`STxyb9n1HPhZ|O3ro^l-OI|C+O@~Mvlw92D8y3Y(Q z^4wd`T%?OSF@ug~*xMeX+;@xhvCXzSU&#^CbyUlf$(Nl69~+i$qN8x;+=frtx9Xy5 zczf|RB~+eWO(SAbF_8wu5ZdBmBL5g2kmgVm!j9TCEufJOetc4BP%hm}AdU#KICvuv z>;vl)C)5O+s7hrIpx%CrjXHIiG{y!Vk&R-}kpnz+WkvxinWbdYnAUAJuWtnHMBp{> zP%b)~l8ly<3rw0}JWhIY%r#@>ay`b8z$Mai$VWR#qsX-0V7P_GAS!xzQT|#CoP9$= z$9iUm&ag57&J(gtTDDEG&{1PZb(;BC`(-1NB(bMM0&c=r79V%6^$aUrYT~J2qLv^X zTq^|zTkDgDb5Mlj+pSjaP38nU%tG)+BxP3A!J@@di@zUnQrbBSk8RZ1>mtUi=#hdi zY_m|=+M0r!Jbr$Aw;|38&t8RJ06r45GFw%?CetIH>H=WGPZ{s^Q?H{eW*%_{Q z>S2YAg;ghrFOp_;dd5Ux48LyasrRZCt?K<1R>W9)C9!|HHFMv`!SWeF_fhy8sj-s$ zHQ|;KCSfvA=xUNz2*-+!D>5hopwcnL9nX~6jVL)C4_EsUmeM1{DXgEWV8Xw+r4D?y zW2{Q|kdUswl$i2puBi{WdEfC;`2P`vcGIOdZ(}9aS!1%@Xp@2PJ5<#HwWjtK`$sAFx@H^M@She9_HV>R)bDoxh>Hmf zKr@CfGFJF=oUz(bviV+8nbMg+sq~=DNJ6=`LbLl5C-=hzZWn7GgD39hQ|2sZ% zm8-?7VO!X6YFdnGy2Z*7qjeIDLw&imU(mkxs(^*tLY#2bi=De5fb>N;YgU-YXKNs& z>758g9O6Tav1>`dm6PBQ-}cK$CYM2z|1BOEj?DnCVb$Hm4Q+bGmfX|hvDuf8gXXtW zE;1-Hf^jI+`IC!5#9okIr2Gq4ftDVg$?zjW3_i6DTUJp-J{2vew%xVY4}jv<1i~Y# zw0ijtc$m3a)A>F8z*iukZ(cDy9AC>Tf}n+4xv;o=(JF<{>MPfJ;HGv8^W74i;}q7D zSZOwdMo(>i<&}>1V4Dy@x;Dfton>~LWyWy4x!qnE^FMuHqH1X5<5X=10M0zyg+Qq{ zjxp&Yv5~qp+~ETPh1Vs>+!uqy?=JQOmvR{eV(BTu@3xvxpU16WE*o4)^bZSh!QtR0M;!qLmelPV{Ocx?v6@3JILo&%MO z0gKz6vzdNccZCNrj_4Ot$< zFT@|O*JnM1-b)QESqs(8I>DvV*2}A<2m7B{Y@ig~oyN56HBrAB!z66bX(|mR9GpXl zl8w&35B&I!fLNS;qhm~hWo^ag^Y!}*24#UEk_J;h$52bDoEIil@}t7u}IxBL+jquNGWvjwGKUBis_OV)sb1r zkx>7E(Vx+!`jEj69?$H&hP3s{0aEOV*vYOZmqmf~Mz9U*Y7=RaA>C_p6D zJpemQ&O*W{N6svreSmY_;e2d!dXx<&Q4Lh45St1cnrV<;dcJ2~4m`T8VrhoKDb0Er zir!!;2Y^>RZI0(ZRi9zORJASym=g?f#$SM+^mLnb^<_O2U!SP&F^n|ctxGf9m%5c z^Jz(cTjb=}QN&qyAlF`!aHM3q(;(ra&TbT{aj`h;f*a%U#tzJc*yI(`SvsllVijxY z$!`SRJ|46_p>$UIlrHW^(QK!-N+)b&$8DH|e>lPd(kl1}(>L+wo)*Vl9#0xs+#8;) zNJ=XcRHQ3~Ecf8_RBDbET&lU#NZy>?&;QP!Hzjsz z4H!F%C8tGu=M9^S=K@ZlVsgKuopjPwoIpFJwI1}0#p^}Fy(9L z3*r+wg*@pKvAN|96Bf8yb#m=YvD*NE#46@tb^(C;9`j`4GtzRG{9FLE$Z5SsL0HL@Hs2iT5$mpdv^w|Tp^KCyE6-~}*)`+fgJz=ijZ&p} z@C!J5!dQ?`v=R>%+6nt*^{fHT|dk=jZ)7 zwK$@O0CcG^0^9L$p$;`lF;v&@xBq2EcvGW@AikQe3jy}Z1Q?F3shJ{i?rnpG08sJ) zI-y_gO8&L$lyEmo$0<|FWluV0XCC-f2eY2%4PLxI*8P_7WLGYJv}*SzILoX+k-8(a z{l3r%!bCml!!o;ao&35%8{+z6$M;FJDCFO+Ic zzcq;UP}}BUs1aL~sMCGJbPLjBS0gWhpF)4-n=MHfgM01t=4yfKv&zkcxW!??DLPRR z8EffUGs}38b2LCc=|BvRbV?d@eDk2-9Qi*37&tiR*ln!KpufnT;Sk|^1p~qvhcWaB zl%!vntQSB%gXi-;f{{;HtsG0>vb!6X#<4o5!Ullbsbvw2=3i)9+-OePUnu2T;W>{_ zUyqxk{GXmaUq@T422bYQ(9|^-({w~T5ZO%Gs3HUgdi~I%(cDXys?X@urz!@`dxF{7 z%U`r^9v%dc%kH`mYBV@fGq`X!zBK0Dm83E87^6(@N4P;CM{3muwne{P0ZDV5#d)~Y z-~VJUtRN!RkL0~Jq0x$hvd+PqLH2egUfGs7{8Z%~s=d+$>xYj@mW19Q#_}Vp1f(dq#84mk+y|H<0GE&``o9cDo?ev*_x7=8h;r0 zOhBiJr%~3UCS$mXmpTPC0A0SaoT-wq`TJv8ZOJ>dkUA+du`0vEj;BQWA?&%JVWY%r zrHM;uJech=z(3dPEKd0XcT|KX{9J_!Jxk{L!qf~N)I(ClN)vNp>57ydbdD{W6nDhd zhb326BxL5BbVE=_qG;hP`{{5?#D>3(p%r9t*#*w#F8Js}8FI4($@Jx@FNEJGlfc`{ zP7h4|*MyVZ`0jED;RXNaA2&C<>v`9!?lx}zmox(J_b}y`sL$o$fSi%h>A2rWKYF&1 z!cROj662V;{{2(3{g4c8jA*~~2q19KrKhzu3pJda%m!HusU_jblMO*Tx$f3BKhIa5 z&O)v{0$hHa+-4~d+BedZ)gB%pAwr<4ZbxBPX1_>GfCCqhAgdxnG zuH86+Zp`mKDBTfB(qG-DJ9*-?<%Xy0v-0p^)rU@hI|Qv+4(@@+H^t7ELX!g7P!eHb z%cy%q*?P_NldH?UpvVV<4U?2utw+jLb?xKKqY`pYlF)F=SG8!Xx;zN1Mdr<0fznEC z1_-YG`+E-PK7rOqBqOHMhxL;Qz%YMQSmx)^Z^2;~H80v+9`H0hWzww88S|=`nc<|v zW1zR2*5C?C4$qEQhV%C>+-`mph6qZho7!G6SjY1b`xVbb(|+`l*pQE#2_w&pd0gF) zm(%GWC?5~`Fo2U+MWkNBNE#HF3>nm(0jDH@rG^44BN)tKraiu9QD@2&OBNW9(5aiW{4czW=5)g+AGMjBRTU5P3R{Z_acf3YMjt83PUD;^?q*9!f zqs|!dS8*zvVj^uJV<8C`Z5;7(C^}d&DM_TSRwQrUGZjcz;-KDFGfhe49T#8a-;CTs zzE4NT*3EFqrgcWEdhIe1*a*SSQdM`EVoATp5m_s7hBH-CQV)iEwhG>2A>tTb#n*{| zr1#7;TV_$Ka~wy}$X@;wIY3WPdCmFR>x*=Uc+RZf9##iXA}nK+O0=7_r4!a4{oH= zEZG|{N=y6U-QL7@u%uPsT;Crs($pA2Dxe!bT3Emz?V2hgRe$m7_5?S#fMWcTOD4vwkLsKbB|M+EtlAEUo*Z#)t0*KN0 zv$V}k*$u7Ut18^CbXBFka1WuNtVUuZwgeBmj>r5A!f1LUR|2!!Z};|ecK$?+!!;5S zsF#PzU5a<;8~>AXU(_?~Z`-UTo)uf!#;w?1dO&CDz=}=j7A`YwdQ8}>4?-dugB z0U2i|i`ar0J<0(eU;muEgU%e{%oh3Vavx{5AIX%-s494iS2cmYPQ}=4CcXf~m|AIl zi${O8z-i^_R?=)OSJgf0ga=@^!ACejNNfcLvvd&!fyH&V=x?d9j_`-IpEGz^iR z=0p(sdqNd1`Djo0#Xjt8>2qzhpA|@Xu4LJR!+$4`JxI(8FX)^P#>_L0nhqvWtc9*6 z>+_U-NAT_h7XVBqOgv^$5ow^>KPjmrcH`@1qY0 z;byt`U>j8@LGibuiW+A7r->I=x4j|^t+jjcwOLxo8*-Y8ovzf!k0S;VPM z6AC;Yw?*jC(o6SiDmQ2khkw3I$ZuY2ZSLFFe&6!3<%8*pcPms{-T)IrjS1s^{Xu#e zTzUp`9M}59+XKBC;Za37T6D0rM1Z@b_aP8N=O*)0OTNI((9Uo}#2nHUgJndnZj8@0 zs?o2P{LNxRvxBlf&USX-OU)sRtNXK+uyyGpy{DqN{rd5d~S+)l<#IzecR0PGU7 zzn1v5O}Pl@;|h4c>Y#t)Q@kHyN~sh+h4wv5+SPkxwpck~vrZo~V`)PbjO#gJN74t( z8rR|YR$^uDo% zOtT&M>=t%1LUCJ=tfM3Ba2r^Axbr@yyj}ciJX@z03BUpQzK1VMtLo@FWg26zK;qz? zpvuaQhT5U{ZSnC_MKxt;4W)v>3^U7eORA{d4r0mE;3QUBDq&4|e0XzYi%7^OYkb5j zvlWkabL=RTgg?piZWU&QHzpv<5%bgqBlS0GI#oat72dn8x}^^fG3?0-t-K03)v&Fl zOIi8x*x!-w@rOunZf54@Ym$Pa)R&J(FvhFm#4<@l&bG^chd&KP)3!$7J zxBOPpsS?&^G_iDd?lxwoi+#&s%TaWc|jcc9%Cs@29|lbwk^W3$~dzlB?LAfkQ`v0(?X zehblMJok4X!I~AyLDL!{GVkm@txHV((qNl@aJyckC!qB_?=nSJ#yfyuk<(L}xwD%L z*0d~z!5Uqo++O}zHcDp=X-P|;U$ya35RK9@DmpmNze0GLx%mn|yt1twErEEg&7qQ1 zE`(sH>H!{6ZRt?LMi#TmE~g)s!;nTb6FqOPRA zj$Saya^sSEBrVW##F&Hg#v~aRmc705hhbv-Q7<2_$(pI$Wg?iCTeapr{BLz6UjW7c zOo?$7P4MasQOLh9y&Lj=rWZoWt#=oH-vrnj=`b{hPa=Aw8Yo}|Y6guqJoL|5Y-00R zW_E0<*p#}`daJ63X%+f7q__~(cg%d5GZ01X;d7kXBFeTyWS!7r@M^_HLSYPnRN>Yn zHIicm>#+ReZw_g+hFuv5A_lj#8TV#Un#@JzB&K%QlRJ-R>~=DR3`4><+aLvggHg)uODUO7>XxO>}eiFe{H8k=`LaB6LqL+luvXeZk0~)xFB6ltt0|)vy+`BYoc+LnDd37*fn{YD7A5Mx=7mSG38ia2<)v*T zQd0p4NYak#m5E$+5h7*=pJAX4(138}PpRti>MZ1O?IvxcMHjx!vxB0-brbTtHKANR zZTOy}Pkjy300pWK8?qkROKldGicN8aA-aEcy#Kqn*_Pe%(D=J=^iM_B2nJjlRHLrH z1wvnm>Gf*t`7e@1D#4SY6XaO#0VEv`bd!iLgH$CbCd4VXt%O>qZt;v}>(VXnhy(Kb z^Xtbb0K)hupfL9|72+9RG!=~yk$E!T@Ornjfw3k^u z53fePf4rWWH$PniJJ~IG>l*dnV|GPF(LmI=jjNes-{x1Lppq~ipU>kmrmn}q4uyG~ z9CVW3+lIB1?UQm&O}jXOfxd^g*!@Y2O~QXEg2ul3Cb@mkVct$?MY|Xun^bDa$A2SoHx>K+ zV-fe@6CFbBX6j66aO?&z3EKL-rv=wDsEgw%iFh$xH~WC39yWlht&D#D5o)fIXm zh#u{H&)Fp|EQR3l)n;2ocU*u0`lvSb589$oDt0}D6X*o0$hdj{Wyy22Wc_pgiU93a z`;#uYkDF6Ntyip+UqeMP_9y>uwdChA>rm0tv|Xem;r?7pHWR&9q~sIde?d0?%ewM0 z{dR$V{0-KOv_Dy&{%;}M?~v~VYCnv_P|IVP<^Q{~$1o2;wF;_$58!A9j-OiLu-{1> z^-ytMv}Xy;Kd$Bn+*p@g@d?z?nzytG^Dhb49ackQL!N*JeF6VBn@pcBxKYc*5|V0c zj5SVZEp%*vK`^~_oPN~x9sn3_;qMTC=YWr#UqHv0`{$*u#PA05m50X|(D75Gd5O16 z!Z}onzo|48%y!d`TVeH9BFo-ge_(K%QgB)X`O9)r=MinC1onVsTReNdFh=TFlMqw- zDf~zTAQ7QTn)sbIn$@%E_oor_WKdVPV*?ZBWJnOU(7WJk;(HzM84~ zDwiw-IB(5S^6GgDUlj`Cd#%!I+amq`hm%s(uxa;b$pm3pJ*#SwDKNO z8%oHqiP)rr*#Vn>{WjNy?1d0_*@&=Tw%FdEKn$BuL>pho>RyHT_%7iu-skJ1nEAgo zKajjV*gtA=zW!Y6Lw()6{QoXgd`|FGiK&gRWxmp7CZiqZUD`!o2`Kh+)ub-;UH8s_ zbNprYgi(IcUSSLGQX_vf8JOpX$xi1SqLX6d{t#kXRB)WZJ7p^U&0C^yA_Gjc!wTC@ zY|gVx?SP~rP&*~)a7G&y6}eewsYID(6)tv<6Nu4hB~`@5fu-K6)bYbK${)0F$U%-z zm+)>^WgGHGQ4!>b8+{oNU+cHn%S~ImRvLIiqotBOp_8V`Y#R+{N3lHwHgM?#Tw6da z=)}UUQx@1f?hm97uz?6^;F2zF*}H@+_b1ps2B+xxZGuF)nMWO0FKnvhykX2%Pg)G0 za%*RdC--l|FH|?eM#z=?5Op_Kj(S|(H39F;DDSqa(ZwAn#!&cZ-LWuSBr>Wa3j1?{ zsoSAve$-MZ;VdTf(>Zy{=t{DYUCm9>;zTxuqHMIrK1ZPK+24pZFqjjG|lUol_C> z_x;m}O!dhe#i&Uhs%^IS5cI$LO{b+MtNfOv(<+Ffm5gj{x+lDy!z1*>S$)SJs$IBEfsT4gN`#VIfY z2Ty@Yrpe*9Vi|}4nk zFOr0VS2N40iQk6PDo3mR)MU`g^>&LxCdM=3Ll}_(J95hu9bbTfF`d9mNc>`=^Va^X2doGp-x0+rz^r zWU7Tq2gx%hs<7_r#T@5hG29y&fxS{iB$`w7F5{++ogQBbPMi&df~99{ltQ3%)2zF^ z4CzgsyQidc&!eykAjDHFbWN(^z=2-VqT+lL@vJot!yX8Dt#Y}zWA(x^_1nMZ84tTB z44H<;tPm~vd)pW@pIBJ+0oxWy5Q}~{=I@FZd;I?K@8k=gnVDIT)&0S3ET=m;M9?vs+2am69p#CFCM%K zC`^B&u_JXamxeVSsPFoth}oW1_h!nq)8IzF?E#Y#5GhH@RX&>wR2)SstdjHVYB)is zTcdU2O$59stswHX6hL8-NvpusACtdCX#=CQP&1*t%psF$ssjG0ZNw^l^-;Pt;UXvg z;Tf!$d1xTuNA`5;S21v=*q(ae%%Q^3s-rMt@E+|o5?ww zDs6{g9PnH6y6h)FLL8`unh0u{cnu%$ch#<>U`sB4<`c3rknA zkuqZ)H3rcn5ZM1bhF{V*A^Tk-IiZkkE3E+AU#LvxxkMt&RLTJdB5MjUHbMuR__0xm zUfnI%P%DN=Bo}-{#=;cG&B<*=f)!XVlt1joP7D9#Zz_CLup&Z*oU@R=Ge~TyU}4}X zoh$4Ev@8efbhVTYS8rK{z`L7QS4@lp#**#2+v_+KSs?9!9?lQ>6`zSBApC+_TZIag zq<}?~lvc7PU;7GAH1|cdVn*W;96u_~O(%R;j3Ud)Ae*xtS|xrtfSt;{bbDr;J@m8j z-XJ?NpT>TtBNxOs55o>P>Bm99mJQqIUbOE~3%p)OJwBTR=yG z@gJxK4fGrD>UCff0E{{f<+sIgXq2o&8?gsK?P^#xXPAKRXT(Dh(a^HO7J^-LHF*+J z5?2xU+CP4dA^sV*swxaybVvMG&S=>u6v6Z zm0=b-_;gZeK9qF3_W-#Vir7M`dxp83ZASXz=PHpL&*&ul9UnNW(p@$+M(2kPa%DqG zk2&9<*Q!VD*YLryc9!vGDMCGP8-fMJH0qCtIPDO!~y%C}}r79vVtc?0fBnvRRrX!5j$3g3VkKC=D= z18pHQ+ki{lyl4;8Op~|L{xngD$+8rc2? zr?XrtQCp#WKueaigGY@C7sRRP3e~>Vsg3R3Hy9wRo||nz)+DaktKHXXCP^uA<{}6D zEr123`pL?yEFL&cjS4RWWqN><1+B}$_$%WF24S64^E?*5*0#!BhfF}DN0D`6w7l?| z=vk~jH@~{I-}j9wzZZ;Q-zO0e`cyZ1cSmw{I2KZEcpj(R+cEq$I$#u!>gWMG zq0W)GMPpR0X0JYle!bp?Uo!&J7ir(uhNpW-8yHYr#`##=rg4A1>i+(9N~EYseANjh zDJ2SIn1N_$*J?OeIxqlxmIkSuYqJk?9JGR9*5sv-g!7B;%C(HHyDEf|YGf4$jGZ_X z1xW|y?V;9BO-Js3YWw0&NIHd#YuWQ=R`$MyV}Gak9>2u>=O2{BX_Mq+oSGH*yM@do znO#=hSFC1Mj7`t$(Kcr5#$~oO4O6n}#-|=V4O8%sushCsSzK06Jcj6bK3MQN&Lg#5 znzO%$SB!_BzV&bS;djip_PYHopM5{|BgA69V{-nBF+KZsx@GfcyZxVw{IA9Td)~L} zd(^3OKgtqlZX4B+sz6Ns+%xJXa%WL@y%S0j%6O_$E2s!*H6J2;08t)ypTh^y_~gq* z)g~udO$G*M$>?@a1{1rCyCEE&-UFkKnt2vQFA-fv0Jd9r zkd3_DIYvfz+80NJTv+XH)MbwxHW!#AbI;IC$}+xh)lhv50n|PU(mEUARD^3lM+IO5 z2;Mrg^Qw!W_m>xA($wo1B~7Tr_kz$zG`(}vd)n0$}-!4i$D8WWr&PtzM*O zpoD*J@CaU_Vf<1KHVnl0T_k;_b3hhqSs$py()I>Qs6HMzfp+Oac6%K(nae z0V4My#0NaPr!}obB%~m5gMjOZee&61Y4+`;Z_uAdjhB{MhrHo3(YR!*cLxrr}@VPN&u`GY45*=S1TC!wO|0 z*9~tHD`Yk6vj|h&cV%6)0m=JiQ{)(G@^m6lX=MbKVfEt1%G@|*2hL~u0dGc~aZdE; zpHwx~pLqvE-sO~#qd(EIh~+IU-g*Nc5uF1P6EF6hejGBi@K!k7rfsJsUX zUo(|uUL}jVr;=6Mw|EbiHOx|aJJP{CR>gCNwRFTE?2R}OF8rD;z2ciJiYh%Tr3CtCPfFu^qM00h-HCM>is)7o- zx<%QI(j-qc2IaCZcdn=2W1ALU7Ge3WT{go8tBuXvt=^gTK${1xTE#9kq&J>=HYB*O zYIK7iKFW|*E0(9M8RT436hXunE34{l|M*R&piq?H>9L|Lz+=$1JD?*!N$CFez_vWH zq2(QN3iZ>f`-%wSGXCjt#?RYPmqHT~Y?m}EKwQ262)m45p(9V9KSBDu8v)OKRh@_8+tdgwUSyO0uLm z{Xw;#eak_07vU$ip1()*O0_`Nj~U?(a<+)h_!&tWkhBd7b-?ij{jpFag0kbnwtOHn zS5%ETgNiH1+&1R=Ni4qg{9DPEG4nR2^HA6s9@|*`)YbPcDoC?JsiE@&XMS`oVSk%y zd0OZ^TJ%w9Z~VZ$2tALTT{8z#TsKEC#NlP7@T#VJ0yLcO1`$5Ite-m0a%+J6Av*x?OnCkjc#@>e=>^DjjV^`khGwc`91}rF!7ZgXV|A zy${>nEMnm~z_d-#FFtyegG4$o<54bGb-d0ug-N0pp8~wdOWL^A&I(P_@k0IT+l*>q9Op5c`lWXOf>a5;oLw|?AgAc z51dn*nY(Qas^vtw7(0QO&%$Xb$udRH4SYi%J&Op7zu66?U!VNPkAvq7K52Ys;_&yd z`NCBs#3$SC?cIevsK@NM{pxb|QrvrmxPiF!VaeDz`_;Xqj7Mt=hyp&4uS#`+MVRj6`avmVo>;D;9xs}Vge*&3USum6KuJY}EG`C@&0xwf3YdD-cRx%%aO zcXPTwI(#Se`mnp~!@ptkaGq!KxYA8p=%#&}PgJ&A5`zE5j)w`&om^d)9|bNm6z&&i z5ql~w3AX6LM%RA|se$e83~9w*oDDXi@;#b` z+MP?_h}ZfPH{Y=li$rda89<4E9T473gG|z&y95=AcPfjc^;N9vic*EV`@HAlnxD&0 zJ%;IKc=V)#zd~vTy!!x$0R~9>$#vrR~j04t;~Wl$2&R2 z%$<;VfgDj z2wT)PcTvB(j3X-ICNEu{9aU2#F_Td6(vTIrYGS^JnQ#O-hq#O6=Fz%}ofLMdaclJb zvBaCncWd{?9__5B#IN9t=52`$^6sHwbxM9o9O+?cu!?t-eNZK|#@(A;=|IW4K{CSD z$2jReiNJ=r1YMw*Z`nLEe)0@<6Hia&SPJ?)l{YI0cBtCE!g<$Bv}j6ES5yPNvbkQC zS33gV;d3ctur2D+o;eXk+2L9bZ!cueBdMFAwIAXh=DWNo`5oz{f7RxsM)OTtE&h@X**R zW#Hy7k+QUAn7s?B-m>vn*khO&*Oc@@W@oR)m|^kQW(gugynXCZy=HxnuJKr3sQq)n zeC2sID|7v8?pM{1g5?&j4QX!%iBUT!vYr64H63_Po+nh9tNa$YQtY?z1Gr!BG0r%+ zFYzfV*g<5^fk*CxX8xY{a@Wr*MOe@|zoFsd)9d%q&Ui55Q`{uTkJbF9nf^*DxIpoo z;M>zUTG*(g?&MNj4wdoPqI>|YvITe`0z`W%wP=hcOIi35- zUM1jFes-UkZCjd?_yKQ0<n*O^xIXmUU^i43xrCH9ZFuG2DMrVQJQb?0k{>^n`cGoWG+{0{`W zm{4VSkx=;sgthM*iL*o&u|4S9=(H__#)8aY z0?d&92rhq=z=xLCEBiPLqvUIQUj|^!&Olv&K8wonDxqEa!qzu7@N>r^fK8F7&mM;| z<_8SxB zG=OG6H9sh^`j2Kh&F_;BxtN>|vj`G1D9Qe8e!^kWvAGbJoszU(SfFE=B;%+L0HB~M z2T^Iya-Go+)C*=_FfGuFE+Pac)h40Pa<8X)sG-w7b&l0{YhAM^Ky1*I(>4f?-oAZ^ zPHpAndX1H4o>pZilkIZ?j8iNsuPuD;x>R&$B`FRWeg{u-h}DwY-%~tqm!)4QO*g~a zT4(A5$%@rOGUuwWWM{V?f62}=EqI+g??yTe;>gUN>_v{>#fMg#&7?YZkV#-8k@J`o zV^@&UwpQy$siUO*-!fpR@YwlIvxGpT=S>I*l88$D8 z0NQ1?S+nLL5%LCV4xLh)R4dhuL~Gf3R!Ic-wkYWm_?n@!{z)b)J0UdNTd;?4iOd{u z9#LsmE^1gDt`C?|9&eI_1QlC)RmQ39Is`C-FhE>4m4mHPW;*W<&<(;=y!isu=OF$S zYJF!YM#hE=Qo7LMk|GiL^|EAN{S{b(4j!&zHuY9?mOs zh1KOH{-(Z1Y2~&6>-()>sd_pUDn8Cx)C45vsF|dn=&Jvi+(EJJ9|u*G@}j^V9Q7t< z{%?GL*m2~<{}bTPZ2Y9>jGa_CfW79JH!%~2gX{-3-FdYEkf0|n1OGM`OoY;EjlbQ2(H^4FEo&B@fx>gM8WTajRj3yrq6o?`yLas27uIDRC=V^JwtYqf@R z7i)@ZgBnX!Pl_2i|!h@P+@ zO%o;B3luZrCL@EMinm*GbRUhH6(^jGmStD{huowjwX7j}xHnbiH2QaL?~Hq%))ta~ zd9?nBEn$+aV3<12?%1Kj6yVk`H8tp{`|fTr|K;}Iiv5jJHHA%0r9O$+YO;hz((!?C zUiH#zQzSs@fIiZy0>#6~){>JKd?a4`>(1#7+f8(d<<8fUxqInnQ~6CN&qL{1o&pH{ z+E41>EF?9n*3WeB;CqEG;=FLx0F6Q|ob2SR75BiXk%pSQ~c!mqBLuRCXi?@tzZ(lYz;PvlLc;2U&7Ap^bB zSWr4KdgdH#OaogByCx3u(KR!!q0bm zkLQOzKPvAB{bG0nd~dJk+0XsykPv8Sey^v?jEcL2oRi(*9JQqFV;?Wx=djFoJlKQl z>$3|%4ejXyjkq(4M6N~ewWojmx52@jOB?5~a$Ybrw+BSdlRF$c!rZq;syH3NOF+v| zCHJ@6=Cx_tvO`UKIfk;hke`5QX~6S{CO?Iq`h=N9-e#=t;^41>8=~j;5ZoV5Sd@E! ze0dM5IZVTE(7#1$s>QmjwnRp)W{!T_{0}n`ua*y$l9s~l{mv8GMu-N9C#!xW)~88u zofMx~6o6Ug_Q|}C2QKil+&2|Np-{C#D|3efwku{Cv$50Ugf2PDwkmVK z$e2^}bLi*#;WN)|+yK+DEDLX^d$#Yt zp}KX@O7`qYq}u5a$~1V^=>H1+&K|xh2&^BLTiT(UFt_LB;;Uxj4xkIsg^Sy#6KU ziiL2T-d`1*l$@v}w{SBUx}YBvNGaOwz2exJNBoh@SbMwpNFi@ypI|gSGb?v{g zHL-2mPG(};wv9WO*vTXl+qP|6cWhe|^W=Hn|2b7hb-tZ1z4l(cdsp?BuI|;p>sswf z*#80g*X*Z3@2WoJi+Ke5BN#~Nc?L~WbJFp^D@g;(b17}A(=c7`&C?BezjWg=080wvt7t0MH|s$tj<(uEa(g zc?To$B}Y!O4(L9zE~#vLg_-RCM7l-(N(4@gNmsWRklm<@u{&VdJ~rH zeeNa)P>l!2ZG1LS<`iy$i2Nhf8AyL}v-_n$1J;M?0E_QG6_M$vwN7x5yT0_N7HC7bfDJLO$bL zlzztCY2%}(8NB09F<=ZI%YHN^cR^1Ax*DVfWhHp3Odw=hARRezon4JQw-%w|dbCUK zvfClZ{{`WHa58#rPzv88$}`R3BSIeRq*PH0aJewbGVM&0E-S*f(JG z_kfL z=;h3&c;_P*nLxg#>hy4?E2h~0x%yT?Nz2hHH2dSJN^QA^V;HFjTX;qyLxyu?Y>I$U zg_+b)>X^MC4}rOm4kEFglz*Q$5q5&tyqmMZ8gY4&MD+fUD^!n>d8${tXx$la+gEu} z9dDWQxg%=(tvTAMhn$cG$kEapKWLI4`#BKaL2||m=1qPjFmo;Pn6FPK?M&n4pk>i$ zhqy#^zY=(C+K0gr$pytVte2=Rjx`mAfKjpGvMh-QL$4fHnvldXz)U*$Bh|M;v_e66 zraVD*aa>A&h4%GFUyrp^@F{Y*Y$L-|Uf^uThV58r+X`~apm9+K_#c2Z9%I%&SO1<> z!k=>~6!N(aWS6C@E7?{3=EA`U#^L6-s81FMz6x7*_8oJNZd7cA}SPTN|DY z$bUi4p&r4GwM3FWaM3o5``6cZLQd^}@G{2~C@1VTA+2aDLPeU{e!2Z zn+FUUzEfbQck=h^aJD0){|~1BUu6GRO5X|Vis%0X?alx4{a0-52;T`RQ#D*YsQ)!N zVJ*#3NNJ5@3=*oHAbyT)>JUR~Y4r(psr8s2Og(wY$3U*>n@V5n>w>pTh_^#;Wf|lu z{+jmm_OE>m!Yf4QxBLH@;s3p*)YA0!Z83>3ILZVYq$LHKM-#ATo@!3c;Uz@p1MeGH zPEG>RKBMVI3~|rY;2r9AxPRRJciyZ^Sn*{dYNtAMFwIPBaADSgaoT`~9i2@^l&0el z=K^GjiN?GWJ`k7esA&p8`nNURq)cj4HMVs~0dax{tU|RRItU6tlKM3lr7&cG6v}RN z%WQLtV70qZ?v(mNCD^QM)NvsX#{FK0n6^fpyseG-Dj0mXaY^_86XDOgd|i*TuRm+{ za++razT3W5oK9m1+O3sarBrB-~1EB9f)a8P&r`Y{TFHMh_jW_;}&tw?g%D#~R5!L85oN!oE$Y?CP`^Brm`)#)+a)YDfAby}IpV2!#_ zbw7VL2e+${pz<3IuC}}kp;TPLB|sE|)QHG7v)$%H*K%>Aq7-X%In zm%`@Foy;D|Ba`LAgceG`O;k4!^fw3n=sp5tc7&6^}nTn|8TCM+r5vGR&fT9ckAwQw5fzYro zf;92fw=V!Ku-XiA0~zCOS`SX3MHf%w(cu zwyJ%eQ>9BvK#E-R%p{(*1X|o4yULL-qvSkA(upDmty@wq6iyq+9N|b;Cq7%WhWc|( z%${)(SpSAK@1JdqI(J0{t%)nz{PDvLo2yhIr-3zQwo~(>z}ti2K{s(kV1_9~ zLpjWh%54QljWpkkmL0KOJI%Z;>gs)O)bE%+Vd}@%E%lavVPV`Zb&#+jDtT+or@#KW z`3BFPOu(blDlIqucH%TMjSy*M7FXUcBoyly(1dF$6LV%}(uVbIQGHrhrm~Gc`Rz1F zl2~S}S}pd=wXU38`h|dxeTj$`<(CU-9h#+Sc(icvt`{ch28xa&&`Z-&q_$EzFj+I9 zPdRD}AcV_}xJ*YGt^wjGo>kNB*;y*)(ofgMMj-W6Vh2W!?jz)PV@KB{#zv4&&qN{xY$?-;>k%&=@*0HeQuIiUO4m)@U5!0NY<`e7~J^ z8%D6mEO1qF0+%Q<2CvPIWE}-!kg5sJ2(#$6l~C*1Bb(RaSas<2=aBgM_TlZX49qya zw4?}-1@?w7nwd%v*EId-)GUk6dEC8PKA4%RB$(`~CQ_A*{q-usXU%q3=t83^sd*Oh za%O>OL_9@Jh<{{C7Keer& zY+Y3d8o0&t5BA@`$DS+@ZBpi?E&WzLK`d&qj%wrFIDHG27rSB(iU>7W<_$YdRArBc zLc2%!K-?_o2|)dqWMCbEj2I4la-CQJefw9?et1Ub>WzenQ4VP=enml(TW- z6y_5YCUEj^hru_bqbI(D0VjR{rMrFAVLV7{!@nG#oziT}CkG9$>L>|@B*7cRqCP~~ z%{7@)XWxn36mSmt$gcX!r+0t-8d^`t9$A9gE3b=n9a&ByWilf)Lw}eWb>3> z8{{aUGnYE~z0h9BIQ`u1`j+?weD*0-#90{v_mDqiUvC8XnDgT`R zZnW(^-0C{>Zv@TZdujDIgA z^hCg}>;mF+(?|NGsZYXHuhsDQusf8+Kp@1^Cij;&M#3_+!cSc`+D0d&R%%x1K?J=u z(gEDvA(=#UAjBd0@gXm#kzHD+h*Bi^#LItfN+PjyY3pEWzak| zTYeG3+sSDkvf$Y#Hxv|zLD6ot>M3pam~%d zrXxU;GS~wzid%j%Hdna#(eMUg{N>Ew{y^-Csa5ZNNYaghtPA93Z3#iNVw6m_z;DYC z?W}Pg1twr$;}%k@^}cVm)919^h$LFvHXK)(1>tT<0Yd)_U+wf=y-PMNFOnQofwwyF zxT+~xg<}X$QKZ(Eo2+|?U1b!7V{EFitoD+0jU4URJKB*CseF*YnG7jzDmMLacGL#K ztjA?7XD!TCIX(hRAa3vlhHe7|ZvzBgH=u}|0ub@(b+bD|R1#)Dg#SODHeWA00|=k{ z|GuGqp*8>amz$fNos#PD zI@}CYlVY2@_}f9n!7lnNWkI_EdC>NuW{)W4cOA7h=zu!ei>dGue-wTWr)Zs2YuDE> zu>Ro2k9vVBbWo8d}W&YYl0rzvtgqX;^77IfA1WG3-dUCX>uvI-z!fFr{6@7|lw*HZMjZI3jF7LK``MRd(%PAk~CWZC@ZV z^?`MOV&Bf=&gqqPR0%%Oh^X0gg4Fgk9o?L3a ztNJ~h$zrsHuTFiy;c}60HUafzo~hftZ+_ZAD(%X6^PX@Q;nfSeU3i~fj6zEt$2|#) zZJ?d&6`{*Q8vn|t4T}?`j-YG-)~7oHX@|y2ulQzZ&21UeHRz#f7p=&(PH~pxBj%QM z#QVU{tUWD$OmrR;&pv@>v3Es9)Gu(N3!CMO`!Ah7LyVE#{(UgSc7S$kZFc!1U6*4B zX)8U++Vo&Vw~$BbxSdRayZ<>GvlGAIdO`lQd?^Omle39Bn``+%Ce_2=uzt-WaG zQ(<0ci8%O+I=d)xOfEzTs)fK3L~x;c9dLirr#q!$RzrhhimoCYtpv3A9R%`lPmMVz zWC-r01Pf6X4hr@cNVoG?$c}kbm13C`bj;dWK?8~&j8;`D!;cpIR^gAMObf~)wAszc ziNaUbPk1tqp3-;-ZBtJiBu*~#swqy37@0N)712*|ia;_1@ouNm4y-QsM3KhsD?c94xk49g%23nU}1a zc2;%@C1_FpBm`7lL(4R5#hYg1%}wM0mZDQ7?K@G06(}L@V##Y-0|$1b#x`Zg$EZic z2~@Ul=m(w4wPUMS=4r5zU5{k6Qz4`rWJdKE`LIJPq7oV@oi{XR906jQqa?^{ZsNI@ zw~2)>K2uZEKh7RdW6!eSA!$L65B-ab*dC9!Qu7=Z5y+EWrJ5aqI^f`k{1j}igc!lV z&v}emnZU(kS!G2nd@nK-R&WYv?WAzsy{6u@lRQ?IWY~c#LTR%-%kI6bYtNy*0_Srk zMQQAmU(TupB1y#wRFXP*U;v8+8tq1{6HjWHyRuq5Z+i(uX36wQbkjMxJG_oW+%|G< z#MgN^dJS#piMm#jvdKFG&jl6RU0YBo$6HlibGTN@CfxpJV1tUf>vomoE zPxLwlj*Q!j5A69Y#}W+j_N_)Dvi%?cxMl*kviJ4n#Jf^9ltuLigO+VuaIxj8%9Xn3 z;)A3Va64Gd?aXd<&wO%4#qd=6Wknu~3UTw%mU76$YarrkE1Fy;zIWI%j78wcXyNcw zM_DA!hr$Q{u`@>1Gl|L9S}2cGK1;?9_Bd2P@{S6Fbi$v+T5@XeCF)%)sIYOadAq_gy>1!iJ}G;4LW4XB2u`(~pd=8TNw7s4U+rx*mxMBcLM?N=iob@2 zY*V)h#Pl`@N%%h~%jfYEZA@5I-aqe~unyQS|LAHD3%}7L+Usfm`i59eK&y@XAP}$=lbd zn(d@n{kNPCbED~K5i0Z_TtCrP+ULH0?<1Ax3z#l>Z0M&Nv960rgIjxsPkw$Ds{Uz7 zRD0s(F-yfcxPuV<8L>&itwj)#u5I(nlzG|;UV~C#kA4=ba$r*Ow|q)!5&w32A!@Kx zh2&%9&v0W!2Xv6^X_&-#9aQSKHZ2-m-#l}pI9%aegc&JwV^TLq*A;PQ7_%_(xLaFI z%umRf@M(#7GLF6|v8BSr!N+vrh|k0&RY=e4rF8TL`x;p8qmqVVYO*9^ss4X^ zod?oD{6X-^k{EEg9Rw@XhyDsp*Amwr3sLVBUFDHmHRV4s6zJ)DgGxeZLyl zgcNTkn7JbiT6^=ZWGndggJSMd8hjLp2qSP9@DxD6p>?2i!fEtR7cz%N`4;3+TPVc- zrWISRDX3vC3PfRbO-ocs$Tfh?lc1ugwgAZf#YYm}bL^_NM9k?<+IGzN^(h80yg)9I zE3t@jW@a;GNBX=QOS|;@Z(y!Zml(NzJ~9F@Bdqv`M0da#i7cY%VyaJ`nW{~0#w$a; zNUnQA2G$V(%ChuGK#kV(t&3RGg2{iuI}#L24n2d_^p2!_JnmJ6PJ-%eO>#WBUrocY zm*`sivf~~jD#^_v*)C167ixpwzDIDbgbiY|A9>Ez-z7AaM#&oM!Z8j0y0XO&ZNAmdQH$YYtdNGmg^ znHIq!L^|VNH)|wW)-nxH=sbXAaM@6M=4#D(og~Kf|gmOCsqKfCKJ{#c3m$ z3&eBQ*qXLeer2rM#rS6FerI*m;Ih*t5tZnzP;nW1zKnx={V8Xd#h6-^;nl^>t)t@s z99}aw>+qaOQoA=-(A8YJGU~i_A?QbF3sT+d)mdeVq+~U6%us~sQ4U_@ZhJ!?P9j=C z<22h67T(tGsw0mqD60qQb!viw@Wz-Wk^xtQK}NJ4GWy>qR#m@CCs3a=aIgbwS_1~+ zMY`-uSvK7-zRO~CU~L{hilAFCQ0g1E^5(JXS=M?H>Qg)wdR zlut$nBLIjj05CB7rM6<_%DYad;LG`{^b9l`1d{E@%CE|j2TDRabYX;Kdk=Jf0F$E z{I}-+Ym@)k{D1iVi~8@gr=BBt%ZcB1`yMPsqOv#se{Um?fX2IhKYpSZEmj$Z6vM3) zBS(zFs*;@w0bnezL2Z)1vEWD zNSl8_D22foYc$^6ROFwi-4t+5}pjm3PZD#0Z%Q1Xi9FD*U>z+U2=LDA5x51kTD8rXZO zA0BYD71d20Ya3|N$^3#;6-l??ZxbndQSv_TWS?4a-vG{M8PVO7jrrpb}Wi1#e zQ!!EL4rAry^gKuIIa>6Yr={{HU(vIeqTO@IbGB(D*$pLfW z*K8jU-)>QCAHoX`j(yp)u|4Ly6vf~bkkZ!;hG(<&z9?6w)=%_~badSt2oD}qCn0MT8JmZHv z57)3tTxG#w1$;86`d8oN13h_}^-H%zm8oe+a92SZmRzo)y0@F?w`5_VG}Y66ZAGB_ zpz}aPSAM$C-Q&4Ub$nafI}#9)e#K{71ZIQc`Z5pvpdAr9fhwC!0nToGMdl(x16x~xgjaJ(M#kdcz-In?`aMgv;K1;4-mr(nu(X zPMnt%_wuy&SDRyhHA1p}Fgrz_AMKan^7 zFor8M|3vw$-4~d*KllF2yR^SESJEwI82vlJGoT8zD8EeqT2}9v7hBN{SA5uuWhASZ zCbO6Vy?w6D$X@4p;h(RO|F(XKLiW`2UCb8L7w^_x(JB)+?t_9JxaP-%R+0&i{_J5R zInMQ1GpihBONopoa1O*Y^0C=!S9Qui-eCbq^O|x3Lw;Xd8_l%szWj4*EsO+ydyZ9w zwWc}k3SCr)_tPhA;&Mo#3FtRkoa%m9j6P|DrnrnpxUg2XERQC+{-~=#RQEV?p1;+7 z{(Igeuuu*g5k<=q(s~~DXwWst#$wh6I^?Apyd1oWyq;ETf3R#H!k^zSN?O^}GbYoR z&5doGF|C+}QuUmaL1G!K{ZUDr`Q+9G8Z&@VJbFzsofT`FqXwL%f+GV=* zpvVyxmYQS{$f2V89OG z&Ror>+PWDsYj+XXfbi>dkE+Pny?1^-EzZfdHlpVqa~dEBxJ`<^bpam)4Sux>l{ZT* zz}HCV3BBb0+EokBvHiI6sNSrCS*Qijhv>lAY`Hs6T_py$_5T!c?SSAO@Y@Ajeb%vv z7!@g@OTbDiYqU?`+~5Kf=pzg_Ds+P+s-8Icf>HruP!TREjFJ<`94ZVElJwl3gZW?q z3-^Z0-U`*1mfpdF9b1v`%5j1!Py$)*DK&iwa_P- zjYudNN@pzXGjbZ}=z&y=4Y17Zb}G50^(c`xFu}(gi%{y`2y)EQvTVQ+f@TSATF=*M z)j&jC^9&6Y6Xx|l^#1&+K_Zk}7)#d=%#)gDNs5hAf2pZNe);-e_RW)-_|0NCVdTktpJ_ zy!R3Uk703q#|B%t<}PatKIGOWHS9cF`dYELIo`S%^>X7s>uYWkR_3HV^`r+91W(Zb8B!T(d)WTN%yHC|^LAHG$3PB6_Mc9ldhyOxa&YtyDVfW@ z0E9U(`;>o)jN1JV=0lrTg|*UuoZBlcrDHS2E@IJ;TXh=<^>73(UwQ^0SJHQU-8Rxw zdeiW>)jH_E<&B-X#=rb2LSZHA4~kxo10+3-rXdjU!=^F!n~<7L(HNqCLiEogDnK!e zoe-r}B{|#+{fIxta!Y=tCv=VeV3EK}`(uyfJ9N@RM-`4a9*DtB!se>&!F%210T&>0 zr9x#{laosPUy~3za!>hmq8)kB__nR;BuXWzyJCdh$Xp7eVm}UQJK57^3MOd^TPxH! zx-l1etH6fJmc^>eAf-h15sIlLx3x${K?u5Cgt^26$dq6lKmdmK&a%FoF(}Xp{e10l z8M%7_-P@j?nr0|xN7je>mibg6gLe8N;0X`3<;Bu- z<%O^YW$us;^|P^B&m=E3&t$Ni{@klW!cV3gwY+)R5ye8!a@Qi3d3dagbR|DWta+cB zOK{F>ixb4(1o6oIFxV|k_1?uSl6&px_bGl(*Odx%r&32%86lv!phWL0-_i+rl(%ch zGY)vD(dc7*4`y0Km(iV)h6yR&1%z)jg7C#dL;C`Vbq2&%T`KN{PNn?zRq`+WFnmxS zWUs#uJC^uqys8(K?bkI$0SXGP__NB$AXVQlGXjG_Gz5+rM%Ks3qsN}3q|fG^&kW6V zxac+KFMt+o&f$#Sz=d?WHMoVSi^tn~PR9fS&LoLWrqg{8sbg}%QKHa0s!X^9;dcH? zW?lTy3<%LyXwCQc>qU9ZR63D@w6(C5n{i=q z{OXD12S@$zFYRrFAgoZi2MoLQFn2RxwFb&SDwjA$v5|Efg-SwA7An{p*g8$Xwu6h6 zkaoG*er_RZUCU{66+-8Gza(A)t^QrgX#JxJH`)%`el*uXXr3uOx9IpGk{}?|9I1TR znu_a_z`xxd5wnO%Q+es@_iY82P@c4V@h|xgrCdRY>^g5A3=#JvSReGr50XP&s9C`DRQ&NnYXb&?Mo-7dkv_@B=JtQFJ!&n2Oy3_ zg~5hSx3Y-xWD9Rtzhth`s|nm%?xPP`BDGYS3aP{)(KmomO4*$d7nG1S0K|)6Cl_%t ze@AwfXR1_J#{`2N%>|dp?O#9YcHUtPy0HUb8S$!rYA0_M_juLz#b()W3uPixH)Z{} z4Aqpl;LC-(u=rYK+9AWxYH9OvjW3CNmEY!~HJbh^x_!9;vr>F`Vfb zl?p~*Bqd_{pE5<}A_D8}7HJW#SK4D+1ZmfH04RQVdg<{z1N+dB6P*}9`H^p8DKZLX zAY&R@ci+O6WpDQFOD4ht&xJ#2U6&w?B&KB|FqR-n$slMeOt9ZZXT}3S)I4Lg2>r{~ za1naLViDRqM~O(dK#=+SE(Dp+z&jS8bthgFXM*fWf#9>)`w<6??vRpnxpb2jF=ZsYj=%LKzJ5UXZMXye)A8W&VJ9c&rwPSlB4ou7Vytp z!(CWh<@{WEU1i-=S$|QOyx}B8Z&|3a&X$@YWNnw4MoSMfCLxe@XQd`)wKS7zN*>l? zs1UR@$-m9LPm?F)CNeX=GZNwR23K{ zuSO{m&+?GA!I~+tK=!eWR63iLS=+di=ytQ+tu24n5G#~(-prOVdug|Fb)=g>Btt9q zd}d#jl>M+Qxx8q1If??UVUrqVE}8-<)%a;7fKeroqKmxY_2!nvwctI%WA_v4vhmGB zh<;*Ey4q99|3SUle*4Mf35`7bO3y~mdfT9rgM#4P8nz4Hv!ZrCs>Xa~=bSQ0VpEfj zMvOru9qquX%$MQh?lI~d_PY_X2pWgh19COy>z;T1LAK4ijatI~eY==l)H=rlIYode z$;OBu-=lm6ZuGM)oRMYHmUZir$03#jvD6GJL2s!!EAK*A0^P%PVG1sS7A+hdzm81T zytSrEEo3rH+nfhTo}Ahvh^8KXFFFsqqrIf?4Z$ouw=R1pTha{uWFlX(PMdjNb>Mq) z;(sJ^X=|+ue6$)WCa6KWHco{uvw?5_hnB@nz;TEgQ?0lyJC#ItmZ-7KG|-+}hN?9G zbeYeldD2d%iUi;Zt7}=M>AHzIqYFtbLkZ$_CwVbD2;80~?e_N4T{g;zA*nyTVg6C& zmAU>IYOa4^XZMP?uv1CS4e5sesIxgJrT5fcW_!6QH~P`-PU-w%xrwJAsW+ZIF}%Kr z1i~X{*>#=^MxptK#w?IogrbY0_qX81hhAMAGN4(7;#WScD*+4Ql7c@zi*g@nE4f)p zFSlh}prjeL4mnX+ioqLq%Qj{ukxIhLgywWiwGOL9$%DQSAyReP`~I`XFx@rAwy{O6 z(Mi&)y}7opO#x8w-C2K%E&bvRzP(?lPR*U`-=0N-@X%(@RO};tr`cGB~T<~3+ z&GK2Vt93-*X`hq_GJkGc8o`cZz|wyiwfLdThe?vB$w+w%jky+uqt~2;8h-Sc!l}-A z@oQ#lom;|Q2ax{-C%sB5)qO@7m$ebMYHLr!R$pK-qp6T^x!E=SPnf(NPlLP{rI7t{ z>hrqB5eX#F78OKi-qVMykd{n_JbdP#uOBqqLv!1^S=?aP7xt**mIYXQ9$%Dqhp@~#Y zD=M}3Ra5!%834J&PNE~KI&kh#cNMMk?3dub7E25GJ$U@}d@r3p-ilJ`hbbM!-DJUa%OPQGKLwj5KzcVBKpNN;P8Y<}N$zhRyrq(Xu;0G?1qxXXqUuwxAQV`uRH+#soqk^F75Aw= zF!(7r&Gd;*PCHleWKU-MI>0R$KYLOl5Imq=>$FjnY`61$TEEg#@$dNmcn zDotPlp;$eNrQTyQWO8Mh*HR499@~((Z+P|Pw6KdJ30nS_Nu{E~u`YXMH@wT!oR!^y zfL5Oprd(ZCx}K-C%VXF*f|Nwg*T>0;kf6c)y200}C*b}1>KJf+yz%C>|Do$GMECV{ z_PiY@##uHJt_34i;5+XkKuteaK;mzsH6aheM|BY;R|0PdwU!y`WCxtI5hv9`(;E*vZ32L~-*GR+H{_5AQ!SI)eZs;*&l@<1z zVfI5xp~Ktn%m;~kKg$e=e~v|8!?@}r%yI~ZRUH0#Gdph+4neN;R(*Mx-wv`zy8xeE zU#7M2tCO+BG8+BdJ0Xb2ZY_Ln3DKGRmb9xe2-$-3&9BE?BRo)G-7GaqFtiIBre*HN zKKpkZ*JT!x%F#u`8*dQvwfPg+d4|93hH|bRMMk_M7I^jj^cEh^33FK6SxE5PG1I{X z6pr;E6WZJ;ZK)thZE#&$51m0Di<&p)uVx~YEgwPh#Z*(*|3tAY#L;zR#i)?eI>c+9 zznc;uE6;NiyVF)r`oTZ(4AEw}!h2Jf;P=cnWq)YRK?XnB&AL&U&he0ZP?;-2!@?qQ zIY6;UEN_A5ut_%%;MG*-1)G7Q>zfHZ{fU{9QoA`#l*E+%P-{aW%C;b1KGXGjS7hN)Tj|+kXVwZ7L%wvkEu5Fjp^_`^N(I zn3@_DKZPwkZ?ZVLu_=J-neVh44{IYtLQ#*#?bwB(=jx(;al&}>btjxwoav) zemzKGx6;yiaQZ7iX60{lKVbTqAh77;Gs=H~yaiM?2S3Orzn`*x3$kASocot9XEn?} zVWY9gIm%=Ok)QI?-COMB>xy;em^lz)4uofxad6_?88-T?tMb(r+poW8`Xe|K$}y)eW|%o?B*JVEabP(rR;^7)pY4Ear1(BD_0W(31rSrgU>## z^$>7PeyHy*KhJS!^YOn2~cpIAm(p5Jt5fWNx>5l}1!#twgao?arPPe2P+Yl!mp1YYqnE)GzL{d$U+#oXUfS&)|CZ5)CK z9x`2y!|W1nh^Bd%Lin?$@)l~=_6e~I9l_vwJUf{-DdJxRp=lw`U zj)FmtU`PAwOGd-jLxa?-4G{g==rww*VeEC)RA4n*Zt3r~H|bwDwFw};Z8^Np)+&?b zm~*a3ae-57U>GeqhYqwOvImqGY}^|0(t18c=Ndy-rEPomR{Ti%L4znj!kX#d!&0IeQ`;>JK7Vv zzPcfo|LvQcoW#t5`;_Y4iJG1X~0= zXc_t*!OVcsd0}dLtT*)HW}dNm;Wk?Y03CW*))Fae>)Tg#Os9CA;&L4vsXK;EITCG% z^ehiW>nf{Ofebaos1%!a52199bZK|z-PG`^bhKr~S*1G7z9;o2MUx7aK!;U#^QA*Z zD*OzC$eS$YFbjw6hL&ri^QVi;jQ1rp$gIsUUD>q#+9n2b#+56i-%g9n z3tP-~tybL_jR!boX`g;63z#dS__@Z|uJ(`b!LxzDR|C8%TaA>+4Oy1il8EgQ4PtD! zU~G4aZ~~SKzlZ!>M3t$it$xJMa}RSj|6v0KEK2EpD|Fi4&@y%VsNJ-^oA@w*+gWX| zEt%BNSyH8pv)BVgV*jvq9kS+iMwDB0+6VdQ+jT`G5J&Aoz;^u2;jrt?;W@cJkxuQT zu5R8y6z2AgtEqDOb7{WcX9sV1!~aPL<_Q>8nG5Ct z>uH(JaQP_N_8`%i4G!Qy?mZq+EkikUbuI8cq=Su=rpe<_<`wSGyEatS=Z)T|Df#}EoVW+?A4kAzv;Un!M%Fn{c*LYrky0(hxE5E z8QvV;tN1NLHyAHomz!v#;EBA-A3K7!qT~orAC9|>Yw=y$W6PgF;H<>>PtR!7ZmwlZ z-T=^y;)BM3`*#0N-+tQR`5PGLK%6Mgu_ZeZn|?u64i)W6Dp$ES#h9V`rTO`=;$khd zq=+A&nREx@yS=kGAwIw7lV!zad&OW!y3FIp0RQr($TMAa?0J|bU|ZJKrq^}{3os9J zg7rNg156tOb+g?V*5TmG=K03qeJ@BYsGMHVD=g*kv}QCr>E2>v=!R?l;4N*iQ4+f) za>~v=$F~N;!z6On)0X|a<;`R%vXMZzX{WQ{?X`)^JGlVYklR3tA^_26tm&%<`zfX7 zpx3_9!x%=_u4%tX@`TP5&)4!%eQ_G)x|%h0b4Jx$gP@Myypt6G-;9Z&pea^f?$%#A zAH!8&s6)ze$k9ye?EUcio{3&*rCB8}+uX3kxc4g>ppG6)J0F<|r2XsmF7N#?T8q6p zBZiKe#L*|JoiHu9u!&9FRVAxBp}1z}sHsji4Tx zL6Q%y6z%=w{`g-0E;`$H_Ba#s3hdgi-M_dpWWHl#^4`e4Z7OUmtr!2aj?Y05nH;ol z7`h82d~!yVQz$5&bH>hx)11A*_<|aw(8uKRv9dC~O5j-H+MoCNbm!w%QR@N$QYeEZ z<}@bYlFK1xcA~GJ#|P>S>L7c;*5t;_aI9Q(k0IYk4KHU95N@^Ky!=$S$kj>9Jux=5 z^p3$o(jJ*mkCU{>hY|swMwbATZK(N7@7mBKRB-*ci;5V+!_u$`jplClao~Sud6I{= z1qr|JJcz09|1@f;GkLT;PFg*LFv3$%R}>t=hYk_hk*Ym%D>H#Z{+-qv(e&K~`6i=l z2&;DDZ#4*v`r)dvU8=pjcTY9f-}H#1xxm@{HAR&(Xgep$ANU|Jm7RA`m%mfYAxeId z1Zf>X$p%%Hjn(yB!NEEG^werboYk4)W2OBwVFLG}no@stR7?rurf801$+Kmw%@idl zr_9_huHwK^)A8peN&j_g0lEJuU5yB7l)iOYVp?*gCQ#!*6ih1Q zjP;XH1UF|ZJ7J4e#cueK@M4)or9Whkhm75Iru~t6)D3i(HG2p>zTbNq-8ZkVz zZJhvn%3kC7)(ISUzVSA0Qlz=i_-&KidY*JFw^nkM5}E#}#Q*gzAKaVg)e2U~$Nl|! z#J}b1R$*jBLgMRoYQ3h0Y5H?K?(35%pTXg_=hN?==;ER#A`74B>n%}uOUIruJ){zg zJ4mCjjOyn3RdCfIzGjEXL6eAJB21CCqWQLUVNo4Dq;na|wpgR(x{kUm*QVK#NXHf8 zZm9K(!x@&I&R5W;=SZug5o~Iw5huDPYk^aW!53C)K~D0^z02jNX<3q>N@gqBf(kF5 zL*)pZY~_*s?@Rde@CIb<_XD}Q2i8dz>z!-`?JB%7iXZywkSB?b%~VjTx>G(zdZ?4jKdDZE2ZAm!=hm9c;wS8XQvKssvgsE5+c(uV$g-8wf( z;DDTVpEM^TmOClQ2I)H2QR|>0XmlPrgXA5Hzec0+Q5AB{iJP1Zp*yLtgcqNe&9U{p z?F$INqpeCSFR{E?)hcM-77hd1_)}qUV=)1`frxGadEmGkE%NT1`E~29Xc6jX>lENG=;b{ z6V7PjMC1KWw~v5&HjVvYhb*22yT~gZAIPeD&T3O;tN~K?k1X;MVV}-p;TL}2C-d>D zztu5WP@zEs?*4Pf0OcrVa%~*EPuQh+=0X{iuHHp=us-&f-KsoGx{rD%NI~J-C> zKmvv8OtMGlT!Ur+zyI-GaOdBc&*SeWbbKamSBe9<%C#xDf{>?^qve>4iI2?iW4@YP z?wMs);{t!&kfs|TAHa(xzT}R056VK+cV*|={l^$omHFbK*Wu}P#0Ny4& z=q1TL2=E8(1NDLA8C%Dl(^pej2(2Qs5~iqFmaPC;rDU&&(~=~%&rhY~fN!}_FzE*g zMY;Pst#p%5*E|t*vmiMmqka1K%b(pVRP5eg>ZccCr@Bn;-;=vfJW8nTYu%>`jQF0W z_gG9#E{$!D(Dotm66dA?28Gd&U$o|6dofBEJIQv)^4?sgYwg~Sj7YozEgm!kIba>f zpzoK4Z3BiSuIJ3_n;M8|Sd16&juFo5eHIpkdv_KBUR87{RUNFfG~WCp_(UE3dXkB3 zO4q(T_OhXb-SnnUR|=wN68n-y4+JwSIy9bSHhdpS22|aOV?M`5ZzbAW++)kZzxE`4 zsXu>=V%kY0)qDL|0J> zcYp=88{v76#KZd~chJ7)^ijs3??S)vzcF*ZBz%@sR@IwXq!|G{ZH$EpP^fR_xq&vx zWA&z_M8Fr>J6gh&SkI>`AfP|Q8hc72am6BOU+d6Qo#*|r(pk3IA}NT!0^eoisnYp7 z##K6JMuh@BOkQ#sGtMSvJdWp<#ciqlKpKp-;EO14_^h$X9}kbM>1i)CXkt*Eg?dk@ zDhBTvPP0q`%#;suLqz79)!92|Re$LH7#<6JXdiA2aSyKXb*2MPm!cmN1SsOmT8%XvLxSlTMv$Alj{z zGgNEtm!SoV3OCcQ&HY9XX7i6bZ+I?v(fE2)xQ-WJd9mT0#k+%FGWE+Y(%Q%Bk{{Lu z7*h!|p;NMtDFpEwrE`HQLpn6q6n)p8N^`2e*jGnMH3}16@(n$5#dfw~?b6e?f3Lgn z%WB!UD0@1hL~==ytFo(Ax6(+s5CtpH{t`j$*XFW9%mseG)boc(Y zLURkZ24QYDrd_T0mtwNwN%4=OErEg!`bV>b5jBGBW5#1B21*+rkW76OOy9GHZwa-F zeHXe}h4~v>%t)0i7UHK+ekUK5;orR@%w_Ht^xtO(d|YX0)Y=}v`$*TBPq{dQKSo6e zHbFU&uL$f|w%%v~_NJIGxi*BS!eXg-KTvxN>e>%dHC+d$eBZC`m?c`=e0xf-v7(0h zu`9ImG}$mFcWbz#e~pGFvbMauZNk}j<-gUYGnz^cEloO{CJo>1!O7i(mSI5LLK$}a zvBnAC*pJ+BiJy2YtDW(j*QMVY-H2Uw>}53VYk&o|5tXssrMn#P?Z@lx_GKmiD@k5k zie*<|y zhQFI`Zijv}I3>qm!h#QO=-t%T3Q5>%#WDzUVAY0|tfobOP^!%~gsNADf1eopUP-G- zX;tK?_2s;_D!dbh89De)TuRxz(ou~ z&wMD@Xi^!fTXC99@ik@9gs+kMJp+f))LR6^u*OQqv#MHVOih}mzE@1?exUr9WnkP; zqa}Guw^+c<%$mYdDvUUYBV)L zIM)sXGEiU0czH?JjL^oOq$w^Yd%g+YkX(Y}#trNH^Ec#ka-_#~3`b-|Ipo7Z0p|d7 z>}JVVw&SH^t3=jhMGM7FG!X+D)j^d_^lF*D%NtI<4S~dny>CNz?x%Z>-G-1kU>XSt zPT=>7P1tvLVR{~oHofuWYw$7k?mnKmk~I{tL6K(J2PT6|(|2%cuL5i=aR*1fI(4!W z=-Cr7vL~WvihavP`{6q{FezRtP-xHKCCt_S&=|D=^_tx1HGaO)v{c|7k(0q;v`i50 zJ;kIcMkuMN$S1284@U+yU$w^X?awn4eHassd(S|zPsGmp7K{K~xvfL10Q%7e`f|w9 z@1LD%=R!)JlnjAf?i98|QV=OpT-dy=u=bX4oAfAw~^#t z*0)PQQbnXxJt-{D9qN%bn-k-Dzhl;%d5hxyq4Hr%>^U*R4RmU=j=RwSCtKmY=ZYMB zYuEU|JoE0m>+sYqQXv&v18=H3`&cCG07vc)0(u8-xyX%ECUIq4!Uqa4UEBg*JzBF@ zvQ2Jk%_Ua2?)!aySjP0b?9wmhHK1gFK| zp5!j17mLsXhq3N8O(AB8tD!kg%_cDS&>Uf$m??+WRDQ=!2)ko~@Tti+8@9#JQK^-I ztY~vPG>&)`A5{$u2F#>@;>9zH!;va#tFmS)N~P}#WE=(&iUJ23k-X+_GA*f>gAo zC2KGUIEV}KG@u)hv}(FG6`ev1Ej?~8c^E%{f#>nZ@gNM1MbHHBz*sSJq~_Uie#Dn7 zhsm5n{c&tLR)Er%6NDh25vCd3tY~HcRf2}VDeFssfW!@fyGC1}1(SWwHnkL5f8AG^ zT9=Bxc18ZLDwZXR&R@U1I_k@A)tS&V=+Z#M1CGLxkT z7qC!#tzMWjy3nJZBEJNrs=^^v88}D>N(BSU+{j@$O$g3S5dY7-+n+R$E7+qywbUD-JzV zQt}UaWPX31%?3aLq*!==4(+RZ@pwtjJN4p3ud4qAePrquCMMty?^ts$>)Y6B__lDZ zvea$#)PxIlI2YB7YXGh)^NOa!mN$*Mt^zZfR%PA{!o&J5tgz82?A#jjD5M0Pb!|V+ z7D+qUhr2zI6*TZilMZ;AWwI4b0)Xb#&I@D2vj5b`h>b$MjI2v*Vt#<96F~cHCrp&WQ8n z_naN~oE`Ug*>R(o6fsDStKM4y6b?^r8=2(ZC>$w5+gucm0OrQXSN1{S=woh-bh;M` zM;~)zOf;U0!ZE22_KfH0ou%x1;MX@Cyv@XfH&;wE9H)>)4_<QX4PQo!87`danagT zcvp{Qq-&^g=$wddtV?n&$=_O5Z^^olH+rNeAoX5vsE~>%p0kYB6Bq~PA^kqrn_l;8 zn8UF3-6RMIRj|wEceY?u zr@zhhe&k%~BlT9cqPc2sE@-n!$(MiQw6|A8;cKK-dPpOB93`u^X(y|J*Q{Vvv0!@i zw2v3WkvBXg1M%?8Jo^J=rDOe4bGf?GTRrHNK!}kSV8llfqvRc{$$OUxZ!8g*4-ZA1 zu31@W_2vB|6}>QL;st&}z4)C?oF8A;xW-emoQGQx5Uy_T@8?vPx2rJ|79NnxG|^l5H}8{ECk zWbkVNVSI!IF#{@O*C}*aTs#Ft%UMZPwIv9|IQp)VVn2K`q;ENxpTU(AyzuW_XVNGl zBjs4u1>)vE!ZrEis!8oxPb#7>I`)#p{p`aJXMeWd5Y;EvR-NR6-2ST~FPC4ugp>I7 zss7c=<;y={fu2I%GiSwBQ=zZ`=AZ>`2&2aiU;Z2L*zuBWneT|8keZ41qZg;Fw-;3-Fv(DnFK8hJBNsos4jb>lRRH$(4!Fo< zBTCq7TZLNF-LaDuCI+m$VORy&!{`DGB3IAyhu0^BFWJ)m*OW8Gwi`{U3f91^*9_Dt zI7BWz1BUMhW~KG|{*QXf0D!mnqd_!6Og$5&{C@CTWNd*>VGK@ZdvB|g;_|8Y#>N0K zhLBVeMJ8`fnUKwA_BcldYG2e!>7C@ZP(Kx<73eF-9R$~w zlw4`4J!E&hvc$+Or^1NVn?h!{EH~(y;9_%MxcK39`0N|i2y+Mk6H6-&3yUwO7mzDp zu#HEaLub^j*@-*W8;XhARSuoPMWDi5F;^xxEHv9$YXa#013i&T@=oi$MPaHH8?ikc zn|#BFU>Q@2)>~ITprl(fMOV7cSydpLSv7T=HDO_#lABuIGC{JURgG6OxwHJ$jOGi3 zOoNbT140-QgDh<-X$~jm8^;{%>gbiGtA^EjCVI(lSg`cIZ>G95^6Lp&lT31k;6)&{ zHN{UwTx@XIV&3B#Z#$bNdaRUjxe1AN9KC{c!CqmPGgOW3dgsWMZs!VD3f@cvhf=~B?IjF7&>#(`5>(FAlQ9Ek5;-uNKrAGHrM}RLZ>*U zCHZkkJ&X2Ra@w{%88z;?$2IH|+d zk6yYsM~n+&l0?V{%eiepSyI2m!1_878<*GrLLYuMvDg01`G$+!IUyYkMa}egaP%?B z!nUvakU1M(=ZlI$lKQq{>ck&;VwbK;dD8Q`q<_KPz+m-{_QXGXyR#aI&P^E zP_&?)ur0!SzQRP} zBvq2wI+*rgoFKr_NUA)z%)qsf(B}=!Zto%dCX;1F8xtUZg0hq^_=v;9CMgx$HZF#e zpEq4{)?2Z8%A&WxZr`(3-UUr~3SV%#xY#zlt$E_hRA^I5GQC`ccGN$3ipy6ofg%``>v;Xrt}O$l&isd^v3+UmP$D!gU22Iv)=lww?6Bw{q|p3Z}lXb zJ*ViTqP~&Mo9v!f)C+Y7IhM{Mqy%k&o)$!b-rdvfQXpIt7i((;zqDWdx~4(YBflAa z5ZtdOTF=~iGl^#Qh!F-5D$P;v?L%dJ+xqWW#;PXKuulBrvm{pxRgC_0NiMS%fPEt| z7=F`qIA;yzh3a_T^*EPJ>@v*P<{H5XE~m%a{voYC_7cwaA-Wg+uxCH2(>;*rj2Uwv zp0CIygM@wD?z0aS63$Ty5^_qRI2x2|#+a%`VcMHG?hJ3r6LR)B*rc|LB z>2;n!O=bxO*b@1^Kb~Zx`<$>AY&}1bCavHsx@FtMqdQ|ZyPv|rmb6NEAG1Hw1~n&p zeCOS8N>RV1CK!#sHS3stf|(%wwpU)ru=VBAZ!zNse|cj}Vm5IJ6RlG9w-xwH+NQH6 zDJwC~7MprNLN5?IY2mtEbWHC>TzDe$FS#Z-Og-O)f2_N3X?A^h8;pkb@Y~?5hN!8T zuO%BDWyu>0&_;X3dm5W~2hrwur&FyuE0S%&Cm(9UOIzMZ zFYdx>1I7{S<{m68Gi>YwIL~oHi{(fJ}sY{Qn0%r;At8lt#GklKcA5B{BoK)_bXd~DZTrazOCI631=W8ZIOK6eGX7ag!$4=?L3gks`1KDlzP@Z?v# zU}~!xi1$tDvP4Km42>RCm4(jH`}g<@xyMoLUbJV>=(e3NE6v6+mZJ?}<1RKbOUc-t zG3%t;9%tMO*p10QCqm9nK9Gz=)7zFe9$MkW53gMnzya1!5O|&-0*3`7GP*mXiZj)a zd%Cs2Zqx=&prUIFT~2h_51H>$BQVa+_Bc?&X(7d0@qDUN2U+1zJO)Q;LLrW;zqH~% zAZAi36yNE^xp|`p8flQ1SWZ;7VI@U69i#|ONkk|ExdID-NvOGEweHeJt7KB#vATi4 zjJ4pu1OotY1P(?6j0g>wz#*dV!W!VbeY+pe7 zG{0%J>iHsPcdU4!_Y{MItHEqpa(26f$f&!G@Wtpc$dL&SSa9C)6Uu`TX?ZJ(A zn`DC=F3+y6gPUrczd+PXgkEP3=r&d_Jr^qsuMHg&hh)S=4mA-C8{%3hZlNV9=5S@43^&Jo*6u>x3;XK6IxxN z$C?%F4l#iO3rB_P%LZXgv#d1Zn+F0DX3qQQQOVqLK;t}M8nm#q1}Lc2l91LbLKUuU z(+Z9j8685Be>53pZr;mTi@1*>+M!9Kpc?mdJWdHQRz-GTN}Uto45$sZ3U8FG12cc3TqZ`7Pa= zm?bNsn20{WF9mMh!Gb9B1pvd2cRlkg;NCsTF^C6q_4lcZ-_ra-@V~XJtMKkZ!($UZ z_f)7pN>vviNodh*WV_yAVs2_+Z%IwM7onCP0;)W)LQL7g?6Xe1qLrq~HIIjIgRk}%zW2RoW_&>|N;;WUO}zlLDwosezOqp}UHY1XistA=NYz8hES&A~wZ2oQMn{%&Ob zn0AovSNI!@EDm7lrU?nDP+U&|!}Tdba3y&IX4(p37VuQat*3z7`W2wI=E7|GI0!Mx zC53zP*g zSP94A(Ll0hASEUz89z;e@#7~KKSg5koTTCz>B2MY;Av^XGgE};q{q$}Yg+2X%!J=3 z8EcyNJ0SrvA#6X{hqtf)ZU)TMQ$S2T3B1%?XsP6mp9EIw2_U7O0#0f^lvEEWD$;v0 zjMOejR7~cGKuC=NM8%dO1RpgC4i&u#LFlLnV5pSI$6%udpinU-BMuq00|*rpCn9iB z6B1HP-U>iPO#nf~=*k34R2m3Wr1M>fs5Ahm7G!4 zU{9XhAJs$SKu-_av}us1T?nTn;u-^Znu8>f4({Y~?`P>qj|c3uH>lIIp7pF}J?mMi zV@-rgdK#Fd84yXcQO?uhkklc16MphpS4MqrUf0FM$n4M8G}f*mFFIRS_CqyT>Z zrR@rdU`9^_Wb{NJMl%77Qt3r9cu@yUl%i**0T=aQiISwYUm3J0T?$GCD|!;3qFEqC zTo4Ekijf@WcXrh)`LpYh+;8GkGwpjjY57TzaCVNC)6 z@}PZE#LFo7&or!0LigjqKhuyt30;1&q#?CjY!cAV9w0w)H{X1KpL9`oKCsVRP#?Dp z=@MN4&?hxRdp|WL0@33^?<7gIF?gOG*qx+a9|p}cR|}c}$&(JpGjACQxL@W%@yy0= zmUn2cjPDAVrzm?qQ z1ia2TWKMFgW6(OIa5>36J_uH4CZx_Da60p#W#-uu(jatZ!RI`Y-C-7F&c2$@tlgOl zlVbpI5{8iok+TbalQP99JkAjKCe1|{g2ovIy-By{4q$N}Bu+iHG`)Y2>^y**+2A%k z=$bSy)2|F{lX&@30d4jGvxzgeSwJ=xrY6$ogFtL%E!xaumIhpt;F^ChXw9SLOoAsf zJ!`V6Sw(@z2q*>F_!gPyShv^RSZd(u%XG7=X9sh=N6Dhhg zJ6MV{>$MSeP9AE@qcnaT1+xm{%NS!ZYcDHa28TG863>)gmYC!Q`4Pos;%5N-rf4G1zg zdi2o@A9}I|P?i%1hZ0A(-TDK09qM!RGF?zR?U_VTlwp^KWrVp(?>kLl8Yj*`N z;UJ%ji(0O=f)Jx?0EPzE9*}DA9{7|^HM9n(CB=U+tR~W>70n!6$f7E!V9Swlenokq znKg_e((Q1J8>+|(-q)Yn9k`~YvFk+|R+n7R0^|1e5Z}q1;ovS9$WE^YYZMhYhXa9u za>3OGPmxR$WXZAWGhmIm7x>GQg#LIH3JJg!JCg-HV%juw--4B3j^CB7o;Lq$>I zrXY}Meo|_A%*E<0e91JUvH9OHFPCcc?pJr&61m=Tf;;|)RX-2^8u{A)AU_>U(~_SK zKEmg4-Jj%BJ6HROzw*Q@H$1C99gJm{x7EQ31k(>2pLFqE4eCr!;gJ_E_X~nIO_rl38p#92vjMK&#j4uzv zbu;3w6$-1iuB4WU8gfrDt#~csHY|^VkVRi@fHeSH8Q8;BrNxb#A{x6aJyzf-OHZmh z8BFKmhu4u#ak3VQY(vG`=3?G~!0N@{C?zva<1q-ZS9bFgqFY_;YNX#_+_#NvjYO0_ z)Lgi(sb~ut5-)dd`4i}+NufXU!hU9j{Cu+EJ`W1@i71_lG&Rj`RWFk+s>|74(7~z+ z9@-D}CFT(7f*1K&<$P8-A5-P*vP3Fb>+=VJ*k#nAbHhkM>$S}`@r;#@<(Tw0qlz#~ ziDPHMmnj@R9g5oaaQ&^74LvbI9Ce&%VKxo!)9!WEOh)seUMPF)CUo)XtFb0Q`Ahz)R`}8T46H2TgjqkCrm~^G+YYTF{-ProDM&uAJCRYvBqR?S@U6Xv8z113py6FaEJ--Q|N|5%hWzM!i zV;`*YU91YzoFLnRs^+4WH|(0HYc0TuNoDc+wLxDT^JDZy4NS(mhV zMKp(5=np2mGb>I^&kSwEdPsXOPQQ!Z3Z>Qsb?c%PPScr|7qytH1xPd}Vu%N01LpjSORo_Bmlv$I~3d@`y*@@>qz{p54O3bI(zj{akOW#OtHa z;az7l(yS-k^)j*V8B35F7rjV}`9Og+DJms7*fbWORBfo56Tb(~4<$$|Zs8xNcH(1% z;{_iG{IQ|+nl+HSx4Rg<1-R~>bYY(qQ^cKnyDe{64Y?RuO{-BM13zf2b5;OEs3NUH zf2XxzJlsE~{tnnnWKD`on zGFONGyM(Vo_=1zdY<~wf3~EFG_qleR14(Eanr+a2Z9WU8wecIE<=nsC|7d^u)7aUM$-(&5sk_;)qXmyznZnKkriZ=g z1%WXy$ypHS6xkX=bI_vbb)pQ)sh3on2yRJhM&8LQy)|vYPRIoW`*y#9L;FsiePCHT zjr9^G5rK5PKBirleuwkxrQdbu)h5*wx}ZlD_KJb{!uPTs7xcf<5_dOB>$V$(s0`~ zZFuK+v+TSvMNz3DpOYhaZF-z#$#PB`R&0-LA_yjZOdXIgGdBwwHJ8GWlTOYL79hA= zF_gRqN5QbtAk7>}HpQFhC31Ro{$eE4Av^r1K7W+dYz=n|Z_l1LEJ2hU6RsOs$wIET zS5?hu{#pvv)Ib4d$W4{Z50&eQDCi2juBNYj<*1m*(OK>x8}P~&*-JVgZ~P=EPh@pG z05L0aQ}%FjJG*_Sd5*GN;g80O*;6Y$wckv%<KCTy1DQMf#%zyEloX z742<;bHz52tN@SL$e{YTs3i#70m@1{z%{OR>O6x}zZE9*BWD<`8nyyIjHMB78-nwKiq+iC`7;gD(=-`6-|&o(7a+ zJ{(0XNq;sFMVcG^F(4=sPFTVt^8qKi?fE8v(%O$we%pJ;3NMWjAv=zZW#oZb2MrJ) zcLH1-s`jWTY3k%^W13(^EUgAR9=1|i3A>Q;wyo@*f;U@#k&8^0M&>qpj6N1JVAQx} z+XX7L_ZQR6zqBj;wk*lr@?3|^T?AC_%`Lo1zgF;$HxLV2jhUYmGday76 z!lz?Cp@P|95Mo*aaz8~+L>&%scq4KQMAgWU=mgVd6o z644eA@ENWe1{wz1o8YP&L+x4T5}u0-nP2x*<>52-gZ10OBiA835+Jr2&Z72gQV)i)h)YEqEUx$@!e zB5tlqTj!6QHlMBfrUZKx&_&rP@RrZ53wc8e3n4qro33}Bbt5J0|?zwVC;Mi zVZmro(AV%6R!bYE-E}&6Fwn0e1yc$`v)^*@2A}U`)}FxE$(M^?q+lc~TGg<6dYkMq z;>w2gy+la?Ru~AsD^S=Y1k+|Qv;tB^zIgG)ib+URsHxb(C#UIwB?YHqdr!Aff?(yAHNSHeSgM+3EO(Gfc#pZw zpTv(%Q!w5v$$4{lsKB6ZAgX}%I1gJ_H1H*y?az(7Wm>{Au;^1bJ)TeF%P;o!X_W2; zCyJ%+dC!ARN2rt~D3kNcE#Yvr=clO=5`kbK0rC6^C>QrARX5KQav^hKxjl)nd+lAPkfSKwg`!azj!d2-JzO_-+n_lWvnqa;d9#nIguLUf_I z3HZ*nKI@KOAjZ*MS;31F8`*3;C*+20C{z~(50if{%#sI=spd6)5+~?6=9;ShHhpd` z2s{{b-NHD39MVT;&g#icAVr7rkAlp6glT_q;;lkxq~`fQB=Pu;mxmeNE5no%nKb?z zl*hVbI(j<)aMaEA7$P1lk(f41IpU#(JI~|2bOMUvO$!9%ga~#ITrr4zGqGp}XWwV0 zCt7Zxtzxz~!8FlRdSk67_vO)-WI;YZ)~8(HHG)m_MH7Q%6jH;nh_c=h1%(Ts`+@M# zSL{3mZkkE%D0Xg7MwGg=nzav5>K=zD3z@Ui)rt$=Y%gTNv$RMpKoIG_=ke%`yeIbz zmmQAYl1dar>VFUc*H{2Y*ok!Mkl>UUl6+x2}ggr%b&!)$9($QV1DvG=X}}}h0$am^_<(Y^i5(!?sfOP zH4@!2;J>h2Xoy|H98|a%2q0J3f-*)1RojpoT2LtDyc1;;sE7j}#~xu+n4dtX zwUogpy%!1%bypgIAv}6a<3L~tlK6!W(t<}*~r1DlromV^4)$WH&}&~x81H@zPt9r~Ra2d0Hh zwN-CVf>@hteg{aCDF!|?hHh9* zY`2Oj{^ZLSFJHXeQSc`_^%egM_+Mw0xBs56M(iYk$Obc~-c3m~+y{LMUw|F`%j3?j zPriKd#fz6mdd^=Q>)Csj`7ahPk4XSDsMn*J8B;ym{JAjLEcdd`O$@o&#K~^;%v{NG zURr(&*U!7L_Y%krxD4XhpbfBdw_F}~&@?640N zt2yAcIq?|`HYMF!a34d4+sd5&niY(WhIIg`xTzV1x(4@jJF=(Y7}u=eOf=V%>C?T1 zc?}Oc2M_yD$=W2U)ih&jNv_(;z@`P$@U*1+e$zD7dm?M{eqC4D`*DF_I#PZC^%^Gr zqAMdIzaP%LZfl)HbvA~{!}-dnB)!~o1atzr;Ar~A?rQm||qFa*bRBW1xx zg*K(-ATHKl)f9S}*s5uit`uyp1Vpah^sksrO04A#z2OCKwuBnQW;pa6b`r>OlM2pT z<1M0ORY+>kGCwEHrk3q`Ltc)*_lbdm?EwYW@RG?kg|NIe(L@&f$1obGQcx7+o^r^L zG&Tm>WK;edd@s77pa0#i!|}FTljD2u=iK{wiFM}$Coaa>sP2LA!TQw zuD`t^Ml5M0Ttcv>DrWMXkSUK(KT6*+npjBcweDvHsx+Z(vyrvF8$jA%ICre(D?ls* zeAZBude(In2-i-_+Cf3>Ev;rGIK8&-*q~{^M4}C~>zjt-ZV)woz1$-cU)+W8K5F`l zh}K!#8PMT7uXLX&uhz^iz9sKieaG4Ti+fpXiFcvd;R3mvdI4C*FMgK-1+CllcW=IX zMNaeFC~U1_tF}PZNG%Di_zwthazbvo$WwBUTAu%VYQ^)!94(YaX0G-X=TNeG@h7u%3plRn1WyY^V=FHc{|l4UiU1V6zxkQMX`5fbw05D9ZDahhJ# zzZOiED6b?O7LaHVCdl-3%O(*ey7o+V{%eyRa~F{2B-Ug8ho?CS-DmVG9;&g_2fCxp z#zr-~J_RYu`VT#D1VgWa0@_>}mT>6wXi_CjR5?8<5qy-GhK#~yE&+NQ9$aW?6n(5= z_{wL2GB%HAfigC_e>lqiEKoiRl+Oa?Gue3-C_jCglOj;Ey4h2t%sR1*ta!n8Wy`Qs zg;M9E3YFHeadpe9AHe>YIIlP8eb_=HR>UW<&bMrP72#$P zPBu2LxKJD&dm5jM^0+7BZ+q~zL~0x7X`eDbo6E}*I91}hrE#eF+zEJ3{4}I+rZlb; z=SX30l*Ebl;X>&Ac^5pNz4iUxgqfiK2#Z{p5ZOnhVZr%MFXqBUO6>e8(4&D&kHjAx zm_rWm^__hN3p3=bD&*FJ$T$d~R*haR2sqalxh^qpwvlAbM29!)^$(TCS8Z{{8uCvr z&Iw){=~)wM$h#ruE5x>*QR zB~tD1hT+%s9mi-9eZ5SVG}PoTIY93l)=bCvb3tA% zUw*##GKXZafk4SkC0~n&%ZL@o>>1yC6g8vyccMs3dU|URclApP8ynx$Ejz(q-PgQf z39#u$D_SV1DBlXl5RUse`0z-0S|K4vwKsd;OLGC?5O&wn9l^tC`LuU+dsoz-+Q9)i z!Y22X&QGGC9&G`<8gHdZ6kJV>PJ119Ue%U#tq zft5TgHu|`BW~wqNg^A=;Y(3^_E_)?M<4&Vs`}gXspsL~7p9`7Y>eWb0s~dZ>H&a1Q zf4m}ZxVm*^U8j{bJ^exLBnq|P3kE4HAT-!=eGVIleW;`gC(PQlnQPfF1=e4flk_`! zuNY4EMo(A&nN8UrQcO@QHJy4fw%qu<%}WLy3@UTLz3vy94%-s+N^fOL?kNWF1EpD# zYhJw~XF|1z?$ZoD6SYr3ewxc-xaqWZTk>42Z7mUUh6!&GN7MoP(ER@3gdBWWDgBRV zR_b6$&daLc8E>?tB37)f@wD79^FpvszVgMBCpi?s@1vPZ3(vX4`mgLxb3|6xvUZ?{ z-tKDV9qbWuO=QWvs$g(QLbkCa%NV3+hjaz9b4J}O_LzFV=!qo3=4=1CPfczLiSS5`hc z@#pQH3--8@wHpW|X@7n|j${oZ%BUa(qj$`vBxpjjMF`mA$-F+22%$rgV01`=jzM+~ zhke5q?5SImII)s-#*7&n9|^9GVohUm@A`IIe%jb zyjQn1=jt}NP?qWHmC~H}=(ME2NI}m2d}W4p{3|V5kn+UL*bBF&LAg6%$ELruHPdoQ zlAz1R@&I`v1G2w+rS6TqlY)hV2QC@SpLr+Vh;Ob%;NjY^I4Pl{_@<;LH{UMJHv+|h6&~441cDe+R3S34P?}gm77Gk;OOa& zjGHK3275jGu>2Tury;#O>(Z}5>Al)eO-M=E77ecg2qeTFd40eD zKh>Tdt#|^JB5xRirsS_|y^QDygyTBe*;}l_W~i$x%BBx_yvHLnQwsN*aS~x_ree+U z(n^O|!~vG!!PIEB$m1lQ9UCY)(tmpaw$=^gG#2KqLt27*R{peR$eT(U9R&B^vS5CtAyoez?0t{QBef3b0g0EPhns8F>M=5xy z66wxt4(%IycQ5T;khk7%Dam9}AZkMJ^vV@3gzIudbu&m(YI*ywpu8D1?FDYYi_5dq zH*e3DW&XR3yk9hO(JHp!O^7ol6iQ2svq~v1Rt4O9WW?OmZ1fU-XCt^UaEO}v9@eob zWfRt3YHFgms4>5_MS*MG)Qp|@mZldUUyA4qC%vggWQwS|20cDD8z3L&P|o2t;egxW zT6gdCSNp2>`Dy?$CBKK43Z1WW4?5kd7`xM8C3?$)lneQY$~5siHM4 zS;OkC4w}Kk(?5P!F>%$<>^A5Xd6o};^YXz19KQD0V0i$O_|gT6;RX6NZ{x4*w~fMZ z^essarJyehxL;!dLJV=OWCdl3Czk*VY=pwAQtqyy;q#od-b;OwRqEf|@Wv6Guse`7 zSfv%qk88;$GnKM{se5&pmK{`O#3q$Bwupr*_WJqfpMQ>p82{y8{)NbzP?EEZm%|5x z9b*rFc=>Wk{@3Z-Zz24#Y7`c7#;@uJdL0MK?dkUaTz&VhD{0k#6SPLRoV~!|@G$@R z_rG6~H@pU5b#AK8*oaIUGAv|6D3tdDF)6IuZV>0af%1QtCcxL5#uWb0r?=o)gK)4& zI%T9d4zW>xI0h#M!h}yq!EYH^sjq9X^M*CAiA@tSo0C%kfQd<-d%#H z2NI#Fa&g;(=?xVVCnlByLO(FCq|aD0mU|c}HeIW#<$uBv2s@I6v2IvpMH!*n7A)~x z1-6`w7D7TL3kcTwfL`?sA(n2Cv{!JYPbbv1+;hZTq_#f!3eQq2c6!G8d0_(@(rXwf zwI$!ZNN`AIFr^tS2vow3xlQQ>?aO8NHGqy+O%h>kh&e&3UG`2KOjVBA~s_+5EAyGVYS|i*H`BxulXIT6*>BID0SUb6q@w>Cz&VUOX-2i@VF(- z!n<Nma@mH!UOXi=yk9)>0RVHsU_2`cQ3J!xDYLc1am zx`9%~63Y>@`A!r?N{Pv*f=FRII3cts>~}i6fbeK*W-dVJ*gZR2e)GhvUu3BRp-In%}fd_{h$wW#*3|x|hAB9F7R&8m+nm8C#eI&b(`u zV4-#wcb71BLIKDF_{#up3k+ChEmT|tdfYG4ho*)2&IFHcLV^U0b6>GGm-phH*7@nh zWd2xRB9LgqW7B3x__ zry5$yg1tUF)t;SdzYV9_IXcxeCoQ-FP@NvVu`pC&E8Seb#hZ@Op?Et?`|>35m?R_3 zrR{cc08?B^Q#tvOJRs0lM1dKZ^I?}lg2lYiIp}#HD;Y8CVFO`@3L%j*suQdbu1-*k z*XI=^%Zg?!h{n}5$5<20%jpY60Nu%orzuYl5tuqu(Z*E4FDd-^m0q_Agsrj0716?6 z!w}4b)ukeGb<&H=JGgrp(cNvE;g%xyz=Xi>`fV2q&zZ{gVd;RY6H?*3);VC|TI0$- z!F1CM)C9zpJiMy`E zghlY}+px|E4q?RoWrx?RubS~Brrg!K=RQ0=YE zzg%Wjn?f_p((@MSoI)>aMzXf9nP`gb6Utm}D zspIKDi%nWm${G^Sm5HUl#T~h$wTjP}%onqAe#ezeIxfLF^uv}?mwxJ<?so(~G z-=M7`Wj6OCarq6%W_LFRGVjYUG>&bbSRMOe+oP`iu-OIL=e~4I$`LUqr9Z(@pCe*N z!CU(ycyb9lHGbveMW;kN0+-nvo|wXDpYA6vG_0&-P3tYmjcIH<1OLJUz<4m|AB->O z^+U24OP2GtoB^Z(&-*KK4A}C*@(9!?sniF@3S`#8QKeqo1D(gmQWkV<*2`P6kj`IjbVG)HZ#aAJP9oxhk+*s z5kmH()gFFu(*uY$hsdZCSCa`fmmQ3 zQI7fC4FJDhfzd%8yJI!_=jr26LmZZ^Ex<%By||9ki*w~`^LS?rKy`5Pg%oQaZ>zhZ znjHwjh1SFKmKMkeaPX5|zP>ugZuxrCEbbY2c9Exdw8jpS4+B)EZ6Ur*L62DnOV7qqyE$HC}uT+wL6oLGXaW-LH`)Dq3O{ zy^%s~*iz*8yYBp4v$85^lOD@)@S|rn_q?zAPE(ODXrYhY#SgDzkpk|f_Cm3)Em;+= z>X8=IX5CSO2Y{6~EYG{zGiXY=7p%6o;^K$bCxkEA(*9SlOWTcQ1C3l`jJ-?wfCCRx z@a)aOKJ_};e&7F5Ph7wGr^O$=Y6pLMuQ^VwA4n(>V&3rMx?SIlNth0MK5$~fkl{iltdfGu-&+l)3$L<5#>Hms11DXO~y_mp0fBd``C_`wNj zqy)MHv@qD`sUYkFSAc|qYYSULG1%M*DEgE7Bv{~^@IjU42z@4G^O-yPHi!@;4oT>p zqH^g*a)D_ zJCJ~it%({!Yk~3W2$nIWXuUmwnr6JQG0_-N8y>6PfszWW9#*qV3f0tY20KN`O)YPk zaH$EJ8(fEkKw_f;aA#};D}-)Hl5MD1vo4jpq&b|CZ=41Yvu4=cperq5^9Hu%Mhhg) z@S0g%1AV~FLbn1Bc7Ms^hG|W+*Q`-pa3=CIO&E>zVk|en>|h(B zy;5VW7*`B%6O}Z4Nps)Wl2Bq7&m%HQ(Ozu%&-ogix+zuu5(hO_d zk`2Av-_qPkuM1ac28OhN&n;f2xI_{n3T>O|X-mmhwN2Bgt7Ny(0QtwgYe>C`+i;OV z3FWD5V_cJmvI z@fu9(Hf2&D=vo#9t6{l}_MdhPdMGAPaRpspC(iuiR29MQllrvs8C8fTY2y;W>}8`8 z?KjgLhuyfaKr-}kDz>d~UpbzL&P9((CDxt&F9{ z|5d;Lq+UDT+v^{hZ?E&E3uH~|*huysUZhE9>*8U3J5^c;L$fm~9|>o4CJ7N8b7MLn zk{05@(w-hrqtlCXc-iWOYxob#?US9vw%ssI4m!jnSZMznvqSW-_3!XEP`AT4-du_H zn&~ekcL_6HLYY7+wkAlg+3-4FRJ3lkXrnoCqfhSGPn%49X?9FVtdx-7dixDaXFX=d z&FW$kVE2;e+3oUE%`zoN)3)9${n8uO;_`{kGCgJk&^vel-PnIHnnLdnHZi#4VFA>n zPb(iHH)&F<`hifXGa$Xf>C#VvbFwbjAN1Ew2%oml`i&AH#lj@(JLip&yKMw9+7zfr zlkAMp2BY=6KfO3NMEXcbfn*P#O%vSEk~XT`U^hdJx#kDJ7Qv9A z+AL#||fXTn(^p z5z;zs8(GqZXJ7&3E6=-Dx+)bmmLlznf+zyQlG!YCCL#B)DfNbhvv)_7}>wo7iE z5DL-AV`jkD7(xP`^qM7J&QdFN6w2VPEGC3=nR)}>*~m00;WP3h_|Uzc(7aj{@?MeV zUOKB6N`GnFwKCL5oeb0g)2|jU^;TxFI^wQJ=g+bJ`MokFUC!A|p86Mxpk$ENqJiI25^ z1WnwdVS7*2NoRfIqBrTiFEDv08xyDik~JmsY@lREOQS$L@9B0aSYz<0tWV(5e)sE| zMnK5@X4Eq8;#sO-5wrFfbt93bcJUhU{-H7v0{ZWeaXgENxs_d#D`sov_>=AjfhG5? zDR#~p$_v%;((7^lo!sdRUN~o2J%0EPZ{2c@VG?2@I`jcE@F# zwhktZp>0sYP>s>mH+=0XyV_7?2)(KEbZrXWmyUEoJfy2H?_Wd2Pskc_J?lf*?(K?;r_RFl^k zW=dkLK#mB*9k5Y#Z_xaAX~uq9XjO0?@%IREH&z$X#mlm7^rcHBw}hM{t^+8j#!j{B z&;?knf^k=Vn-MudhKJ?S-%by(lSq-ya0tee>N8^FO?&+&D#m1wdxC9_6pL+FmIYD- zW@mS2X7z~nBEh<~sARqzxij;7g}^D9o1oyPck)szA^7cFPxRL205~E~?TGeI%oISdB}*6nsAl+|<^>vI>-pU@!3O8sE!!p^|5>xz{TvRtq-nZ0 zrU<4EZ9cGR@9lKF2C^q+1KAI^fqbedgZ=gh5D8>QBK{U}R`8cM##m|dT`@;DU8h`u zXQ^$N2jpTT)!Bkt4-5E3Nd;ZAh3j_FvDFu8_zZgx01FWFd_Vqi@5iMD9~#^c)ECn? z*JZo!-jE)2yZzoAOOY&j(=eNS<8B5-P3DQHuYNN$0o?kSZNome3ecWe3hcl4JdhhW zY>k8j!?MBxJ#e=dRwFU)?Aa@jLH+(i>Kg zzqPF15_#uJv?m%rpun=0D>0+e#E_(jigT3$kmAoiR5e2k#=X?&VJCgaTv&?aBj=XU zx1(SRL(j638tkFl>AN@SlK(?g#8b2HW0RO6=fm>3K7dlVWCrI$Cbw*xZkr$`9mo{0 zx7}hMT(9Wnj4tCq^ZmA;#+p=A(Qi`)7IAN&LRwn+I=^Az53?nJYoeD;egyT6xIKHo zGPrH;K~vnaZKTe?ZbPg^Db$8nwx~SZb8{NV547NOPLV%DG{K&W6Y@?r`kyn%Yn*v5 zb$cV3dM6ur|D$XYPX7U0WTH-tQ4eyD0sm>{IJ&X82!FTvT#<7@WNlV=k1JpXiNmu_ z?=D7bu61R1d}hOC-P^%O8>)-UiX@=!HtYwydJxy>k`;A{vouR8 z%GkA;JPO;M=XxJo&3-ngSXsvY)ArDON>(ZmguaFJ+mEB!?y;x4k{b>frH+zTn(F)? zEnL6_`oA;uSYE3oIVFmVb;0~Tth34cTynR1L|RY!Tg&fg!7$673Rj6#u6E?lbZUX6 z$F)e{ti%VmYaqLlYy6 z_waQ=(aAsG13m0vq=@>N<%Mz2R+Y6;!IkqOxlF0!J{(K`#>qmTA!mUOQJ z+`Vc~uFV~BzQ$DR!5B&bBq_K!+AIyTVAkvt=|zfYuz=kOJdp6M=p(C1K!|>E)2y#F zeZ_BTMqY2I5UlV(jnSYtIcC~4G}~Zc2_>2m6s$Q^WFx_unr*mnaFfD8Q%7u*!9R&+{3J0gv|=!DhMYMId?=2+x^l^yRL@vi=eD zc1+GV!rMXL5R6pbaM58Ub{i10UFmye%@c|>2*3pZ3bNS{#mly6s9>^H#Wr}HKISIG znQOs5;6+GdvhMLdvxO8Wp4knHMvz;#T9>_=zi^z_0no7zEHl6*Rne~bB+S%Dtu5b` z$!-+@W{0=Zt1ACc7O`Ks_ur-%a6MY;o#d=yB7%)21^KEwr??;wUVBp$>(?)Pd}yn4 z^*DwXLbs7ct_b_k)HL|N{pV`_zwK)NPhCoV1>m=7C3wuU1B-_Fr4h0`OU1M`W5R-A z?yTXa78cHaz#!NKs9SxGqe{E0@d|R(^&9VrRaMI~FBl`aP^EY#sNxx$SLHN19 zR0*C|C}G0?*7_(^(*{5DZ@8MhP0 z429F($_{<~f%Re58S9)AIajw2DU-Fo>2atp*eVWPnU&yq+sc;Q8?bJpr(E;u6*&{C ztyx!KXYiTW8BWw%$Qk0ct5;S(33fcwggG=*2K#>O(-8bvlD%|j6OCyZPh&5wXx)Ii zm3}zgE0z>`zYq^So#!hXhJ0e6j9uj@`%qZPc6e->3;8GTD_7%$yvW(z3zgHCCoqJR z%-8-rsUin250>PLm%N~Lf#6yWVaz@kHi^sH4Fp{ApC6DTS;L4jDoDXBNSC27Tht07 zI@`x0d*sp0-&Hx7^7ZSpCHdZ{GKMW9Rnzm=XBwXPmbY8wA9Ox-zeko7H53c!>@-BySa{BqZC@@Amk>#MxIDCiSiudm40dXGQ#TmD z7E=GpvNJlvyHitN6jc$FMx?)A0)#Q~O&{zBT zKtpxEHi>lM&;?LyfL_h2!feV_DT}RSSlSCWs27)Kr*Gb#EzA5NB#Mc=l3aunO9wTn z?JM@|*k5>6u?&_`SY~qT*vLv2ay?$pc*a8f4ofmD=t8gX!_}H*Ge@IoHg-X}nK@~` z*(Aq6{^}EdWT9}l8ZrOI4a18Cwf35gSJA3sb;&VexhE}#b)-p2^63`%p+cm)V$)*g z|IgmPH^*&b3FGkoJ)Z*QnR+G7s9Um=x%ruyyo&84dg6;7OOxzWl8wA2j_n2?`R(-gPI~;1dzLZw(jXR5iA9n)SX=B zv>;Fk+wt0d-z{rQJz1Riw)ly{RW-fS?As?Af|frGdu+j>n*W(5b;f&q zC;55@3hk`zwN&U~Lnl_L{2*uz)mA3T87MI`p0dF2VJ{T*m7m6@bz1Q#A{QCo)2FP~hVxBVhJ z#!n{%PzM#{KEFsGGlkXcM^??2xIC-W@+p;2&@f#<*?QBg)pHO7EVc(VA~*;VN#XmnJi7@CxmFcUYf;a38DNZ}@!6j}@`JW3_`HD-6@lY_K0I z?7w;sq4;;?G;pJTDZVSpsG?YLG01PwdaE{}R8sMkxnW?&q|t2Kmtf30pKk+fs-=St z1bcqYv{n);g4~XOK1Ph(+Bs48KKh$AD?;at;vbKbTY)!i|6KP}Yb(k)V9cFS<|f)4!^_%UQprfP7iM;4N?<1SxwZWz z2iD1XfDTnw2K{?`&w(i_=8G$4o>%5Lp4T}rp(*Xz2?$u7Zqc&O*XQHU{{ntPpa zoLFync$iAtVihE}3$1k0@<*KK;<4eub1O-Sp!|mFu09Y(>Acv7YF*mCL03;M0E$F^ z`O_&#a-Tf<(`oSV-*4W@U`x__^)B97oEaWl+=?OAYXT|j(uCJ)T52yjAYX(a; zfAcqaS3^PQ;5UK5cV> z1*4zI9i>-pb|dCF8t#aS3l?_{u1ng{xZom&WMCec=bg-=?~frqLX&?@_=%J$6=OEB z?q|iUI~jZ@b{)Ht`Le4uV;Y6)eAWEtrR%8D(7(X7vKef~KHS|a(#6r>mDic7AHVn4 z0Hyhp`HSgUawqGthA=ETw0>nX`M77hVhYLjRw67N*R|nmewOlmQ06=DHM%#tU6bu^ zqgkTCP3hG8_M`K~X-17RJ5z=wSDfvTS=04m+i8CRPdqU>Wktw>QUfvZ%e5;BdiGkL z$eD90wOvYgxTC+OwEBIT^zV9A%X~m0n||2s`T0{TVY*B-X^{*iU>VxRw0r01`T5hG zFD4i2mWv@pI@+&nM9|pZHj_yEwUH0&?p?y&+vr`_cL&1~ajmotynZ|BRrmNlr4l+602kQ-6H;aEktQ_97J0k8JB%X)0Ek8Nq@0faNjzzn8CGHf;y( zuR*}Jey+xmdON4+sTY3d+xoCtM*BiAt`MHj4Flpw|S=CA9Gl=aRT8!h%RG@@JUoS(y(t*dkqP}_ z+a4l&nOzG8+Y`hEk{enOxeN(TzScJ{YN+NIYyp{u@Zf^81)N&MKf?WBBa+uyyz4UJ zu}SZAVTjlZoX{}89Uo5h_ABq1K^4cIh=Vu+vaqpCP+Wdz*%I_SmUK$11UYd*`$dK#ph?hN~ru z0WeXYjBA{fwrb0;CMRJbw-#gv!Auf*2SKa_X|B3Tat8fUoWpczAh0u#Zegbtc95FedD zyu&%US6ykUIu)oT$tNz53#4f@C_hfzw!Lx(EIVcvZaPkyDLvyQ~N@*%Em*L%r^W3Rot4D8|K>-a88Ek zVmyG*+@nGU@FM}~n`67lIB-973C&xLH70%5W^fk*oIf_r+n_JDX@h!f`pOPyI)^N` z0;$uBoe`dgaFFb{TVGw|@rR+kBwL$oVYpqA*^;dAU^z>VFZ9V=Sn={!P^E~eph(0@ zB0eA51{AftiVtoc4rsS$#?DPM=WZ!?+S&^*$=}#4LB%eHDnH1J*s3jPn%Li%vwKh5 zGQ2COmNDzC94sggYW9il+{4g~yIEv9EHTcyGU${-mY8EF_6$|7LY5e3T^R;*5AMe; zm`U!)K_Fw67&xmz5aX5@-?}mgbifjm?9<$andIXfY>^6EVo;VKU;E?NWr^{`8^<+U zR+-_34nGUWnP!^&=!DqA&0(E6wNZwPRuRO5gX#2O$m!JeWvtp(srlqDh_H<32HEwz z#lT5wA-%By_!cc7leMj9_>D2^8?wNiSgVVg`Qpw3b0a3#m01S#&UK?M8)fC?CaR~P zD{2cYX>v;BKtIEw0Wi(V>evFCuE>gu^>GbQ|2UAbHM6nMjzAvIDj^6{#ri!<=Jo!i zc9Qi+`#|gJv&KSJ%V2}$$9Y{XTpl;(82wkmZqN-D!5I6lv9oZU(;F&zFyp6dV77iW z=xQL72e}hrZ@<06A~z25(uxSi?#?S!R?70K!AEIHovV>l-_GM&Um6Tj>sJrMp{CoT z#7Yst9;5#{{QeK`CP$wg9)5Q^`RfmVIQ)JJ|MB~y&yL=?fBfO-=JzXiG1kOij3$m?M3Rlt_+4F~e>5-R^b6`kNA3 z!xRJrN`fZ$@9E<1rv61cr}WM5XVLzKyIVdK7s>$OCNy`TjoEfx>ozajA9Jk2y#?)5 zKQzno&k?I;%4{S;9Rt-q;y|@a+iuW1Er>rGGS`GCH4}f92sAZH4P4yGs6R%j#m5+> zHb$w9QEEeAj!|l3l-d}jHb$wXj4?`Wj8fY}l$uf6I%3rl7iViIHi2rtq&PL(=J_nk zc*WEeza|L*C>yqfEeKEsaMQMsVoLz)!#2444PnDoPPH1p1CF^@{Q|r!CwcutB8pjR zqV#H~=nM&x(UNNZ0VRRp?*{8!2gp<omVyhh9Vai4v;;t*3YoRU3 ze_MZaD#17Fzw&0&iW-6~u9q-uqPV2CKG=QGDe|_Y0+9WZWSr%@7_PQpG$IqY!;(!b zd1b&rb}ueyPSv`O2(xY7vAJKv4(3cYXO3`L3XZcSk>1SXo&K6(%Z$_s$VIiF%qRr_ zSxbq<8VRnjO2(k=CHh$9KB+&F2+@daO01!T7Pr&!_JMjAA>FjZi`!P>e=~dA zHIIRUkcy)sJ#IjAr@23?)+Zi)ik7?*a{6?bPf2m~5Z*KYd%GE9Q{lDer4(6ZA$S!mO3+#h zJnb}O=TXQqB7uiKZCaMIu#XbpM33m+iV$_x4{|5+Gq(GSZb(eT7i2-D8r0U+ywFBY zN!h~m##>c|qGeI_X;VbU)ipC>)m?Y0k^_qR>W5?WM;g<= zpf?#wkwrDkyDs7;SYB^y8SXf}TLJXF_WME&a9n7z64u9D^{5R*nXUKHDmtaTvAH_E z4+P0+l+TJ;TD7qQG0WRD>^080M4uNtyGBn52<<;d<6|+)_tQphY(n-6XhJ4tVLkg} zYC*Qbivj2ekJm;AxSQrrK&AH8WV&_Re!Jwi6U8T$Boi8peM?&KHCaO-VDggf3oYGG zaWL}2-?gyu`tzs%lrg)JCsv;jm7QdyT%K6yyAz{5Z_kP|s<;@?k=?yvxM0SM!d7$R zbM%Ci%Npe1&IEg2|NHGeRdSx*Am>0o-M&`v7jvsT#1XS#(bxB}jXy`*jD0uXdT-mb z|0Z4stu9`E0#LgRmjxYGS3S~&&gVv}$Vra)4H1IoM53BLHAol)$!PIDc6aO~_R)6| z8>BBDfWp`!knoo+0*Uh#jpRpv5F|38515v#dVh6Hbytl{X1E~duadMf`)pe=yR?7w zYUoGQkiI?+U)RWk7|;711!E6~wnpS(y(uk!SEjwdirnIKo^7A^J2P$cV{%v$T;kcq zIr`Fox_d7P!Icp|pYj!^>1|{;U)*fEle(CT8V<66ye7qSx~R0?YW2yVv3&oQNc8cP z@4rjmQ_n8vQVg2zrzyt^Os9@yK$0*?!3pTavVbTB@yT_5fDx<0mf7cgL7Aft+jzDr&9kfy1aZ2o|KBkTk_h(cT0ck zj8a1s?tWJdp&Qhk!FvZ$mg^-D*{UCBpNIyl<2wDu1RKo=x?0lg`oeRbaH0Rkygwxy zaR$7XglBeH7efpO-aC$CIl=7G?h^clrQ{jKu>c{!1+a28Y%B*hcK6kRu#>(pBS&>` zVR!oW2^=OJ9@nMJ?aiGRWAJKFKfmUc?S6jF12(`<NGRS4!`kAk36PSA7XuLBJb@t@cr@DycY?>z$JrcyjuuPd|-z z+S%-;6DJGtPCFghRB=CKLZ_V}*;6}aOYOJSPSm^5k%4|5%s_X!<&phN$~zyJi`|=T z9?v5W!}W8__nJLEAZOgq1`ona$rRtt0goP6Uw(Kb^E*uc+F9ZI=}NL|FOs1hpyC|U9%8TY`F%^1R%O}2B&zQ$@r zwsV{lAP(Whz;6>^?wKQ-ai=WiVY$mgk^s^Y0FtwlhZNHc<|J?D87DyO$V8527bk$N z4FQ94ijxUlT5dr+Yd9hEU~kC;X_=-2^Gln|(Xezgy#2utWBMRN#zFH=r+LQJjf#pF zHXgGnsjj%Df%mK(qcl8?+YroGd9SF^Wv6>}x#2{u|GZ-#?$LJ|7#~Uh`(I@f?z?#L zWUIEOGsXe&05OfvQaWS+^{wyU*~K}^1cA(9T*xWvsAprhI|$WEi%zD)N|9Bm!dNmo z@jiMd-d-F6%W8$$MBiX=<9S>)xC5I^WQy!vHLMjZe~{8<+SjKPNy80S-lMMs;O($K zMmpHI^%*adcE>VSYe%T}%3W|z{P2xCG0I^C?F-1>Y#_9&RT)JM7X`nS(P{dOT%WsM zpG_y95wxO0aACbU{xX6vA@W4)i9{IHNZ9yF}5V^Pb~AvW^$fe@CBV86kr&FvAODWH`LM`259@#uTs~oj=|5K>N~``M}G&r!{VD z!65Ft_2xZn!yYm>9si28rt09F7n=nuOmKj!jUyciN#UM1tNi+I3yB8>G_&4~z=pms zfwSoNAqcbICUlF7Cw!&Jad$hm)^R*|;$l#w$>TF`Ik_B^wFzDloTGv-(BZdd&yPB$ zYS`l?!)3XiqVE~{_Uw5J9+fr_EcZOW*jphD^7~TuAA=C9}v5Jq2r)Y=z0z<%vMhYG!jwW~i@9Q8q=&3sho(S40tE+yJ2|#HRsMAvhEh~WU29>{^F)vJaxaeyY4teU07JyRR2LjPovD9uP`1!mV_ zHlC;#>IX7)B`}j(a&R-D0X;Oo#S8bOY(_^;|adWxoq99ljw8Ga~(uvS+FX_9I z#CY>el?^R%L+uPI-ANdK5?FvDKxcyANK7#o~mp$v-cRq2pUJJJAqN zzB2dgr1u>6fo^Z@mCypP@z@S=l{-}X&xyNP8qUN5+Sj#0XW&vLc~dTgamna>et({s|LT~#Z@s@04Ly>LlaRiQ8=ywa*s4Y+3kXXqy) zxZSrE!LD$>CxGOfNOquXOc0ngDa-h(A1#~DcJEs}4rN7|Ue{xE8rahQ(3BD{$Q4yZ zkL{whomVC`!`FrM>qzPMyXPOdnW~V3bs~M3SI;ju)uMn@7FRklA_7&`TGOyC5}SGG zcj+7wh3ag}SRvnJHE2#3FL1E3;`a2+J6@~)x;(XWQN{~~Dl8Tx>}kET4ntY+naeWwer*Iiz-P2v5^-5k6;2iOFN3p1H!72Xf+T$ zMql#Ud(j4tMLbIW>;}^U6vORzbDmWz!o2+11+V{zW173W<_lh6wgCOPyk4ASVqGeJ zq6&HP+wyub$vBe=GZpBs9ZirKpiYNEma~Eqrhd%uE|T?=vn|2e!1MncQdHaJ$m)6< zqg?KfQ7#`DWDMvimydG!D3_09r+`p~AF)vK`HHJnr>Oke{ElR^E^I3HY8>;)Yx_ z1>aJ)@mW#m|IQ2m>tXN%yAcE>pl45>e)TN0TFi2}#Mk6lzfjf_L0sfSOnp7Ye5kFU z1R(dRE=e1#zjglf=T}Xx$@((Fdn0_;S^qVg+ppC>%5Lw8)$YJ%6A6Euy?)57^&YZ@ z689~QSq^8Ezy{;kkisNWJ4(fvW0)}}F~waN;tIdDhnGkQURW=(XJl&1o`Kg_6V;}2 zQkc_SJ->YTNz7p$M3WU|0~cW2#d}=9qdP6YuqGotJQ;2ge8QO$yx6GFXk-yX0c~6_ zu=az{a#ma_I~}oMSUg583V$Fs9uC=xJTRs-tEfnm!&L)pSoAT%(6Cex84mupoESK| zCYQG60(5xsjjPA{Y{Q1j_%#k+;R#sfdVZ>zZRhU^G4LHf_WU3fR@DaXw0X-5eQ<)9 zW~MXP{@lLS5$>H8l~h_@dhI&%ZSG+QS6WcDtY*`UuRI2IVoRc`^~tQ@vy&CpfHk{P zg3c<%g)~u8Cz38ESY%78NTw=5PH;&l8D}?IisnpCSNU&cNwNuM`NYh;&29R{4D6)7 z*92l?J8oH9xZnyGUc^lOJ}P-GO}e)cf9j5_E6Vgjt8OPb0mp#=^=3etfSp(*ytubV{6Ovg{EGuc1hCj~L}FlDTK zYMtTKO!63=6-1~NBnJsoW)?FpUsnYYHRLXO5R*|0EKRgJEZ~YJ<`Qnd=8}V;m9Sm1 ze#!=x^^+=N$@fpGl5X0)@~Xof4SEu2b{geaDp6PZ#ww{m1FLzST=ax7hZF z#9H62O3sY>PrFOXm55j1skA|o(A-s1ZMA{GyQ_Of0v+s{tUHdd=j+=b%m-I^v&(adwLBYP=C2#Fxx;RYS5C7}Wpct#3|R#;`WCL5?#TpaCFLUTY9DAFSXN+XET4B+c`t;lOh7XWLV**}+ zj?lHr!J0xZhE`hjc$_PX@LTz*(0**g8sr$p#S zi@u$|b)Z-GbL|uQ`6Qga#iR>403pU+F5w}kOs^X2RC$KTU>3z%G zjK^S(H-9jdcl^Ipv)Tsd07Em%<|`l^Us{0_s^lPNPjF&t{j8pkTakNIpPjjq&13NT z=7Scd|ESfE(f|DKZ~kK(I}A;SCrv)%L@JzJpJYoclsw5q-uyrBDI%w9yed+^ae8`s z`lnAnh5tQ0J#GE(qeq`S`s1UA|MBqCKmPgQCx1FUJ$?8er;k24ef01@(CPgy-Hb{q zEdJy4&fnTx+($BgTYGE-zMUGcO(lu2)n~wgJbi-)>H)e||W9OvTvL`mMo%iK`0BMK zR*)zQcA?)m8>yyPm@#f*bu2Z@jPJA{VzMA?s;|SWqD4*w0C%6hIh{WIWNNaD-CCy2 zj9br|UHFX+`9Q68buRrkngr_UECjF0$Ef=u1J6wxE3$wtL+0NT)Uny{i`kqF;X#XB zUvK>IoLYUfEGmJE_QVY@SaJbH$6FsYKT)=*3M~A$euGSj(8o>9NX;BwT8f4-K{z+| zLR?%3&5OkoUQ{bqe__jv;8;GNZ%ah~EjjbKihb7pYL4TZ*59@?x{fb45{(l(HhB8x zXE%N}-+gM{ZGG1lK7t=MmV>}&4QuQZDa;IBd!6mNzP}C6a|e8O`2U|mb;rN|9UZ(T z8D|+SNPcki!?a~zb)Rw%^zU=}=ju4Up0CxvCw;7TnLy1^YdDq)ugW&iMH^i0kJ~t? zZ@ricCn;&|1J+Nm^Mn}L5OLx4EZN?HmIP_$apC`|6qG|{EcCE7Ip2V4Ub`_5$ZSbg zb?y-_2|K$u|K^j+)}J@z_?7@}$_?O{@3-5a<`M6f_}Y#}&@-}^I`_&O*vqSRdYG-T z&`{ZU+Pa)-d=3qAK*pUS6H+5xhd>A*5TG3L1*1RJuDJb0$QPiLUsf-1+fnmC9ZV;^dn{GdZG*fLN74+xxqW(5%Ye> z4gtYNPnx20hMwRRDW2e-4i@`70KL<4qBl0}2z()A^Wp6X9xD&@otFu4bZLFoa_N|p zEd?#Mqc%47wT|ogxWad8fdQgBOzBr)(yw9`iU((*m%Z}l*o6~g)El+s#X&c7^66wN z`lMA;Q%*I1?|>P21>A19ED5vKCbuhf+8BUN=bbIZ>`m{L6JzyUnoKlfG*Ki+ILo-m zO$GEW6XKE}KA+Q!wwJvT5&u1_k*X~(L!@%^rxQbZPg+ab_}6c-w?99c-#TXYJp=Ix z8pQ*@fWlpLR+#Lt6~2Zt)RiEu$O~_?JAmr#H-X{bGq1pvDG6&x8o?UZfzpw;C6~nd zG2g+!e%!Is0WN=gJB}b|D=VYQtW)-jM%YL;WF`zsJm<7UCcA z_w`ORgf5%Y$STKG#dbi(g(;ajl^p6Y)vfp4=uL)R7cVk!Wm-o%C zfVM(wy%{MI`BmthkzqN8^`qUOANz^x$g&2ptS-D8d6qeyk!OuOYi~SD3}RAZQ8!z1 zUF$qvgTPcQNL%Fs!*m3L(ycBOczs#HoSpI@(!3wn&*U} zd4U(wb_;jCj<(v=fCG)T!#lT z6SySPoXSko-}OY0g5!JwR?Hh*Jm?FLT2c0#u!UMS*5%C+4S)l~VbT)nt+Yl}nEWTF z5=?vgsGt%VTywoGlVJVm=KcY?qRGTYGE9}sXH&)}1<$VMv>;u%SP3h8pPg+Ql6eV7 znWiipoOQoe6J*1+;C9vOLdT@Hv;4c&1%qZ=dV=|OxBlTP2XzmwxSAk$))W3OpY?wi z81xd~be`PO=oR{&H*dIH)2I&7#fbK%Qkadmx}dHT!JCboC0i-`_UBeo^bQH>bYh+mx=F^3SG4%F@~X@9|Uc~HLy&e^a8r-2gs*f`Oa!D6Ucg|RlCgGsQoc;nM z(ZXJB1&LV|s42(dVS*xJm9PWIAd=18g!NI|KiA?YIz@+oq*NV9xMUMvcBD1>;|#H? zrW=8YX-Ug{8$J?*3iboZlje|GxU;D!6DzjZ-g|>#b(W=G)Nxls-3U;$fqrJoV`V$j ztCFHEgpR+lwba7a6K^lsCp8H$K@rmsAo+bpifEfGlyW0_C*3<)K%*px$U9$X=jlps zn;5QRqbHkiuSns`X4K{`04a!JQ_70&8kCI?OM*896U<1eQ|rcdjxP99ptQB~GHs=B z#0NB;1hp$|m1tP`R5#pK@3`LAelPcHvObXJxb!Vr(#<@y;M_IMk_0Z1i~sw^*l6t( z`;^MQan6plimm_W*;^{LAn}wF`I0O6=M;UZj(bd=edBpTk@9*$!wa+HI(o6Hc9X-13{SkTLCBV`tp7o`JyTGRs53e?x_5@0n!LaOOy}jw5ogx7pfPHiIO_mpSF6Xil7|ok#WjI< zGv_NkQ_7Sh%X-?x?QQ_H32e$M0En4Qdpt60musoW3cO_yExv|LP+}eS;gK7{RE3LT zjmQnnRK1Uook^APecrW~$L4K~aE1*5)gb4zS4UGCV(hYOxgH(_OnUV?+`lrBfo*DI zRZ-~OH%^=FNhWz~5bT$8niwx-3k!`;(Dri~1z)WFa{$@^?jQ>r zBU#O?44>lLc)4+~qhG^~QKt`&QKt`#QKuhu`i*&yI{m2Ak2-zF_@(RgqhDi`f$A~J zK!GvJK#2<)Wgt678EBM&Mj0sdxy%)bm%5+jXxNaFcBbNES_j8SaEqT6E5=_bS zKn{#CPG^v2+uyeiOye4m_0~wdGM4va^b=>~7;+0B<&v+6P1P!SekhN6V!_88n(jRw zb7;mKnzS66WoLH~HvofONeYwEv7J)mQ4~$^{!hepu$gP~9y4k*x>}@y?Dqye%<6LM zswVkGdrd*kVKicsW1Z(DMBaHQ}jhi5hI7{{JVI;(B`5y zftX6a&N2iWk}R8cnvgo<WZv()WwO&3P#YH7JR)l<(U*VAqBU^wjr}WV)!N|-Y}<2MmaTyhJLcD8 z-P+ewt%d6<923?x`prX)(PtpYolHb%7c&vs9j}L*i_l<`5gKGRLc>i*Xt?wT3OHFnDM++Blf&Mq0yJIS(7W9p2*N5TkG2Z8r z!Ri@Ni8Mal-~u}JL3pB7TJ>x<<UA!C+Og`Pu0r^ZN@+C;HMpB?ZJe= zN>ARaBR%21z~9qE6Kfx-nAcIGnUs|+lOmRz(O6@wt;$$WUXE*!G4LzU$#ny58X@Z})FqPmkW_8b`0qzlHr#W~XaeH42&E zFxHcn*iPCNu@;k(gub?|Xk7~D6WLpTi*fAND2u%nVy)4{@L3}Vi9M}<^cd{7Kt)1@x99o!T=znrE1hR#6@ z1kkeyVluC$M7Td2&!kQR!y*o`=$fbWf@qn{%>7c$p=`{PAh`i$;8o?wgj;DaF{=}% zjalzn?q7-cejSxEBpuNNJTgpTo*S;rRfhxDU{PVw#UKT&Bu`4v#sqd>+L;`Nfjs5@ zvQ|ZlN)<(!v@BM~gzei911Z_^;T6uJWv_{|{Z$+hFVJUuKtl(k{6P#fhlM7C>16H> z&K@?T(|(1}WDCzRoM+Y;Duyt1hWiMcm~DGyJL%3oD4Ab8r8(9A>rheSq?Xt*97rZr%6hE)qMv1>RAXd*2~@g8*V+><6o&{Ia#5V#Q)(x7nU_(|HNa*(1%PUlGOGcyW;U=h*u>#AI#$*HjwEWULHhvep3@ zt&DnjWNkF6K0K1OrO~97ah|eJ(8nOpqjaQ|(%XsGK@_bO|7@14(-_ghxV1zyi=?sy z)D|Hh0VCNwqja$`IMGfW1Gql7@=96vjbcG$<23F!CvRmVL@R8$GEk~zgbLTxP_E~pjhk(=bJ20Rg7`scP3}!ZN;Y&EFs7)tw;7d_gKyTG`_-kF^ z{)&Qu3TUGb6aDlItlL=8P-0O~Pk+}mBx}D5hoypy$@=h8qke=)^xQhGAUtE&kUB0Q zuK1tEBlN#PzXl!=*YFvXu`8H;(Eq8&Unt5+Vp70H{r+Ti&IqJ+TQ>9p;$&WWL#?KjGxZMxRR9PzmXfDF44f8tWT}cz@D>jmY7$J zGdIfsD4&uAlm7P#_ao3n6?P=36%0ggb2&UhIVC30nhFlCiZVlML-pFuY(@}p?j=x% zAS*bi!nswjv20&m@s5Tv1JiKE&%H&P#iY;-OQHWrb%{e7W5hf^gM^V0DRgb)N)tx4 z`V)fx$HHN8aO3A`Dx%>0|C^hi(dd2wc{A&OPyB5}L)oE{@+9uR^?#(5n7E2!gB@`l zi@s3WW{i2P3qyFTH~5MDud*kzqXi#zlbI(6|g{{$?e;Oqgl2*hYBpUHNzfW5(z= zCq6x!&y1>$AV0J>)0mg>znWt7VkXf*bR4RIeh)%FkVWLcH~|z!XUcEO5P;#!u%?&> z9fVLu?PDuj*T9W5G!wO=og|tBmD1w4Wz==2t`luFr=wnU^T~Z)!y%aEKpcv^@2JfQ zbyx_?7_J7addU+aI7ZDzQ!%C+iXkq^WE~+au}Y4+;TDFR-D7qx2B%?LUkc@^5F1)W z={Z1|W!;Zhl&Me>hi@=exlecSYEw*8t+Z!3274rm% zaJtie$tnD7_j-KzXY7)C+{|K2Hr7dH^KYa~{3v#g)zmYCNptR_A=vktlOEt|c+;&P z^wGM6OhTjhgG(nis97lBQE~;@epOI-*S9FIR|T<=LUw z=7(~GN{*e96jyF&bn$y{^A=6|=G0XIad+O>Vd^%Q#B~oI3mfatOa;3&+tz6rRN8Vv z>SDJw`WWtdDmKkrHRy$gF{1?pjavu0Ij&)f;%eG1V`|zu#8ftS_3KkqRFNW4vKs~u zw=F+O?c>fS41*6#?2BPz;E(`t-Xh`Km~}apfhq*rw&-?l~L`%AQcj7BvQ6B;OSD8MZOL%2K9T)ZxX}J zz}%%M9TprEye{dI*y)Sw>+0(AL}}9+w-Ab{XgAzgo~90YE;v?>6sYZgA_$%yTx=?3K5&^?R(!*Z7Kh)IE6kTYo~0%PnU<1e?=CyLy2g&i#p zI%C-n=*Gc~>Tm(~EXLu~ka6&30fHr5o-PjqMbcdQ9Fh_Jgu(uDCoPn)o_*avIuo`Y zkJrhjpGCfoY|l*wa%7gzU;)fk(>{^jL&PM}6tbY_O;I=kdNfSUo(9)8~I*jysm$K9N^T z$Ye5soGrB*Oyw%a$uw4B|F}&k!x6waLc#;FmFBsLE%3lrbk6lg$3!f0@D^d_X^>RN z5)r4vMTG*C@)@p8ACv^-PIQ;i$jATVsmUT8g@Mb$%nK&;%}?D%>_j?m0GF^%+O z5gG=9|Lmi{qa^$78DaffbMWM7#34TM`74A(io`CGTM68{9Aaa<;1M{{hk6|8z3}|+ zP{Z&VGZ6}*Fr^p1HI1ANlqrHc-EFEk9Bm#y9_G)uMN2WJX>+8&+)Q8c9N};l95SW{ zle1Vy)-obFKnc^;IR(Onrk2MS(hmS}XT!qq$ijO2(3Kj`9(3o>Ha@EGNlM50{t8O& z$m=D^MCJ81an%luEqN@##XiD-_uIFKWK*Ufb1Y}vfrbOb7K^P;t6gR1w>jZ1S4&Hp zq#33CEWg$9TK-ts0~=Q8<44#j5IC94Yhp)sKJB>CVn9}jP8J-H>=k{anF>fJBNZ^o zZ)wZ|WJG)dLS~#4AZ{@-1Jb{~`^G=PJ!C|@YjJ2op-oBnQS1b)^xSY+UqaDT*0=sH zN|0p9MAaZ2y#-{W_psNg93^Nz+w+Ipf1tU4BBt0lQ_IX zDt@xhL<6yEiy0Sltz+^a`WVBo8`WQ;;aDB2x6*`_>Ao$EMk?j8VvWa&$`{C<h!eYc{_S_QE5Q&y6>&Z;%_`7O`xGNW3PJ!Lw%AFcIvz_s@1#z#1a?>QY% z>3qB|`M+ZEW%*yv9~Rk6_NPAPCTVgz)EYI>lWiIkvhX4y^4{a5t?U%^fh04%vvjlc zz2Z7}exby+vZ;nV@-jWnQ#XltMQ+kMp|wE6JFIqxz1Kh`u;DBD4-E>di8@|fqo+Vg zYgTbZ=Is5jtWIRI)L`kVsVE`cVk(*{-8)e=v@ZzV^OhY?s$(K_pXA$n>86m1W$nNA z1-h8Ma5;tAlG9m5LQ%Uo1rJ4*u0$q4A3%ivW6s6u(;TKQmg8b-Bso0U``4p%?$^XV zB%OAehu5+A;pGgc$&^{f%j? z$oM3TZV(<-4Q*t(*Ig8uKM<;b$nXOZAoeSU&UQ>-rm-Q9Oz(jDvn7k54XTy7F>Ww& z)qIla7NeGOzWc7$KHT#=b?m^|0LnmIaLgyx#Po-g?-()34uLs}6K9o2Wnc zH!@eguvgv7vc{L`A3zCwJ*Elr=xfEcGj*9xwUehqNg`>j&2M?sI4PCoPJ>$vfBkKo z_h!YTt5TQBv}hq=)5-+kLTV{Vf>&o;NK#dE@i%tRq*d%pGGWi}n-+Z%)yfiEJ7e$T z0?6h%K8b|{tGPIrF9GL*UrcV;RI)Zcf+-mdEIN|dUbS#~;o5r#p^`&YJ>?AjiI^ix zW!zc3>0s3^l~MM11kYv@Lap`lD{`4eB)nx}GU#SM2r zd6k-H@f%eMkmQ8200tOTIOr1`g+}s{|KMd-|n$BKW+oFMnVC zgS>H>dCSe+8Qf{s?O&VUJhPO0Y?bC+&Fik<<|SKn_lUm^7bbl|*=aELn2~VvTQxCH zbI8``ostA1m`Lm>`Do2!p#eVaUv=O!T*c8bhR(z88%K$T4lF0(YhVDx%}(rINBH1s*t{?uPr)Fv z)sR*o_E3weUdU$)Sc%_7VF~Uecb8e2*}jwU7&J2C@@oN%+I6a_AUFaVn}c*=2sJO* zu#9BKil5^Q*`HBsH^?kmz5eL^57B229Y(l4_5_WKNgsjB@tqDz^Hkxl_(?E2XakG{ zt0=liklznDT|^6hBBxZ!)f`;2t&Rb9o~j3>s0U)q$`MLxFy_n3zDXgCeb`zoN?_-Z zukceHe=f}W!)}+)dorNCj*U(>afI_)><$0G9)~>EZZnj@>eOSU9{7Y};IR}>J%7|f zREZGa_Rg33J@53|Dv3902jotAbaxl>Cmg$oa{qW}!T6qYnhx}Zpv|Lkvxxo&8YBh6 zlzdY*hkKz`tE{4#lNwxbQErfm{CRVI?mwVHfswT6A_2Sd9uItT`I?V2e1CPE{u0kg zkD3e**YEMZy_#@Wzs~OJ;K|mqsZh~ozxbQWHcC^p zp-fD1TQeN3G}k3c+kj}Qy@3c5PAsur19|r~k>0_XOV5B5A7>ng=>}rv*3KtRkky$> z%gPmrw1OVM)0d~5AKnaKq?ncaTYo8kKgF?=5B09Y%FbRsaPRa7$wiFIVT1T84J7~0 zyxClOd*}qU5#DX_D~zh-s_}}4fBrqUl=Jic<}1r_IZaDGT?mUP=P6<1C;?u<+i%!w z1E|i0z*={=6UuyJjCG|w3JSowt3h^C+VO3KMtUMF7-U+K6z$kAvpVm#WurDiY8y2( zoF+5Z53)BpSNquQ#l9VLif%Rk`OHYb6=bW@v|P3sU_b&lHLSXhBfP9wNn(M^skdh1 z$aEH)g&%^l&gzY#u`o-Dl&-8N6Uo+Xvl+N*@)oy5E+aygo+-)ZLqA}AFCstDe3LHXqeNlz1 zykDpBK=pznxn`tT1*P1?ApQs0I$juF^O0c#3i$J z!4Tj)aiJ6_^-Wn#Z9LJccT6unPuoOq z$Yog6D;g4Zk&{h_5w{pHO@jmsE%$))Ee)uANYO2&vH%o@>SDc8d)1>1)DkUo)YRp> zL5DucShQ>p_s2nrtfZJ4wLga_HufWhVhu^#QBjQJ=qNh;qN`x?2Z^YnIa5VxUVjoY z5>}NJK?5a#oFzLRX3n_n2<3jDqlli;^-|1D8E?HAZvd#x17Kcn&&M}?jGAeEJ<&2j z`V*)Wi9CqUKa0|2dyBak76ktdJ?7-e5=#ZYZM;iGxL8lXyJX426obE}Zb}CUt!80w zm&M7TIwbQEXR7>G|53|fFZkh6q0M@4tng)Ty5+Ktm|q;>(8Lq6%}QD!bv3m8^(8bA zg|K=i?T%-89uqJRzP3Ke_+Cu$0jx|gdfn~6E|}BTO!sj3KY7vHq14hK+-Ab%ttT9^ zsC1!k6XcxB8#i8X692TO6U_$h^CKh;}5W84&Hz7x=W$bGR zE)pRmkIun2j_gPbgUUBRyEgl{m zD4Me%?XoQ$c$HJc^W2pTB1;d!^%4`7a@ZZ`2jPBd#!yM_?j?HF=(Q1C?zmlq&TcT{ zz~wTFNSp*}cdasZKQir=9<)rIU%SL!{6>u1@(oS**Z86M%Q(=yFn${k_v7;1{QGUB zukTkE=j4~g79^GZ#SAUsPGB}uHi|61l0iSLS}YfHx4s9OWT+}xi8S56SJBUz#N%TO zNr$du(~ze8KCrGlL~b3)cQd@FWZE&90e`4%A{EPQpQvj9o8@1j z2@m~^bTLi|*E!`9)FK05^P%=ILPbG!)W++LP&)}1i!Y9;ajL_N^%8ZHp`o{x&!lAO z`uXx+5h}WyAlzjF32+^Ldw~}6HhBKxbHelRQL4PdLZeO8f^}}&a(U7sohGcyf$AwN zF}6xa0#vYl?X)stMcpA_R8hAAv?#gXFHe{fu})sXWb#77g(=VK&}l$@zHBIYG6|wW zHQe8Sf&Z#=g|Jy!liW#J7WqvN!BBf&Be&#q(zb#9Ti$Ae-@2*oDa_;Vd^*_v-rX#; zr1g9GTm);u^>urg{@nj1E*>7f?fbbmQ4wv<|3eJ0U1#NL`}KHr!+m!VEd`jxbCT9wi` z*$n7brrDs>3j4lq`Rn@`tW)?jVZkk-;m0@tvcu&8n-9oseLwoHKLM|a2jHz=i9SPn$gSNHkn@x_YPCk#Jp#KUCVq*< zo8m|b9|H-M)_GOkQo|?l5#|2ZLvT%+Y~vzdR{s{|A0~pZ*~WF z>!mR;DTCSlOq2VF2S5Mmzr3E44;Ct{{RNnbhtQ^Bb8TPr_A0k?5d+uds6 z7o;78MHsvA`H%ezO?Z17Yaq}u1|sAVk86S;MpN}I}-j- zC0@p{PVTG^aQ33f{F_(2uT3Z%@;9WoHbgcl3LldxS^!I%OM@3Escy>bSBwedD`P&@ z27e`12C=6vuPy!r<4=+3!1F@&7wW>s=yAkp(vxt=YlK)N#Z{#C!wZ2vH@Uf#GA?z0 znr&KB&q$IGEnK?>>#5_wVX_Z+Vr+U&> z1?hb_^DJ3E;-Hc%+o6kf%Gihq-cbV3s$Irgr~5H5MGfT+dPuj{@3XVBJ?VV5(WtP4 zd^mwBGNb7stDJ|To<3oVW*w@ec$-$Ph4#`tTJs;iR|?PAY5L+5{myyjoL$Yj>U%9R z#go9VjbIO%ZrymLLv^s@cut!N8Pa`0;x&(LOu0YQWiK$am#FKM4An-G^HQwSt*zdI zQqHWj8@&4Ev^uO6HO^Z_sWBg+WL!b0_Cf>cn(<_B7ZBIU>4G7!7O{3s{%8 z<4rb_VK84SaLm&dVX$u~V~VOyW&>OSZ32+e4xu8X&6ocq=_iCqg7$dai@0)Q12l!P z!}4|?P>aakUr0KqfG)nwGOtKQ980v`=N{63-O(WIY9f{=p~kOjqRgq8*Ef~#c!g>I zww+Ul^Zz)AQ)ZThgl2Z}d%C+AnXu0ma8emB+v047>Ca3m6<&XXu6ZR(ui7w7*!ES90x-*(RV5tAD7P7{gupO4 z?fOY=eK8x=$4aUCSDI~L^^q2x6BDU6pIK{G0|Ju?4FoJOUURrhsO~8HpP5?0?iwd) zMEA#9{RC$*xJCt)S$S)~H6OKg1;8HXV|C~{SbaKpmOApcl-3H@oEQoQs~u&*dvW#3UKzV=PbWLvS=>F~~QYxEt=6_r_h-d?iz6^;0^4d68S)*Cacmwb;Po-$4fFK9V22qhIXnTD5kO6{NSNf(sWyV(cl6h;xqvO{I=o0(|_;f?RXq_EHpJ-Xxv@KNsLkkq18k|{H5=f0~ z?@|_%0!=7SyZNsGKDifKnm;s>*GR#)X*)Ka?DnfCOcui@OqjY51rr7?STS_LbEdV7 zVrhLROehmx9y{uRE>}{_O>t)lar@5~_x|ZX-`c5~dYTHcyp-LSzOnOTOqCerISCvk z7`>V4W=<$;$_KfY+Vwy=*KB?U=?1B`vahry%r-z%iM_JWQIcpi>P%CjKtY+N)b`xM zM|^*2L3Y9->JMstRpBzjCyphA3PDLx7l?$&vasX8}fw)M}2TMYd*m%|ejnsd{@Oa##% zdv_aeq+x58I=ek86Iy55=BL~$FLEzWJV4tTNdipqXpQ13Yoq{qYsA$EZ?adK z^22-|T^=bX`6k{$hoO>4HLAJ-QxEPA2=>)i;C<`_az~pVGFkY$!|TP>71q(&YMs+& zwhqtp?$&CDwRtY5Nr1Gu{#BNDMP~XzzohFnoWo{eyRDKA+q>&Bsl97dM4HJEj#(d$ zNf*vVs$c>XZ{sR4g+&t%p+|m)=Eapsm9+B!oNFKEvy{uK@FqP$)&~S{x#Mjzs)w&6 z)ASvo{u)K2%6>jejaFA9US->$VfD#HD4W6(79OoIxO!x|sns@jvWBxOJ-KkB`{9a6 zE&^{%%?s_GvnVE4;pE?ugx@mk=-~{BTFFcHd_1lJetOQpm>h*0acILJ9hq3eAnEF& z>!`+)%%^UD!es?p!WnX~-x((o0NL9sAB2<7-VBnlYt5Ld+-An;e=B|)4jJkXXZOJv z1ufJsq3vII#1GtI&}@-%ko$-3O}(Rlb;?B0gHMkR$?1&h!Y8YPtW)d4LL$sz5qTyv zv0+ihr!m$<8QDI}sL>@rCxnalW8}-711al{Twu=?p>8-t5Q?k=FISxX%8w$IA=;3l zNpQ()5mA2lvpE{Qdh;73{#eJvD(y4VgWmhC-!MTy6|-WHU4g6l|;&ncpdV4RZ{y!?jW#IWW*`Mt-v^J#8tH zUm=PyNT`7ZVzE}D=AH8U+Sx1v zRp=mejf6g>=+$=yY!CQlYH~>hpc|3D{Jvi9is98zHH%v=qzgIC(DAc31226Q0FRz< zbdwT?uW0q;d>vX7?n_&R&C)8_8MX*0pSQcakz?~5es6pW__&55ecl8jI2Le=A>?hu z5XGUB9_sU7+?9q98}egl6a_yFj~2L#=)haGbr3qprRSYwhPQs{{WiO6qxXapf;amM z>N9ji6b-2HK~_e{JMJ(2F(DT5w&<*)<~Fu^OzM$RDhg##45rqcE_7{>CCV>7e$Uv` z&UvDfT!Ph{;v-%$h*IXEEl4pG5sN3G??K0IkO5eMQ;QCEWngM1g3OJ?MuG~Fs?8!l zUKK2id@9iV3_UD0kEre)kg5&dWp(LjoV3lW*`uKMZ^@#{2p&(5w={8oxY54ndEz_- zD$wV)?USv`3Qm3B1dzf0rw_T4g`5rYy!532r4#rfcdO_wwvF@mkZI#9hUmyt{bjE3 z%VZU{1c;Fn)KB;>QGZafBYDFzGF}!!)oo^4dB}^ImbcXNmf2Tu4V6-)2qe#nh}nL? zW=j`p!!p6zJ#a?E`@QD@khURkq&Oz9C4xruvc6-P-rB@mHQc6;brGc`n9=!_rJ-Os z#4Xu4rwGR%jRrD6tI>0uj$@Dc`N8z@XGeElr8t22hi*!bEF|$*d0^{t@GgwzRG%2p zyR`@2soFL^!0|22WDZ}6d3{OXk3jG0TIixkEamM{au9X)tpo|sgcgDLrHd_OPAL32 z9sJp9@Z0f1v@txKRhB+q6T- z>#s}=EEh5t!?QjNnOD)Snqi@WoZCl6oiRw%2H+#ewSzJUsr`hVNQyWmLJrAFwAyd> z=e_g7_WzBvJ}}bx#z+(F&;NhLU$oVhG1AvLyO?Qw!$tOh|7QLAzplmjKZExito?am z0sb|I=pU_jjN_@X&f5~^{ygaZK8pQt>q9l;a8cZUXa8H|KhbN18MvA};>RBgYZ01* zN_oHLCXx80x-QnUgp!|7!wr7e{ZxDkdED+N>&8SR>Au6FY--FNoHh^y_UnV=+Y2pf znL^%FiKIokCHN8&Roa|I>1sV~$6H>}lUFEYzsl7KKM-&JK%XbPA$68> z5|pE*643?T-HLjpLQ$GYIV{GY@nl$!XOEVc22NcK&Zj|^myAX0^qy; zGHe>;&;8rs#aLv*SLpo zCz$h-f^c%ZUAXsIZuV&{9WBo6Hg+=n@(uq<_qLGo7@{tgVc=nS7@cyM#1~TaLw5rx z(We5sux=kn`jl}-T0_g!O19CI@mL|J^1dKaB5F$K+mq1Ac*Ky|ifm7?pX>yqAk~UT z>^4Q}6&3rR;LHab;1f>EX>!GBHxeRY0bpqMS~Y}FOw2~Co|#CA>ym!0>a0USNa{lD z31i+vQfu>;d%5ZDH!6egC^VE4r|?tMIxk~UbV&AR(hby|5WD|iO1lVIn-#@AFGh^b zk=cQ0ENx>neoaSdccupVG|;yK!CpWZ42Cl2zbmh&18-1P+S^f@!LNKc!%B545wtp>`Q*;a>T)Vz2=@;+5SSd-$T@^(xP|%iLDE zo>$YJpr2b0{2o8`sm>FA!`U|qol1L8IW-ewgB=62d66tu0NoEnzhkDsFN}CK57oM} zGK9CrDfx}|g7DB^bg$Axa2iU@+GmQz=teF#`Pnw4Vyle}cwf&71nfhv;I??=~>KwMUu@(q3^=2?>%FwG+B1BMU2QD7e{X+*jS$o18vRRs>1|m{Fgw zCqsV&%lc-6!YJL2x$iG_0cl_NTvgE@_BT0r68|KNJObAn44$gev~HNv+*i6Jg!DBNl^sDg;zE zUx%3x^IDDcCQneVR1u2h9Db-l=wgK>o`4bsNxAZlrBgRcS#N)Wb3rX7U;p+L7BitQBqjWVxn4WE!%ji7Y-QC;-JN&oHJJDrI za~{-LU%gVduPQK5jpw(rO9E=hKfeWxT5!QP*J6rNn(R&_==8uu&?+erzT1p_p(llO z)QJ#N_YS3WmW&$DV_3bqhtiEV_+*sfloZ^@hVal)olombkCw589|8xT?03yzMnu^~Q>wkmA)YO15qrw4T)73TW^w5NI{38^x{n1y?Uia&ykL=;_`yTaF#tlqT3}ZDpa168I>c~wX6Z`$htdtzXkar~CH+i}70(M4G8 z))CThc+BP(C7^Vdk?H+DNl7wWS*?q8jB;R-Fl}Z>HMtEhD2X+pw5`F66kXt18k~ zM-%x}<+?RU?CWkN<(LGSWa_P|CsC^!E95QEyVbq`vnvS%1Oe!!4QPMAw9vpfqH0>? z)3Wr*#6Mslah6EqGq{&K5gZSMTvyQ;#?Tcal6zHZ;o8&ZeHuHKdLw}`sda~FfqA*wIv;W;nyEvD~`LYJpS zqQe2sAKZaO3X$Nk8bHh$oJ&%zC>zY8tkZq}M-njhnWuas%+}APF0D^IYsoY2`v~VKzFfkKw4Kq# z?^{?#d7@>$wF5&^d%uO~g%x#lQg`nTEGjy$e#o1j&T}tUcrZYENU~~5lj~|>dF{q* z#$H*u;F^ciCEDYEqp$w<0>ABFNk(&3K(T0-`B%otFjlDtjvI1Hgj9lljxFSkBeM}Jb=D8yX8`$fl-TF+)9w)R16h$`vLr!f;q>vGALC7?Epd;0C zTwXO1-9FPq2y91k8|TP;SzrI~VG%v9l!J#((loKj;UmOwDPkdect7s_+7TK)=hfCK zFH%w@GcugqiSa48-#LdEHh<4QB8eSy!!9T|U$^pGwv1njYXr4d$-SHiQJ4^}4{uQ<3!Y0jtiR~dpQFipS`IS(-Q0doA{sc^optZe~X=ZkYg?< zFKl7EQx*x?-1sNmMw$Kd!S6+qMcl2>?t_s&TQ-;>cPBGj>6(V28z94(6f=>Y#B?0TP(`$3 zBMBkWLq1m+kWgx-fa;gpwON&?>JA0+Z0M6MEd7jD3ED|nwGdSMlOa!-1&t5osQbT) zke`mE&|qaa_?q^(BKa(aMI%RPvk9w*j?J3t513NAHBwD%369OE#qltv;AFt>o#}aH zMUdMy6$H#3MwV%lPVs}%WQw&P0?feomdVPNO(dQ%wN8V-5VkJ4aee(aA`Ml{*p3vx zne`qA$pvb}`9fHlmjhKozrNu}g}vr~_)TH~H-QOP@VL zqK`;<8>9n9bLl%yjk%sV0OUfcbyY-_fQ z-)P)93k%r^TW#pHT1e@G0N3+8N&Nsv;6&Yfx z#HK`^Up~R5C5#`3S;@)%dX%?lUfO8F$VbOUQ*SM0uOqa{n}L#mUyQR$iDg3xSR&Yk z_joz+T0+N@b8>Rt`@3Ga6KyGeUGg^?+&$OAtI9*28jAL{s_c0w(C`+n?MXTGfd!Kpv0evyu- z(|D|BAp0*3tpg!t+`d@#CiHQwUE#1Ao|SVXH4^O9!F%q2)^<@bEF!x`G4SL13B@qF z*Grq=uiqPnvn(RU34IA-990~=AV@|z))5Rw=u&;YnA*_pP6wj5d8e8sMHY>cp6;jg z1mIIe@uysCoNSm#RT&--3RmqSypmFL^upz&zMY3+)u^(QuyW>1)0Tr;YLHZE5DT@3 z8^Gzk0A|V4GNa_Ot)hs3K<#7%Chdo30fnCarYhY|p$8Nbdz;AJ(_WVreg~2IT0{Ll zas3JTYaPt&SGizl23)KcAZ+A>HwdRa{0TrQNLz(gFMz`uBSlP_l9B8W`Wp@~M?7I8 z{H+LPj7D~ocoGg(UhUK(3`9cE7XNwwOwFJdr7lhC?6;+CLRyp%7ial zG+O6iw1s{kfYrYHtYpz@_m>~!y}LTnkb_Z>u zWLQWc(^}6)=8ep}@Tv$iaP6uYI!t4HcHneiAt$)8--b=%d?KSU!@D8PvrVfT^ysOd zuv)!5t=%Z+=64lXVzH{a$@VWn(s`w#G;gm(RY7jUw%b8H&8aJo_bFEP(G4BHxHBng;DJaqteo>~hC*mHYq+El zqoM=nlwkDIWi+<=^i%noDV<=HYk$x^R?Bqt;Q2|2Wlp9#VmY-J80-CAIaBy}-P@|~ z{*1pYOUf5E=SI~sD5{yiy{weEChXxSfu*WVo!on4h)fc)#TZtIrw?_Fe?mR^uWpuj z@!bv<53O!%bV_3vZ;XeM?k#C{)XZ{Y`(-^#dqj#DccCRh8)QEedP?1P zH;lhi48ok^i35T@eW9mjqUpCz{Rv#xR+{!|m%6rJE=mTXg5dBs2TSSnYJVWsm_gc-(L@x1wodIGMhg$g zN7g*rI@`6_N@|cT{*B?71?^Z@l^8ZR3-YMYdV<4Xm;^lKLfs`{B-IYuZO1tf{$973 ztKf%>bm13dHGj#dY$e{dN`G&1w06Dem8-mS7@Nqb*X4jK0CTS9PrZnXqY?pXYT#Y-t*0Pch=TgW zi7~iyT|Fc+i(*YpMZ|&ew@a3H!5KCrW^*%_rbzCqSbP7O2lRhOw)TqOFWl{(ET0ES zrwKp&LE;j(2ii>hnTL?ohPE-E$|1_CwB@-H*`X)TXb zCiw(Tfb-=T9-D%Ik%}=EALT!0D`IT>viLrvO)FQd7ZZFfpK>o;d^~T<`g6QZKJoH@ zylqCi>vwl}Jzs1NA$?w)G|a>`<77jYrgJyfKvU+x=%tdjyf?1j+7H}1<{FeZx+VgBhK4{i@<%8htT;h?l~paV(h;? z&EZyLz{SCY;dj3GuKsoLZG5epOwv*%I;Ss4Sw=mk_&m8HH$AO#k*LiCl9V)#Lt#?Al_0*=(9pOZ0kx32|Kx>|3YH0A zA0MquwFXzrHI!;^2`BDbl7Q!O zar}~7Gujuyb^&_U_$}uWvnt9_9~&B4TVOmISXkhlI;{}sZ7}`Rn}d%aNb#yc$|O`+ zT7N;omwMjl>rYxQc=u~4|1#8u1)$ ztK4~fnwqQ(D;HfeYg*T^%r*h$+S(w?aSA3(Jcj`(t1Br`(~v8aAt`4Wg{I=9x?-8z z#3BzZg3zr3rU#(Odk7EI$%eBFk1k<$SWlm!0@fFcsexd{ko6YFO3;FSiGQ*$e@%gI z&i9RyI4Npx{=!U+mmfA z)wbvi-U~cKQHbvxs<%qC%Jf)A%g+ibjV?m58pcWnKS&%+tZBVDA!{AXC6We#u%av5UFMz+~JBpRZf&@+?IfaCzLMnh-~`{trGGieg(Y@Af5fz?YC z937^PLoeP2kv+*Snn%*)p(N)(uS@5;HtCubDD_>YlULtUer}qFGPH8ot;XXBk0Yiu#gi~sq zw;+*vvmth~N%eA6erU=iD2WzT)Yy2nkjePuL zBs5cFN+oqV23*txIsG^#K%z|U14zGaJqjLP;lN-_X}x)WR8&_(fFQw`*+&jsx2~R9 z1CwY^y;m z{-24-(0SA-SQ_m)BD(5$9Iti*YdS)vBb7=i=KCdMVHkj^i!tU&Z66 zPwnSL_}bY{`yQAWhTN+xj1cQ5Om7KNvjA>8jk!~0XOf$9bBSNhcHLvliiDh?+^dT8o|(Pnu5+-Uv~^vm${7!kxqXwGkUlfYy- z699jYtUZYhN6j1W`q+|#K)VRR^fL~}?g1A5!X<@84zs*ykg+RB<>*7zI9MP)&iOfi@avV!u2eOFVfy9u zOr4eq;G62iqh1O^JOoo|D3@F+yJY_9++>^qXO+&;ksXwtgi;Y{T=h5{S1^}quYuOI zFVWNNL0}H*-X&$JP}GE=O{0h$wB!^6>OXE@T1)cW;@@Xci?hJD(JE=iUVml9>^1Cd zJGG0?m$yKR5YPhFr1X6b15>-=C5mBCZx`qxxkhPK(h^`O6jNH6lgTW<;-@4XXvOim z)Q_4pL`pCeRx-i70SouP%u-TADJz^aj`Q^pN;Hc4!{*(+J+k^PVweqCWde4Fes)xG zL645!v9|49y_o#o7mjj;-~W_OT0{DH0DH5Ys&)ybvL4t>&Ch0(c2^-FeaehBIkH8a z@srTytjOtO7y3L*J}Y+q5VLezyr^w&BsgOoSYqspcELc;$w5Zd`W^9tRXRv<6I~HH z^MQO56HH)L-nTtGU)8SO_6S?=8C*Fmv0iCV!5H=mwu}Ui;UyAXXZOxne&VE}e5{XF z?;}ytwCNJ2ro`Z-rb78#xyC&Q&3K4W6u#*w%*0hv)x6brdlXJRW}&A&nwNW}p>x}6 z-P=>(CZ6Z76Y{-gm)GkP8=JJkx?Q8ZrJ4~_aSre|z~~Nq>k$DL0kTYYn~76NmgGdz zfq8*81*t{qz2RRts}c3dP!EA_84a8EB*Btaz0~cc?EtQvDZ?;HkO>~)x!4$xxwHGR zqjENUiK1M3ye%We&2K+547tH&8M%i6wR6ylO12Zo)Ods1-aJXIVw?0PeE{7*vC$b( zVNX%9LdFq!tE0%P=V-ODqd05*i?_tX)G7>3D=Hn~07LqQ*fy_iT zJxW{rE>s(O77OFfK4;^&NV8+hsk5Sb>1^m&^WV*zNL9Me6WZU|bE41Na)l~G-9dj- zJS5K5omBzJsU(sa7CY2NhtAkDP2|-3XjYYB(W_B~nqqWMTkWqW@z>#&;@s{%N_3Ca z>69-mj%UT=Ua6huG>`QLWF$}7hu>O7#c`&GL5Vth1>rdoq>+mqd>b2`#&qElw2q1RTB{U~w?DUX+$(S77 z!tLa_98}Rrn4=tR6V!D!QZGtn>e_TS z^74QU+q5g}mB25!Dx;x|F)%Hwg7%@^uuqbgGTGAd@@L zP8Ws&B=Yf`k07}Ll?O+SR9h}O>)gEr5O~ck4$zHgcMllI>Do}H`mHLWR7jxfe0#*S za5ZS4bc3lTHo3gtzNGW~8U`aa0kf6e#rgA6-X2d!U-OanF=lQXCe?;!F0(Fw=*OSb z*dwK;QUSm=cm{cmP3v|oO!$tK^tHt;Hd7s?u2`snt+XsY+~mlW&h7Zr2dH&YSLd39 zEO^j=`r{Pcz5vdARbo0P>a`(!?~zd-)8V#@+KBcqe73WNd_=Tk(i^p9l|!j}(-HiS z{a~_6)dbP?jM(igo1ME!L)osKWIMkkZ|*d+WhLhyWm?z097VP6`P#DFXE)cW&mu_3 zq+pbvdSY0*;j~>zacldG;3PawZ5?J) z)3FFwUv%BdY*=};t^9?m1y^EJOvt>h(~Xo(*Ev$HrZYGqM>RCu2CxRJJMGHeunk8* zIjhl}E1Au4ehAkwm0Bdc?fX;Y=P7zeft^6*k%q45zWDRA+sox{`@6OK`+gA)%ccvI zJev7r32#MOY6OX2ASfafAMlR|HfdaxZt~Z`F~92g{k3t@pC#;Zs%r zE!hwc%~4#8ZSJ(jWy;|q4;@UPkR?nj9!(}IGoXiM+BmU!a1@~MbQAc(bsu4b!a|J; zF5X{(I+tJY=N2R^l2cAH*pvKG)6!ZC10pL|Xk`spo?+b>R`zyHIy@=Di5jbnjq;2@ zka+9WQz?B&3QElZhT;_VzTFw5LQDr~>&-}#+F2p0SL)$ zpal}FRo1!*$K@w%+Y*E3?)ES*yhK~RD#Ti;7rvJgVC)jnI}y{u~CTW#`m zIB0b2s=2_7KkXlib-&LCtHtko-dIN!KEQOdf9!a_%M=`OygOzXxAq&~xw<+IH z*b+o=x=}`Ai&zvgK`FWkyhdCeFDu?>vW94wALJU5IjoBr?NsW})=(OAI^}EC8M3*~FbcFOd0t2(Np1{4jc0oElAgU^QgCz<>qXx; z)z83BkZjh2bMRiJKf87|eQ3!NM?w;%(AGF)BtRKCCJVSAI)E(kJy#C(z}1cnjx9y; zZW(3HXf9Bt2jnl=r&m#6%M}{-nQea8T}_!a!dBLd?)`T%(0DStyR>wD0iG5 z)Z081tW8#Qk9~0MI(&sQYdW@G_I1ADS5E)RnQan#%I9YCBQmkZooEGo=wZoC0=Sjq z0fMW8$z^mxUHt^)a8iYEAFZ4G)X zl>UhZUPgEwmnqLFQqQzbge z24y=)YFoQ)ao;4%4Jt;sPSJXWx_YiPdAvEGMq7OUDG(5~&5nu#jE|5W4rn1lrNg!8 zZj$;Td2uP2r|b*dD>PS-)SJ-l@6Dt5gH ze?Q$r2=j(<4tNMFcfIxwpV9#Z^#m@v^yIb#oX_;Mw6nbWA5hfj2wVRER#Ti9%q2G} zc2aC=RVrdA#Ke|E=7*cF+LOSN00v5qo~~wmG*{%*k!cyGvsWw8Nj*(CdVJEoIt!?y zZqujnAJxdF&2D+W7*ejeIz*68B+k*3TC@*1Lqu?$>vgdOFi>B083Jodaa4S}%xcjP^4?gZrxTCGpB+EAh&W)uDBkB#)jQ(2D=N8lEa=&;D@(ineI z#(7fP1-aaHiNj%+Vv!)1i zX5pAM_GkVr*e+f2c6u2TaYGsYnVwoiM~Z31j4Ca(7_wZq?s-(K=s*wR&X3BAu``z3O0*`nL8Wlr1(Th?^ze${AHg~(YU|u86dz;m~DWpSP`VR%uw&&{qZ`j^WhdX z?no%dCmp?w)!qHF3rr*e&9(?StjyJ}#^MPV$ zGh-n%O5FgJeV&N4jq!0(i{+b*IiUv?nbSy8#^aYjf#VkNs@N0j3_99pUdtHsGLdtwhs1CY>+soE!+@?tE?B46L6u0@#* z8Frt`J7uYc@|?GrUJdeMeaur7`+)yiQ`D0{!?t^y6*@Kn$slEMe`OwEBnx577Hy?H zoLUpk__)*Pg1Yf6$5NY4b*pdDb0`voyU6Ck)pSuSEnI#J5tK181DFgt5=%a(LFweX z+C1h7q9QT4!Hm~XDWF$?H(j-gstUI^3I|!W&IfAtGk>E@hFapFEymmA>ndb)ko>Ob zA5<24KrmU)QQG}syb^(dj;7RJFj=cWH{kN2uv}@@God@`-BHvCcMvppQNtTPcu~k; zsfgbrTSA*#nJrxnQm21D=6{X5$IccB!1F$6;E~fTQMPh7U;PC#Rb#7d(=I zirf9BqHlGLQz%q3D*%zGHx5M){0a8SaI8Nz<6738HM`x;(NDfDyX$Ly^o9XsnRc%k1QKidzJjlvDTiWpekD5{*VaVos7{5=R|Qu*c?*DN=yQ=?et|1=l;ilu>Kej zW*u&iGmtl{NnqU_*)zKeTIZVJRJ{wladL}v{TWV%4Ve3%M0ih7O9}=&$Yiy%_ZmIX zQLpDX6L=z48WCmK^JUIq7pUq@duK#!B2&`slc4A4k-sgQy(|hV7it`L{6~Sf zIWyLr@*x3W2KdomJXV%lqr$@8F6}`ekXQ3JTFgtKq`!gX&Z;=dmI!Li|HdDbtU(5z z?L!b75X%7E)FTL7Tkx{4p;QO=V!?X1N=0-Qb;Kizg&R`@uVV2Mc5JL-6g#YBZCJvs z0wabjDn&Il42>X=oDo_Q`KLhY?rTQk zY$@q?Affm)Wk+}_w)#yp@nZK8v#8v$&A{c{wa`>;fR)O5S5&Z#Eu-H{gNiIo4`n> zm@q!AV{CAVAR`E%U64b!m_xjm+r#yENU$+VaZ$d(6rdN5i5gux48wGx$VwQ$0i3X@)12L|nUvbyX5P3w7IO?j-Q@ z_h@2Siu>KgsgLK^aR}CjoI240pV1EYGv+2o%ie2RI1)Ze)A6$}_h-O55#u<997JdC zgS1ucvaq{X_J~SinQZeDq zeSYiV5rw@w2nur4Z#q4fv_#>ST3e3<{U_r*5pLdy79Oo9EL{pp-5vNRs8CSLfpeR} zIh%_^QXw6UW>7~(3>VDa6`6Z7? zg3|ve5dID0{RwC>cMnl2ON{^oKmb%sRQY)aNkAKE zIdLk))p@XKCkb)ixDUgrYRcjhkp#j_4;m5P3C)tuN`-; zr)&_nPx5V-3#f@wM7Yfl2V~h2(NMQPiKQIY?Pj25CBu0gSX@})D z=-()=CrP_g1Z3^Cfth?1AAGU&$4vrpb=hmoZ;e?qn6K{DIU5c(sou6#=gWqu zi1Cgh)D9(<7s@xrnlU?FxW_uz{NoruiD;K1!YnfZslp-{m`G8pMra8-+@<64*a_Ii zjapCP^FTFpd0)c}WQLEXZ#kL`3ENSGn)tG|3fQ4Gcw9axY|C`;o11fsDpr3~ zMLEjLAG*u1+>?RzkIf2XnOp~m=5G7^qsVz^X~1# zN*o)9T$>CK~Vzny?k8dXZOODhYOUq7>aOZ zm{X!Z^CeL9Q0fQHYl_{M`ZZ$4Dd%>+>voF7SKKUnFDn;(1b4&GB(|6Y#z( z6CC{0;r0BMK3*T6{kj{REtsgYFM|u?txw7Wi*;~wQ_drt{P@d4EnT78fBvqIa{_zn z6x&psF*$Jt4GI>j^Vpcx7&e!@8@!!F;2#4?y?Jo)FJ_Li168P$_R*1aTEJoqc8947 znP_Ehi--TmKv)W`PXEh57FP_KtqE33{@8i^z?apa5l$NV6FEp1!y|q|zQOcmju4pC z9M#DygdzF%5t-*Qm|EQjirn>)1227It3yV+8A&Zy^4MLVpQNDP{qteQ-gS8r1L^N` zmeMSE9qIr~tOdQy)GgVct_PBPtiHsRk?PfnOn;0o0bLg{PrR|m6 z!N{}Jx{U@-omG=Y61%W4XU=PXg;M50^E;f&gx@br0e%0-P9|S|=GS7$<4@uy&;44G z>`RhJIyttxZM2|t^tPa`33rYV*~yrJs$6^ z)q`7(W#{srZk`3;B(5A^fK_k4Uh}uE?PB(fOQ1q+8F=ozgBz)OB&UP;#&j)0+~xWO>umuvu~_U|rs#_9S@j$zv@T-TS3z zsVNG=$~TfmPJ=+S&ghE9$p0kH6-KNy`gjzGl(q?+`C?V(Gy7E{^t|aSh>{YHa?j_k zt2s_C@q<7R{vi-q$^F=0O2CV*7I!-$raLMZ(mW%IAQ$Hq2P~Wh6wY}FX?{R-8%mB?XaLfM390mwlVDPI|ARpC zG<8qo`k*Ujjx7$F{gaOVArN+I+3vuERH;)S$L908(k}ik)QhLiRIykiVU^F`qos<* z&7%rCvS8o2V;M#Q)?D5L%-}Yk+w6FgVBdAcSoe<>xx0ITmOGlL=`Ed)=fU^=DxO^IUxAMFyr~;xRUe$s)K7L3DDnt*Yj!adT zZvkCNvo|6tBR|OhB9ON6WR3qpAaz`;Wd*Tt_L!I$AUNDdCki&fK%2kujk`ay`=F1Xg3`2q-F$79E@ji=Qqwd;4MdpmFY-gQ~)4n z7@*f%-SjG*piQ%JJ+@E_-IZ&7L?trfH>Y4rTg?$yAVc(5F2Py(j{;FfgFO`GR)NVe zv0lOf8I5m5S96O07@{^Zrbd_Y@G=8lv{>l1FRM}u>#l*&z61dx-ln>(yMAMf#tq>@ zqk-`j%wHCEorBvw(Oa22KQ2Dih_#w3T+ms5WCSsoivAO8{ZlknGLQBN%97(qez12r z;jV-M4yvSY`BDW?ciV}A!mgr=%n13Am*e*mOEC>}78*Db5<%`b^p64|i(Ng|5aN6F za1dy^5=0~w(VmCSO^p-yj{;HtQ6MH?9Wm})s<(toUyU3`v8a)&K*P3l=BCixi+P6N z5~-r@Mm-qBdwn~uj&2*i0=(rc@+skLXtmNm3}pTPG7!~Vk>CGeAip&x5EjTdE3eCd z$Dx4Sl3It(Dp+b#j~xfW7MX&~#ZqLI%wWfw=~juoectHV4;1Wmmt4XAF_1>V_lc&e zX2}zY zvg6mt6e95B*SM*wZv>gWx6F@xhLfp9WQ(`y{yjvE3gL;&niP9O(q8I}Z! zCCKGduPNui`YM!&Jhlh~1!QdyesO2P|1n^xD84v$F0{Q5R14%VNAovy?4`#<4DFr$ zB=MK~!$IOMX}n)|Gi@|Pi#upF26ZcT39gM*Px_Pb`x!|5p}3*AEcp5AVwCp$Da+Tu zo81G$ut1(t%uqWcajqmS-_`fC!7fK{GbFZmn3rQ6aCT0DKOZBsY+Uf&2V{(q7rZGo zG(Gpwfgyj5XCRq9#?v}}qy_yLezaK96vS!x9X8$)_vC3<${xpkYR5%@U;$iw0!b2e zO81Z980RwC(5JS3T(VoWi(s;fX-n$8dQs(UW5Xby)voUrKG`o{aNAZ?#p-C$QThqh z29`Svr#3HMV-BQfyuv4#9V z5V9_L8Oplp379uX1Bci}KB=5j2(99y9)fsxR9m9iW=tS7c)bC(=1^Gu$=&7w-4S3|)VW@rlP63}TI8j? zU|>buKH+?8^SfR3Hhl>(sLLEW+4{U>>^^4{O;=eHKE?khK{icNaOm}u!EXRic<<~g zeGA4BUdqwY+;wgNgF!(a-*SgMmup=}<}<+#c1SEUhuac-NteLQ63MG~@-Dw)pMah; z-a$dQnpNhI0L{;sN(q~9LO#yj#}{swzkl7yfu^=WxS2fGOc)mcfl8H>j5ArBN>VfX zZiDn-WTq!EvP=lWL+<^=+Q1y4V6+?}yl9wqzzX@Q#HLg%keI;(!z2dSco@X`WqmOz zCF~`}H*7i6Dth0=fyK%Z+__DK=O-o2$|7Z_Xf?HoBuoYfg*|EHDo zdsVhku2a7`U2dlpVqF_|&Y4Q@4#N}g(yIB?B_0UyKkArMH5HHH93Bn__ z>8_$9uJ}hmK52InF8AgotF=*U$dI*-M-Wu(ji?vF;0 zI+YPsXW_OBVLR4_H0y`~MPuz@z4!ofK<#ublL*E?1;o2zAOAjgx#C27PA240IHS}y z1ShD_Hn9W)oWwP*=|PtawRKmk*I7rM|1gmCIE%?0-&|>xgTJjSQ+=B@!>+N*);Gqo z{e*%T=*Utm;c@lEYW85${=UV8l-c~VA2~=AdY{Ubw(lWu(CvI$$^^M>u>|;Dku;+a zze_88KM&`-zXBsRz(c)NglV z&wM5Wkz;v4d91B^8BKJjkRFpyx@V3xeX3^s!k3)Lc?aX< zJkE~;>F!fL5s?n}4@VvvPkum2#$3GCg$lTiY5y?QqO#jTqqtsCxsL_(0Qes2xsYS} zsSVvLcMb0r;RnAlBVxMEN>ozVC;)GkFD%w8KA4Dq$kPKZV9=0d#Z1y3Y-1w&&w&uo z2nDd=+9y#D zfY641L$5u7IoJyPl*OwZU-#L;39@2=tJ#TS0)54A^y~gpq;-Bo?UZD6l%^l4mFgKH4 zl1*pee{o$moZm@Zgk<=tD-B!yF|=@qQ_v{g2UD1RAo};NEv0PG3Ic8;k~&)z)#D&H zFx3>(XzltX$m~fN{b*N&hCaR;d^lfrU$8s}yxeqB*36%E$d+Blw*y&LdwwAzu7*=XO=k*jiriRH$EWGejMyxT9&t&)n^(7eWmHpwVc6K~0{)LNOb zJ|$7SePEE|2WLtyS_jyy5vwnRRt!er=EPX@mF>xt{~v@}+{ zTC|)+z@^FBh@#6+Smn{I@B2z}0oP?Br?q@@%n=|VlnuWdPk|tf+j|=sPGi!n{^W=jC=LhRTLIag9@TLkHI8^X)XZQ=3qllI^G^;}N8rGh zmpJ`hP?9^d8bs7vhZHp8M#VSzk;5@2ZlJbA%$Q*LcfFv%9J=?djwmxy!=>-@6#6h# z?rLrAUcp{=WWh$zlIMhA)*6f-Sx%mRk%f}uw*@z&zAkniDcEFKBjg-In9XpE)Ch_j z^Y@1XChV={*K0D0D~F$#ukX()grq7|aK0FaME||kgBnu`pv8NR+e2K}qXP^FDKcLTJ z9C7(f#X&R9r?u4{RE?J28-{@ARwT`F`PaV?cTAYPj(SKr56VZR0&o~Y6b!E$3^lGZ&>gNfKc z=1p=M4Ht9=bEW%yp+?-^0}kkc-50a5Eq-Dhw#?lT`|e)^qk4T99$(uXuU)2rV{zz`ZSbkS zHziv*TM$h!Q9%SqOH_|DE!Txe)S~n3)A`$O#=45!cQ7^?#PIjR-J(>L>pgGi!J0!i8hM8I zgdlfyXTCp~r?X$7rAl!t%mYhTcLvx38?Ui`!ND;bQyEE7oP_f?P|9W_8LgrkSw9m} zE~J?SASPE3X#!DG>RCSw2LTl_y_Xe5?-Pb`x(cR6qkSKYEIEEb(TEj)6#n|yfLpND zi~sO26w%QiFNV4VH4+>AYKeNz12<~)6jNHSqEan0;+TZc;{%2}>uNdu?aSS|Xv-EC zUy+yA=q(8N7zea?l);Y7^4`EXMWPEWmD`_C=5sb-v452+yM`sm#GZ|35HhdPt2GT{ zliJLPTz`OCxeoL-bpRh=xRwKc)Hw>5O%Yb@oS!U=WZqJPBzJ>Aa?skuzD;+4D@Q-#V?ucXqr@Yj7rEDru4e-b4EgeJX~y>mYp6{==(!^T2k zy&s~bZytKs{d8C&CL>u0qqaTH`;%%O@CJ1JU`L}nyXkKxs-7jF>-2qL?cXNWUMiP$6Mkk!t$F_6eUykZmc$bG`+nkvdecBq zSiv|Uryv4W{CRhod>fYM+D-jdzt_#UKZ-(CiYN;U3rqtVgC4h;!4q)j;1S zhrqM^YBl~OmeSJa(#O3XCU9s6+z$R%Z>5C%|H6yrQVA1k_nKM>2R;jU7?nEgKyjFVUoCX| zKhvQh_bv8J%SV^cPF@5hrn9l3^m2kU__d}73D7P41X~py>?H*gjr^Jc?=<8SWg9zj zf<aayxAHk2@+JAjia;>ZON!2dcMS%T0EXI7|2?RXK3fU2wm0-qoS!d1iT+bfwIvM?*+Lqs zS0Kb6FiHE<9G&L0{$2QQ=|Olm!p7I>QEU~iS(_tD9r201MU4*Q7uK9{Yr2o(0Ks7$@g{xwi3VxpEhSGMDX_K-o+0`BK4ADtFWs~qN=F+CwihYGbS#gol6Mw7*OL0+(5 zO)T4bHTe0~8J93%aZn$%N(tn}gA;r4Nv~5rZUY8M)>mfQ)+VL-cCu7-!pv5B9wn_jc&N5K;$vg-J3w7u$HB}QDLbB1$Mg1k>5T9pUsqch`6qwO)>a_WXq zJG;8-S@L+#*r*f25`ACEjW}8=RZ8X#{sR{qmnc`ClV!D8KOxNSa%p&-MD^s%1sDsB zLYzE9!;&u^=)9j@=9Nu!1jwJbN3k1dGs1`ljh3QAy`q}k|CNM+`M}3p$D3c_%xf9) zws!6X2Cu#B-nIT-;~^c-O?wI$&%MJF&kg5E;^iy(*7Nfw-g*jPIkUKTG^U2#acV*p zXHIWyODpG3X$1{2&mBWr(E7eY7BF1M!~q_F34KCh(HuCg1 z3Zpf9>!DJsZinRlkEK{u`emfeOJ+PH*Omm}VyQ9gNQZmLxHV*6PTS5+Tm)bt*MSSy z_zsMhFj%Gc>gR~hal^9pwGD4OXPaB?o#g_uLO(fqoVS*%7EoDw*I}p2BTD1{S0)Nl z8m%shlvqVQpM$WqURN-c&6k`}lK||t(8Ut6qEr7ms8^&XetKpaAxtM}#<6WTL~lR6 za)#{@23UhhUV;JaDJ-va=5e^ILwV1}!~!p~vqV)kE|r>?u8QOtA!^#7zO)PTKkzR9atKPIfA)E=L&WPcM;HC!I- z&>55w4Y!Fl)r5^Z*?nNZ(Cgd)MB$a{MN?)S=u;!t3tz1s8?KlaAuM9 z7*_GsUiq7%!cbZFL8BKv?M0{hH&E>Q*FdVK-y^Eksx@2)o0>s7Qvxew*|NyrNfn1W z*z*(<`^Igf{;fJfflTHW@RjfaZPJ|v%x_|velGeF5)~P1(^sPSa#HO`F4zEZRg+F+S)>li-IYKU2mD^68G_r|3)~{w7{CE|xlt{*;+;s%q9}e))W* z(D3P^zC>X}y;98m{-C)pzHw4;>Dh2FSqknu?)lqqpiNb>7pk_u2p>z_8fP4yt>dJ* ztOrLg^Yc`$&nw{E3&WZVyRi0X70CU-#J;Q{XlI6#V3^4SC0n8fWnP}Bot_=Pvx!@; zGus{x|_*hq2^B@dj^g&d=fZ)xSnj29ly^wC@d62MOh9tX=g5N z+Uvv1bM?Q#E6hn27ntYN{WHpM7x*S4G8XvUd-I8$x6=@KBp!AErl9DS+oOM-{E;Or z)PrcGhMU%~;IhT7V||M%h(!kSL`TC8GX>PiWpra8zYSkz-kuaf3htq*BT$oTg$#@a zdUGsmx^aC0287>%xdklmeJ6}au@)UQ416%M1AO9Wb88!V+O_#u{X`+J>^CIVevRGR z{%Z52YD7}SMV(=^zZ{MHqNg?5@>jb@rvT9HE3^I9&RRcKs%E2MsK`MVu+o`w(k#as z$(qVlJcSJMrqMuBuS;B@)GZjdS=`iwsWW zRto^ByFqs7mgGZ`g-ExD`#jBwAFmr(^(rsmqzR9_XoqK16N<(HlGiidt9>V^M?NbpcwT# z$@)6v21ZIzw`&oXPr4_KYe96f6Qu+3IgsbW1cYry4Gp&Dif}6mecO@r>0=$w)z$sE zVDX4FUHoTLbWva?muNjlJ8xn+%dW zBe`Jj8BoyN8|`cH$4AsCh52pr_N#}G`B53$H-?20Xu_!#iArcTgawh0YDJ}acwl9H zwm#Ph)}U5m_UnE=t#qs#c(rCPANX)>Sj-u<1J) zGf{DNLgMX7|0Y@8RylY$%s){KO}9-r*=UtqHl4Jc<(}>1YEo0pCSY=8F-%EnssEWr zUux6a_8&pJ{0p^kW3De_t9KH%!YO`;L({BAE3xIWix$Yd+IO zvc~8Pfz(6o9;#Yw8% zB{a20(RTMPpB4|SpsM#Z#2B6;2|g62pDB*o6VY^fJ*^{jx`O8`09m&?8~v{G(yK)A zwkWUmp`gV=-&O36ITeGtK31JNB5kX+ojiNq4vhS9@Ub|>=Hv40_>u*Xv>xmFwiCim`aQ51xwYQw~+e$Lgzc zz=X8_R*CgzI1h#V3<&gTI*h-uY=e4|odH@~&{Sh{Pr>v-oEbT&U@{fm!~64)jXrQF zSI_kEtZyx@2^uYSoO8qwd!*=6wI7mUDUMW;Az3olst%^$db?)MStwAu)Xq4WF+eDi zCSIuRIF)iPestJ_B>cfJcFT<<+|jWd(QVC}B)sAKW6E@%Hk=VV(ZEUgajle&CW_D9 zVKmbO+w9(}DLwYV8jd}U2|C%R)~J;M49xi;ZyQ=`G4>1mzemrMPM-(;!$Z z{pm|>x5~BxQJ}#$+hJjEHy$$lT zMS0Oe}^EQ;o)L>oW&v0RBLX_u|&n|?;<>ks}G0nMjsf>XXXB>OFMrH z-ut!9VR)|lCOGFuhHn`0z|I&Q?^&TKU6(#>R{c{w5pTc^bD3kAP%dh)v{#T8w z*G8juzR>8GJdTfGv9Rv`zT3u5w{{4%%G#j9z2Q0`8KEPWW>)kZQb0$bpr0(0S*0VM zC#ffsf;MeGzm7o1X<-vTL#)P!qkiAlj)6RHR|nesRpT=Eb0aw+Fxb}C&Vnw_yhuzO zmdPcbJASU#y-QzW-S*fZI7YL3q)=h&u8zLH|FU0)CrD(FQYbqOLBOxp$hJh)l9wz1 zsXvVSQ__Oy+`ekpRJODt&H-D>q`ySV*|GWNfCV`ab~bs|!jE-EH*s;*V=IfF9~#uJ zn!7qxI#bc{e<(YrCQ+7#S&wbowr$(CZQHhOt+8#}w#_x3HT-735$6Y-o9gI_ioWdX z>dYrI()o4Pw&sLZ6Nm~r*H)-2+TM2hU&3B%8G>g?MkqM?r#RNbgxY6#=m?kolR|FA zI6n^}_m8@FkVJl~){GyXwJ%Pqh1s+UEBGQ^NbUKs+Iho5<~CDrF0 zZ}QL45~=g=xHs{`i24m*=S}swcfYCfhM!;Y*B?c|AQR^x?yc_BSExy5m#T=`P#0kb zY-9f)Yx4o&Z8+%4#CuTW6KS#K=*ZuIls+subBB}HmkiCT3f&$WA?dN7tYDg_*rc!7&mdDxJVku>% zWR{fCgHU+`K?pNo9rHG*nKXag{r^m~=+KFq1a`=`!dIDeZYQLevQUx2O)GYBn|EFx zWN$$?<=fC#bAkoSSI)JBeiTHkiD2C(Vl*Ibk5!gP2JnSrgg~Ym-4$1f@;=F&vxN?Q0xb3Kxv1v+KnHOM-s1s?n6tU*q|{ zH_}gp?nMe91A(&Mw7A=U@59m9Eb4kw(YV0S+ayvLB;t4~7NwsjF_iK}XFq85w(p?F zDdzpY55mdM4LV89p(})t!eu}{Yt@jr4NFI=lup3bazZeyi}UaH@c%p`N=>KHF?=W9f_Lp7E;4NUNSw2Lw=(jxs#Vm&EJr-9oloL+b2G>U%v zuJeJDU>f^d1^qh0*4IckFK()dPEJ27PscmU+E5c|D{Euz{rmCV%G%bh2R*X=KdW zV=OtREr3obJY%DQd1G1)Y8`6y%xK(SNEX{i942&|I z@8Es>{qwDs_0wr#3a(3~)HO1m!RCk0A84=)XQZ*5(@qvPQ?S0uWSd&(AV6v3Pxv}6BN$S9;W*v8;LT**3 z`aNTVTd=m59!iZ&rGfgFuT_6&{l+|1igSWR_0p++LPrqtd2UP@nc%0++JNjeuKw=e z6`U*YiY>|8z%Z@r*yj{t+10J@bI&0h5r#7tn+5N2ozYl$oOJ)HD=EG9J~92Fwys?5 zh-qrU{Fhewe6`!Qe|p?(KdFA&ver{KU;)eqIRv{-8N&|n#IOtSW`1k;6wCg%XL6?} z@3j~IEpLO0S=}0-G8e{U4re6c{*oF`9Xl-2uS2G)`f>q#Q{?Ne00$r+0YyI1!agjvUsZKTuwXZ`+9t9p2XK@Ui!e(AH z2GUJ?u$3hGUWvFmu{P#t`@_b5W37B6FGrPiWRvTpOkJN2&nWXaB}|312}Gd z(Nq@ZZzr`mSHE?9;rVqO^^Se`2w;I89sNKfkgTLCG@b0Ne)7-?bT!s(f_GGU`RLY* z0^EmJn2iH7+!x@9dMg2x_}|eqXg4%ec@5!8E0;mNQfzw@Id&1ONo!lx>T zYyeN#^#FJnG23#NN#&$KZqr%@wb51os|_R3(AYPkFi zM!Zkz(fFEp+-7Icc^3<IzdCUP@K2HyE#J-TyIAB4-fqxSriS2_V(4zpYXzh@AE$yz^pME-jCk8;dbd zbt(W#O%S}!2{H3>(F8{9rFF{d76x0*<%TXEg<5Z>rj(h-?N8nox;=gHg)3^ z+#XFfNeRz5QZq*IK(6+bz042-smJDUdO2}`>f_b^1PJG`!U`}@&x3slvwSg`y>h}` zmVt>!3o#qX+EnAWh;EA9R|x2zpr&7d^RQEQ$T4NgGPR4gOh9end`XuTCai^+dz1q1 zVeKX^1nS@^O9&53F>PW;C0JI>G?kvZ54h;20n08i2!YhKgQ??Az6b^My}AKkImKGR zha0D9UlV+&x*sc$x6TcfIm6{Zdac?=Qt5i4U3m*-3p20Zo=9nd~m!2#!_OrlN?iFBRO(v zTW_^!lOSlwcAU{|#CZ4pWVnjr#p%Hw?(gIFwsHXeI+PCw4-e<}e*4UxZcfhsI0Vlh zN!2%+&xi9lEa!*EF@A8MP8iq?YDf1Zlg7L~;9N8%z}wp@|AP8}`gs!6Qf2&)H07aa z5zie8S2S%x+j&6D%XJGcItQxLsL88QQeXmQ62=Qw(4IdOW@M1)akW(;DOOv^OI&E*w%32@SMJ`Y+c}E{XKisEFZA?p^w&_wG76KWOKaSqaOl`KmzeZyxqo4S_xJtt{Q6z}UzR@4hU#cgIp1!FuHg54+CLp0 z4z3gYUEfyr#O);1vT{>xCb(h#b?x-;yDIg6d>=};9!fPSZSaMvlxVtRUY6P{gHyxM zRl%s*Z*d@1rD(c-eLSkGiwE$aOue{OoycMU(g3Vh)KB)E@Nh)9R;#cOlh42as_H+| z08e^}przLEfdbOJ;mh-bEa4Z*k~h-9oe$W_^@e#_Be(;wG%CS#ap+-kC7r{#Z=Ebh z;+m&25^w&-K3)UG%<7K5;i>}cf=@IIHo&=tsMx9%n>QO||acVl4Z@pIT55RAf5}v|v~14@Ho-6naIJ^?X5Y7U-hPtj5s_ zvuu-%^X!v(-T^}L{A#Vo!&tT6c;acnQ?)-v7}g5rjWCj$@gs_}2_h|SsmC}J{U4jiH5hR#M8Y#|a8|+T`oSG0 zY-h8r^c(6BF2S+ZdQYmHWd_Jiv9wpjv?Ck@f$5Fv!S0FNQb*D+m|>kb`l%u zU2atG*r(Ob6xMto>N~toTl?N21L3p~j;)@$MOHeF%?KM{(iYmtX|e6Ko&FgNwIjA* zB(r|RX?sqzFQV*R!|rY}ldl_+eAx$02%KaeusM=^(0oZg;$$B-H{ai3!aSZTKQ#S{0Q5;A>oRJgkxA=ap|49J*OXVT{Ou(2qzl0B5FAeV9~lv z3-~IjPR#&_7PGkyikN^#vaC=b+7Hv1a>`yRtDafS33I}A8*0CeuXY(X7McMpV-o_k z)Rf1`&7X40_Z)3V%j`PG$>pFV;&T5bXqct`QcSGGFNYQmeg{?!0UMMEXZJgGgPGD` zDbZpO5XFyjsx7sQ`Zu9fO({|2P^?uKtDPel=r65Cv$aVQL*)&mu>s~86CT5Wiv2$7 zseNz}2Z~F^l!XY`j-7k+$v>BmU@+%aa_l(lJs8)F5>igK9|3xO5{6QD;a5_Jj9HBH z*k!n0``v182ej%OLpsv1a0JTFQ~3d}&k1gV;?s41%8Z#?kPO8SQP{Vb8c^ z$wwuRnJAA89AqOnd6JCqe91;~WFtPmvgU}7(lov-<11);pwrf`YOZHIJE!%a^#>mm z`G|{cgK#_6t;A(wehc3_4rM&tInXsKm7T}1u5@23&F&+Y((z4@a49!^Cts?goK&A* zp$>XbT~{qKX`nTZiwf7f6`@vwRDoIwaixe-f)yM;AuZZmm?riV%kdyO41G@GZcOPUTl-SByq zM&~I6CSWKB)n3Am)A`%948aV!Lh}U!H*uly9}Ro_W`G6Wb+zdu_d_WC$EHJ<>^H)s z?#NRS90ZD|ts|XO+9Z!T(e2Wwb(FG5TDV*L^)kw#kfm5xEL!p;LnTh~ti*|@dBTC3mCCMbDtuMsty!XEQ!eF-3cYPPMG-C6v0?^eEVd8b76VKa56IZ|GNX|M z^xdq$SP^>Lv`TE0X^GQ0*DQTRIAss=apqwMPiWMoK2Bdv>zC85I(h(`V`m>}#-2k; z&44c=hOz|$IFPPTrz_V~)bM+^OuIO*Lbsx!{sR5|Pf%*-xaTvp?cK4qvkywLy41F& z2RF9tnd*j0q^Jvp**bVfjo5^&V;Q}|;B539|9K%7FBBt)4Dgy?X+J#3lWzKyf&^b*mr1XWws#kPC&QOJ}swj=i za4NM_4chMmXlXb>kkDj0OWE@aP?GCT6G#xw1|wM~)g_wVij`8UA(dxo{`i_7dUDYP z%~VRu?@D@HsJ&=mm>b^Izg%2h2N0wW{O%t2tlfp!O=xpx?)T+0x~yU<#4NZN><$S2 znK9>uplNya@V!BlJw-I3k5<;5&5DbzUAIBmA^wrNV<3IR(Q_flMoK!>L2ZvYOBDUqY< zUBxZEpEEwvIsT`3k!t{!J;`<;;J71|(sjU21~9e?0Cw~MCIUk!N|O>;Vvka_h%z#X z>m38Z79toX{oF+qVkItFXnTguKeBeR3Xn0`p6WY!{iHv~{nb|p3MP`ADY7x3QmyV2 z>2~{`Gis4E6G>)KxR^v>ER`1)$QUb(U!C38`&$SV`L1_c^ZULY$Guw!%-|u|W&mJ* zbsGJ>U0X8;3l>Y#^1WdA%2&6|4=ai+biSYYJkqgw-(cl)BNz= z@z5e@jeF)dPmoN_s<^sFvg7@ST85~HR{c6CTUYJ)zG2t&Ks7gKH(_6`>u}c>>|0*& z*yD{Pi5?HDQ>F~Edv>s{-x6;gPc&+oC!1@8xpZbxro~=MfCM?O4VwkYShS@}i~s)G z_g~CI){@%vT~qfwpQr#fSk=LZZ|NwnXGFH$T^Jyg|}-Xi->*d0SINb%*ODwat8%Z11q&1 z#<^8ndD35AYHkdeFpEU+*7_>f?)nmU86iF^S^j~;ga}XVZguel`D45D;F_%Ry5>tf zdY_Yq{V;Pem0`QF0SW)shzJM2z#Ur~k|UTN&PuQ1UwTa&%j2GDhd?{NR8NM17Ob7r zm7qr>R23fJT!#t8D5Mj6!`PfXzH96q;%d~x(_Hp|?IyAgiyRWpR<~voTv)tF0W7Ij zYG;WvmGx6;Wx!%!CUIBtJ=kwUf=+v>9o_s~!SX@ec2df!jdyLx!Tmtkgg=c}pie zG@Rk~XxS`$G1cuH)(tL}vH8H!J2?Fw7{de49~Yjgg)ce_01t!OOwlR__e}hA+%coX zt(-rOb_`PC)F}wzn0e3;jGa7dqw_;i*kJq}iICtctY5d7c0Oo7qga+Ub3y;EN~Xq1 zR6oVcFl*_$$Y4TX;a~O|`q&M8Al*hBILx=4h1FLg<3=X!s*+wZu)37j$aAOGG;*f5 zYN>ft-7<1?F>});!aq_1RZ~AnC|JOWG~c1YB(DOtG#lEAKit^a~b!oW`)QhYA-{i`%ZUK$Nz zjcxW~B(Dqn3XnNxnMfYYnRZ^Yx`%;s1oQQmuvdqRR*dwmpCz#27&gdgniI?H0|Pl? zWF%+rrYAq|d9qJ8Ox!p{khZ+Xja=>8jfoC~mheA1GiTxvcX( z99#36gFhVF;!QwfRX_V(`j1EwQ|E!-t97q^=0$0?>|LwZwN!XNAAsZt)mZAI1w5+r zm)|TzIUQ8ezst*{PLh&9F^U2ets{vnT|9|u+M&b> z&c(kTIaLlWD?67uR~gi}+}|Zw%fCy8erIU?DhC%DmL=yho?>>)7ny_RO3V`^=PRZVAbQ@bS??0kYNFcfIK}sV-xgqyWezc>_`qh0_6W?XfeyBL~8tU%SyY{YlYxV{_}Bt{Q2}ekv(;!UK51*w?(iqg*yA$UbS=<2vcav zb0@HE+(T#ub)rhf8Ae&dCT9>3Sf7(qKw6er8?f7Yn^X*bgT`4QAxi>3b$)t&MP(PN z?T~A&%j9o1UB9xd;fPpu84l9XOrc^T#zxdtR^^$B3dg8r$BYXO*)ftU9Gx>dpKEo4x4QXwMbLf517{uD@@tB=6I`nc zdbCmZy$^cqedBTX0b<>6p}DABQxCIWVKj1>d~vVMbS{pFb3H22!A$X@r7one9Kl?< zB8>du3sru@tVq#R3Kx=^Xk1jqv^&dVtn7?H$K0<5>$oJvPm=2JH`@CGT)d)J*cq8R zX&ZU58W%At?Utb2O*|mA*O08eO!2c;8W{dY$2|E*It5)EuFI>G>>iCQ?*R3idtD18 zz^?P5+Llw=JqiB){d#Y!|JVWAW2?-N@`Px7-x5)BL9}Y=6lTkX|a8cyftCzuwSc;dYE!tHn#9my zU%MKS7{Hv0%q!TGkP!t@Ox94ts)Q3H6Z^}GxD|P*FF8|L59afsovsvE#NSq67%;DP zD;t4OoE)R{(lkiI>$%A7%1Ob-v6Z3S25etyIF>Sw)#s?z+MNAN|1+#DnbjtxINeJ^ zz&deJ->8(GAe&pu3k;p}Od4|!$2{TgRgcs#7F1&}NB-A`p^f}2 zZc*4#r9Wg)PG9&@Jimkp48wi4@neoz?h(N;6$0K6o)klu!MUT1GOBCMz2AF z#xXi}u#uE&dON-z4kDkq^Q-bW^>JQk;ctsg{S_*(D^x=HEOX$=2cp@KSkHU*29wG| z_Sa0B+2COS+xENFRonPFQScy^RqoBDOc}b^v*_OnYHON61Ih8Y3;G%%of6*(m>LJ~ zuw#Yg+L&g#0;KF{ZFVjS7#vJwC1F50aD|8ixJ?^eL|W2`5)ItV7oT%WW_Kh*EL$#c z9bmOUQELavE!Has{(Q&^e&_S;CWY5RMJam{dCAiLN-7D``HRHWmSHxMvq^~?M&Qd( zVlh?@)UZ>!Uud&wISmq2-;j6c7vwo?w^t>W2@5#X6LZYy5b^{I&;bly!Sjqeuz+nU z#;RFEVV*6tEUJkY5A87`)oxrYr*tgbxYEd=Z>F8?<%QFv&EQ)lem-)H5Xrw%6KqUVQ=x5tOv_>|Yu;3cnv`6T& zt)d(qCJ@hd$^shoQD+7R#|5_RT&`x}W+c$BH-N$%0QlLIakV>HBW@hA$;dbqtrUlLyTI$?x%Zv^#En8NT-iEwxD{(NAPHJ|o-M z;E}?cA=#XcX(8U|{fK_l4&EV%EZ-==wy->Z{=VBABpxwmeQSvlUxn2urT2jPUG7sqR#%8czUt0G z?l+)Y`PZ|;Mz(M7`eKBf*WIY4)HpW&pZH?(JgfK3;Zlo5^&$!lP-s)Ca%DEZi}2L` z{CG|Qb6J={EO^o``2vd;>R~Zj@2j89z6=4BF&5H2`dI7Z?(KadJrD4arfVb%Cu32o z`zu^_b~S2Un5tM3oBgGE&#_Ys09)T?QQp9^4`2Tj0x9j1KeZXewzsqt>e(I#sv!;+ z|Js)1l*~nBGp6)K@3?`#{eC3TK|p-mc>vxveK##N)YBnW4Rw+tbPY+{W@4m^q+$3P zlp7p9zw|AR&dHQ)_j39kncM{>!v82TesOcWXP6o0tJ_}Zlh!>Wvv+BPDLl#; zq$BsD1z4TKF;$))F_R&ed^Er9-Ezg7<-L?0rD1`JQeQ%D8R0kwRgZMi(d5++?Wjv* zoMWQ7bX~W*9KhLP35c^@*o+2&(=EoNltj3_KEfUmk(0ValwWrf_Olu2kbHt5Ic^5u zA^jCU(xwsspJpeG&6iqK z!)v?$D~m)Fq_$!j7U{rqA(7!}M|r)^%`pG$6NkDWSw_+T%X>4xAzV_Hm*o$UDQH0$ zcp78Y_L|_A9J!K3m3-kJ)|pcGmNGU*RZ+Ih*L`i}x9c(y*~X@gWf(hi5#7ABvv!Lv-r*wl)_Arw9u`I#M<>I3t;&yR~UN_rUU#SyFu%_B6M< z6olmDbKfzbL5Y&25`);gc#1@eI`MBig8xFOp%|>IWnlB+(+{#gZH7^R+(a?rBW0`L zRy6oF7?*H(8x17aHRaZ%GE4J{_T}w5v$x^3n&Ro_cFgvq*?!kYF)B(BwA=NVv_$d9 zIZ559hpqN)#nOE@!9{5&Q;J#{B(dEPp-UKJF{!>12{mf;mSG9SV6GC%p7)fqgx>N; zZL2Q`Snkde7%ri)QlD8=exeNteRTp9-4eIH6E0metH>T=Xu~zguG`18Zfy;DA|X zu{58C=3}PLGEDUhETxkQFfKG%1=T4rUyvQ(pugZSi=DXq&1n$CvhQZ>_y{uWA?Lqi1vdHPj>};c zzLM1PB;Kd%FyoNn-woDX(RDL-?e@Tq3T^$canuoNS)HyW<;EF}q>5%0*U*VfqU{Q{ za_(NJ)Xi?Is@1<<{jy%D*n11WdQ0AL`x6u4S$|V+mP*jwjcNdqBV3)~-NrBYu6aS` z9KG_|zbbw5?AJ;~Yq68{buB99@9posMEI7`t{TA-b;{mJLS;?mOg| z4|dCg%?I~jgnz}n(TN;9hhl-lCCU2FaLqEb9lVOi!wO%O4xU@f;|~6r`E}(?-S0-} zcGD7?%-^~bXE^Mf1@zj{(c8}+HUA`f^eD!`D($NISK-C6D>*K@7mrIHEuw|?-rSkNu; zCo6Gq9!e44uoK~T1lz4L2_O;P|p`Ca~Q)5jUko-5@r}b>27*@CNQ+d^!`k-R`3& zC0b~0IUN+D>iND7wlH5Cz=9$^K@vG=Fc2AcF;j6SM{O^~g1Qy6IRe4zZZ$Xum~fl+ zQpWc4a7#BBhb#%DKuKSn+ zZY0%EJX{cnJBSepVMcIz0LTc=uvW21X4fP|KE$a)Au*$o{%~dh1Q0tgVC{=2>;r{I znISA_2zC`=M_VeVOE%YZEE990>1?>P%2cblPOO|lrpP~P*2vD0b9NbzAWxtpYne*d zYLs0@@fKS11wy77JjtnhN|lKNkwg3mZGBxi4O&FA^Jg5+y2{=!%i5=BU`;Mu zYX{DXUHL`9ILp?;;v$8aj7;HXaAPqJwZv1NVTu&lK7~>;lF%8^8%~iSbb(=+_2*Hk z^%OSX%N@pTL$41achkPu*y08jH@DNl;ICqDNF@}h! zXa1cA_J@Q%(z&TLHedhcfX@KqrD*|#s%#-ExrtJ!viqBzVHB#uR7V9>kla>JuwraNlRiY@`XSU8R&LR#m|p3_D77VZ z;@cZ;p;NC}>QMQTa--E`)m-K=m+vMXPgn?*FB^%L;t3RdeNY-YFd7hm0yn~EUj z(C9}}q%B9&79cH-q7^Cqc@!}-vVB2fiB)bRMVz!hA3dhgL>)1C0`#MlxB^2H$GzWaWB^V>fn_k)dL*_3%6`k~>(p09}BMlob`?knjxJjWZ8$?nVsuktcFg&=u zJiLp_dZHJifgN+>&olo}q~&pftOTq(sP( z7X)VQ55zz!3M|G2b%bZXGGQAYklhurfNgB(#)Bh*QI;aquv%9;qYxuh-3oXfY9VIW zsua*{)TdAt92+7FHP^WJc?CgQ6vY z0^;Eof}$mW0^{wWAxJEsf0Qkzk`KiGpKt(QFM$3(i3aj{yZ9}_M*{NRwwny&OKc&^ zNY1fC=(xHcIh1F!W-d6Z}g~M}qa1<#}I!q2z9*aqf{uFsE8dLj%lyCr; zcawo2F~h*JAQ0ZX`?;$ad?*MD6o`b-S4l>VWPku3i+q%4Ca7;_n5$%gU(cX9#v*y( zG5Hjh($)wW;MX<412X($EclzGy6YJ5M-1q*<5WWJ0w{p55_PjXvoa9^FW!?}k{EXI z*+$TgWKkzR%bW(a1qg{e7tUO}DG7ofCiDn1R-Yjah&<|#n89KVSi(+ZzOu3meNNtE}%WlYHO z2B4fdPV+Q}z7ST(EX7+6_yc!L(DcU217-`iv7r+TfZQMh5}{M;fW1-~M(EfD&|XO> zgz!8^PXYVI_ck2Otls5vVavr%vdI|Wb_`gXrQlkLXeJ+1z3kzMG-&e%;4~TCwiw`s zMn)FIOpkz#813e`aT=ITGD6lKcJrwLYcj%wOkI|aI!$rZ$sBiJSdwLzIuq*nL=7+T(S$TyY$3ONq7H-1oHGSG67}R0zAPK4*-}{|%h2+s zU?Hr?c*~<8U|RDuw3x?o$rh~WfrY~uB8G5TDc_T6t>kwTrA4@jq~Dm7Z)w@_-L%P= zSi~%-iL#{VRE`?wzpgIl)s`koR9}1B3leAfD@j?z>$VdU-3CtocngvT&PHsmYJiG;}2E6y3 z*(xkR6{M4XY(!*3N>pcXbjD3|=aXc;NB>1V2tiw8h=$m>$4FC6;OwsPx9~d5NE@$3 zQ>fK=NJ398A99+YJfK5u%rF%qeb8%7P%>ZVvq1J1?w$=eA zCpB!Rx+g0gd({x5WLtWfmwID8waokA%?V5nZ!uffnOirB)BY*j+_mFo3a($?7=@V0 zj!HucP~N{vIxb={71&uYVoW#GZs;053+d5UUT&wPFwx4ZZst36dM4{N%UW3fG@q_2 zz3ln8>avMavgabe{V|-GJMtIvyOBQ*FE-SB7+L^-(U9W(N}bt+{_4gbT#C#6Vqv(I_Rof6S^9S((y+_t()SA zk0w4iL2}C`fE7R=^KIxvs|ve`D65NxM{%D+TDpq+O6Kgc3mvhDLlauGwd7=Q)o3?x z@bY9&f|5z@h!dh--R%*%QCs)cD#VWAZp*Ayj7jR%6`hVsYZVl>B3--f6YzSmWI5l_ zlD}BVk8i^zzemZJNbCV8AMYKhZ~wt?%=^vVWlnnntY4G(=>^r ziep*m3QN2E)|x6bCT+M@#dSmW{PCZ;4~zHC6^qU0d99v*pb2LThDi%VRgC7q{_fYC zUaW!;5EGuC!B`eFM2AmHEU+job?cDWHCC70NQ7KUD>CKFm~~cKrcAxs6P0Gg zGGY;NDy;B|A|4p3OSQMfNpF}`k$8Kys$E#UX;kRbBb8G*sv}@ZGYZCB< zQ>UcZ%CnbHQWN^?edmhoj&&?|^^rsRvtJ!-B0P6wAQnkEwVYwC1*==JHL%tqaSO&y zHRWodaYI*GC`&dqYV^yp%oy1JWF=IC8r^H0SD|u!>nGhC=wytOY@n%DR7uUQ!~U#b zx0Y>sZ3Swa`|kl$UD8nQnrdHOk0&*XlWags+ zNK&Un>+B-%?a69@qLONis`XYS{S-VhZnmNUqHFMx>Ro8%(Nog%(!H}$ZtZ>k=k&hy zlfwrp+-~yfdl{q(=TYJJx)peG(T1>+lvWfD-|BneXB_PYjbM1CHs49gE)Xw~*A(+Y z#kRVbPSdn2^5Qo`1vh&HG^zXhLgs}@qL<=3!=zPh0CW#Jm+c;((Of2xF7z0+d66A~ z5;M*3z*pP$}h2EgZ1WGL<6t`#r=&vTcHUE+{W903|^iAI0+Mm-_ zrab7B@hD(vj?V&g2x}?ZA52Gz`ePu?E|8n<9{6%oBxFv-_RCStg2d0nXDY+iY%vW% z7BWHqVGvNqZwNAv%BjCFy6iI;trpcSbe)d989zZ6fl)Y-YBYkgnA-;gk1(Eor??T> zfzQPRr9w6xg~q!~1y1*o^E8xZL6lwI{Su-<6NZwRSFz2f?E=8etPaAdgx({>AiamsRr^y{1{F$yjC2g1d@yFj$=<~cI8R;^Qh;`~7Kw}s>%M5V$* z$~IH>Xfi`)U7pmr{jt?y(XM(=46=xyYdY%OgNYG#E=A^CS!o6eQCIF`P^iEIk{OnA zcTfUDq||W2DNAvZZY@~sSjOV~3i`Y9DzP=g(v`=IKOPP+00j@Z{>vZq){~vJto6`T z$5H(FL-e{txpqfFqZ=*-fISy)Oba8{y z!_?pW3rMCfz;`7@3=otinvtHg$9`A~FkIv1r0R7k6^(-15Y!k681yGyDwtRkqn5!J zGpPja(N&A6BOq*cBGRf(1s~mhIKGdEi+R_5YO)EjWmHO$4g)33Q2D92O0a1v6XP10 zA?6uMFbTgx|G3Xc9&NY~Tps(6CH?B;PnRW*Y5BVz|Fhk`^xZ!7-M-SF4xXUe61DAvL6oV6M)^SS{DKibBUWS5YRMAXhzjj?V3*KolDs#6?@hP;Jq zHwnOHat}CxIIu??oAZusNX_Pf0KN>8` zUx?eqs=O#J!=c%biuJq4MmtWp>P7{En+_5x?UH`qUDxZEzZWN#95 z9$kM&3c}@EoR}MFaq|SKw3GKqPLM3m&9I~I1zZgr8!aczTn%m)QWjc&<8JPo1MuYn zeJeeF(pLm%N>bbQ2otM+YzA=b(Pvu1_jec5QrRw$%ZTR_M7JkFS)v_{%_PTs;syeE zdJur5soDsrHpqMbI|zk<{^ybr@_U#qcB26vtW_4;EeYJ4&VVk$kZQAe9CvHY)5qLm zbO-d5Bg&bp%R3`U5XWUy6z(drvefqL;Q*(d8hmcPk$SQZ|Fk6b)EF#WDwbSfY53{- zLn?$W3WJ};)&j)Deh`gZ6Wgei>GmBDRqBg}Iw?MjNBmx{z(EtqN&?(rQQ1t_Zc7g*tw77B<_entBUNQ zD3UD0$vLXq^&v$3a6;ZN+h*g8n`nk8xyoMGu7rc@os|ncv8R zO+AG~qI%d_Dp`KNND0c#rN~q&S=ufFC0$G+*&K~BxG#@!*woUyCp9hE|Ax3K0Z{=U z{Nlhv!=&%~$zL^owP$Bn%NIFLEkA7yB=LJdl&xiw0au5sJni144({iJ%BrlPPHVu~ z2Q2spE}}x%g~jalhwkihtmy?GMfa0K0Bf-N+x;Zz`+R*7zVrlCtDvRVe32vk+{sc) zH;u+vX%UKtraHy7CH3V#R*ymjwo-xBfzJ!gU&`WAVE$IPw9B-up=+Itr~|4Poxr5_~=psn@3{A=^2 zeh8$Q%w3}ZHD39Xjkbs$BrpMS5X2$17*#oQzYu)zb`azV@L5|=?bzZ}_(COX{gQFI zr-d{i;+h~8SH?43@Byjk>*a{LzVGwi%>*cn;aj%sJ`1eTErE>zR4fq798T@*v1aXr zZ^!42e=SXS0eHRz;6mwF3;s-NR!Ik(6Oe#urc7D#(vHkukT645g z3c+(Hf{O&=v$K0D18^e&8-aos4LG&ZF!IRSX&(*Dt4k_BrkbJ`SvBpMprm~ufcvZ` z)MjwkX3&AtZ)li75G``+51;DRUB8?DAlJxE53X&`U%RpE?)F&p*1IsKXFdq{i;R_UGig2JzkYJdO)Om%*$Ne@dDLICADyA78Z8fhY_;1R1_BvX1&zaf ztZOhm%OcF2wUFPslgg_YXif?imu?j&ZN%BHk8R$}lYVPSbnazzEQIpLE8=9P9)P^E zH_Esd?STm9kUnKAdVacczko@`gj6dO#DDtln!Uc_&yVp5EWJMexc-elJde3v@6%@g zUY4+zLUEB<^JPDUkWHGm^{?COt<@& zxDb06hkq5tj|NH?1&|*1ofh-?B3aaX6Z6K_+10bQ!tL?GA6okYnNGet@_jGkx6Pcn z9P4*o5#w68cgcvqSU|LMX54ckyv;xF%D1h|C*abx_4&t{kXS!qD$uB<0rjaQaGQ`* zzkXo-Mz5Zmq?YC>2;zpN7$OV-avuWMOAd9$qho!>*;4Pe6I_e#qn?+064AhqZU8Z0 zH70)87&d{9C_ZqdVl7i6^e+X00O%fBQc?P0`ua&~*mlI9(wjTJSrb zdaEAYmC2D)wCZJgyV5X$=nhX^9cIz*VqXog@+)EzU9bp+UZ72>%mSrVYG*7)UgLlw z>CO5s49QK4Mds-TILE?&h0Yu{bvKYzZdF1SM+cZem)3)vzGYlUB~m1o;IT{m6i@^73tQuDf}uWmCQp zGr!uA>Fn8nJug_3G6Luzk=!Q#QIwU}gN>(+rJi(ulyUs=s<`a!%H$WjYu=)$h0p9p z2(yN^gOtAkgV7MpV`pTVsC=Du?M9M(5JGaN%?SWEs_AjgxpEVsXU_q3!~X}TKv=)0 z8Ov&x^=z-ZZP2md&^A}w9oa$47$5U?&o%d_dUQli@SDeyR6?lJy|>p)`{ny}l{|Im z>7pgZI<^MEId|44um)eVCB0*kNWS6)ts>o(lpxnQD>ADUVdWjKL}{QSD-LRc7X@(3MUq4u0dIz%4@n*`l!Bvm*G(zAbbma(V2(t2virJKHNcsLgCSDb^xK zb^FE<2iry|nk`ZFGCvEw)dq}5%1dS7{58LK795}^{_&P=&JY?Ev+e)v9a8xI&@Ma0 z_mB2pf9^XqF%=1aHA%U9Y03exsf3*eOwUvbSisFGdAV8#dLd$80~CL>C|X3Mk@%kB zVM0Q&#*O-#y%pDbYwCiXkt<*q%_ndt--?&-SyrpTD;B+80Y_JBx&F>JuGtC94{#D} zqD^yNwJKlmz`T?&>p8G)w`_yO5Xv~#xI|Rl;UI)NJhlS%<$Erb{2w-HV>RO?4$ico z5Y4X+5;ZL$0kgR%a9F!8vK?U3O1laOuVnz$zke)EX0IsalCMp!cvGMZP z#TIbK@b>I@!xDOl^r=xwtVJOfo9neU&R&R8stP#32)$`7@?+^J5ecNQqylN}sz=3C zj>aeUn$B2p4N)IarLh(}gL};+`>NnD(41rE=ivk5m67DejaK-hv2~b3D?PN|!}UK} zss5(4d3u4bTrX)g#QLKQyETcV6>V*T>&2^0bYA982i3<#PC?lYa8}wlHMncOZAoKS zXLK_t(RiAIGP&sxqX%F-n7ksHsIYr0g6P^)oQoCZgE$OH{z5%|ZNf1rV?83dW$sycO!QOhF&=bnpwoF=-r{c+g8}HS9u&+j?#H)J0BtiRm!Sc)?^90jI_-+f2})#qT%Uij9EU zwoQ|37gD_!m8jvqG0p6)4UoDNgJf-jl0QpaH%V8{fjJk|jORIaynz9PDu-r5ElFqN z^^IxSHq-7mFadg)D7HC*e3Y({R33x7XG(w&=zh7-AHq#+N5-gYI}t6=aHodIv<+@cUOTG*sU%-M`SQuL=h_0nm=Ki)w`_a0 zpH0axgB0~lo{?YRf4?;U`xW_x{6feTxg!4m>i;3XkcnPoGquoaK09kOQmI&*id+O0#i68_ux5P(OdLNpJ%G3g&yq5SCePM*$AR+ zleyzU3raiFlV_*X*3_YiVKc=+x_0WVS;MGlxq+V?<_DG)oR^z>x`{FbtG6up9V1J= zShC8`wuN{&++%L*Yw^d1IT%+{a;c7wB{6@H3~N}Xf^aCw z-HT~__2tenjg`B>iE63)z868KJzUB%l)?GsmT`Q)WZgE}U2bIBK!y?th!;;ly|~4x znt7f<<+YXeBqHu1E+xqiM{R!b!x2QPoIzt!EREWTS+j#Q?X@tiG(k%$^Cn|>2d>;& zpUyh4pK4l2&H5J*WUIDTBphVKgWCpE6s5;srsNzCzJv&)o=4CW3GDOWo>`tS%=7O- zakbwgD*=`Dnv7vYS6Z4t>|EQk?)Y5}ZTB`?lw!j*}fkeSH~qYz>8?}b_Nz%kXb z1|5mc5N7t8%Jw!rH5UZF7z^FPIKS`mN9WFJ=}n+TzX}M^pfK+d+Fzb|s}LHg`Tl<< z$@oT=hXvkqBa{<`H2!Z;A8U?j@9F%{lV-N3knv!d#IRe+F%Q5VZ6e-Nr=Uo#YG5E| zq-6IX74_l-?^DmBnW9)sB0N-q3gM;QFj=bT#B5X&*!}4 zYI7wDo~31K9lhOp&y&$haZm0UE;}5(!TDc7MBN|66a63VY=N9|qRwcoR^-G~atYh~ z%^Fi2X~mwC3Hh5SMfDuDUj0+D5oLqJ2zsV?nH6=;a%-M>f>~ch! z#vA|9ABJTj#4?*9qcG4AKA?sxeDAf7{Ogr~!Vz5BXMX>$Gy+a)>p)0!yfgB^Vuy zOP8R)bL=ix_*$ygfO*cUPzf^#P{Rd5Ik8imlJ6S|gwbq?spI$qe;&R#dRvcXb#}{? zjUpkK__|hPMhjYI`l58RY*atyuzujjks^!=>#_;8o-+7JF9($aMsLPKh8^`LdR|Cz zrrC`pyzPvGpTK_)TQy*;7@^3RGNt-n3E{oD2g zN5cjqtg1eFcoVJH(SX8ut5fD@TA}oQFk~?txi{M*((2^V8UE_eri9M>)qpbE8qKBZ z^W5xupSS!|Y0mU*v#l+;AlHnVdpaET(0rfI0i8!MSsoud?-gFhZhoXzhgx>wAmtOQ z{u0HC!XRc_vmDG%B^vvi1Ld}7Zg@X>2>QfK0Mi!QTad&vGOLHV+k)R|L73#=Lucrc z6>CzlydF$!GzJ$)`*YtLfFO~EGm@j$Mjj!o((om332ic=@ki2QiT>I%+4BHN54KW=ytx^OvP9TozSsa>&gl4wBU~!$uxjuCJ`Th3n_t*n0u&20{v4kuO%F zVqXj&dPir_cRu9$jw0a>=PgaFJFxd}DkzR7+pN9kTf64MhtZ?jvf|}`UA=sF`R3)@ zoAcMt$&LSN(*i|0d=*}LIp%$GZ9lvd3s})ZcpK|vdr!kTuGl>7Mz34%Y3S>qYy&*( z{aRGYLCr8ZCD-*@e->yi z7*$leb)F{m3UU#R5eGMkN;@d6d5DY$5~Dz%FWz0f(Dw$Kby=vD!!RWQK-3f{)C3UJPU}fq zlvs%wo$-RJ4WSU@Mp!-OJo+&HVP}m&tRs}n3qcXcjyxr5S&4eFB+sI-_@4q6>kcTa zD!CECn|9LyW&{oE_7p%L166}q6!_lf)n`BzG8y9X=JmB{q;9);gEv((V~A6uQ0||8 zyl=n&DC*WIUU*$@X|0x`(su(`8w>|KFzNwe6URZS#BZ3pcX!szc9z=fq*7@E8`rmd{T=up6X$h- zF%DaC>Z_W-iz1q2%E`H9oBb9Vu_8W+b-rbr>xeXqNV2|p#g*dd*wf@(RK`7!eA_{` zC34%iO#77O*@4>>jaaud3AJO(qWEb@kxXe)DK3%1(kMw1?IMLR`13Zseb%=o%>?5| zu3H2&3qBkV3(j|VF()olV(U*K>~fjUMu2ZtbqO)hiWP$9AeXj!$JmZIl2!fi(Ard( zQOU^3&Gp6CJzWLDtWwnKoB20Y&Z--}V&C&J7X$DWokrqKp43v@6Hy?jU#%u$J`tMU z6Z0Q4QI~@`j2KL}rR$LXP%*hSIO5R4>iXhqvZC){6`;iJeD~jhu1O0f71SB|zd$8{ z(h(|~C0BH{9?pX{d6$OlpZ|m#FnvSc>y;#v-laW-8GJLCcPr)uCS`_c!RGrD%dkb0 zawU8NG(8{SpZ`SezMOvb-=|N9TKs*IVe`P18*INd*m}!bj$PVsJzVRpJ=$)$23tL3 z?|P@6)^@A^^p9z|71-BstF6xd_4L^?73D*{wt5EcQ-OtUksa)+73#G$VMXaCJ zgY?qcyN_1fu88!{dZ6A}hwhsd-M)l=Sv&U13VJhk?2{ELec7=`RAZmXMU z55;Xw$ozU-r|~tIzOfpeW-pbdjZv=mF1I%fDrc~D7qlbjcZg_ZFUy#eh}}TTjVCq2C=dNmR&S^M5>&9o%v-(QmpE^qa6hZ;$kQr%9wGD>di z87ml6je*jzqS+FwtPLC&d%qSkT%&H+W~?(&;<?kU#H0H>Lf8@_%{UY4>(KrPkznW#$; zN@*rntbl7Cl7Kcg1?WRWvx8tg4}DpncZoL$f`R z4=zc_9i8Ni22_Mm{dtewEB2UrAGB1GAYO%jdJgF2oCrj9Ju?8b2=>9H`%;kPY-4|2 zb71cf0;Z|?)03RtJ&`$mb_PShlM;!Uw&qDCIeK<9CD&FzI`il4z89o87nK_b;37Od zA}6AP5oNR_1*3P&Rsm^7vq9A5)4@_&l89PGl8~#&EM$mNA)@M~5{E|q2(IhVJ=g|b3d zuauU=C+92rvna{SudmIpPCwG3?b#33u24|#4up>A&vnJLUXrBfxNmor8~r)Cpo*f7 z0~{z+w(kU@R$pe&uL@rAl$1U6i455O;*H2hC>7pImSz7Z^{9+K6&fdm0=)-O_OrwaXyYm+z+^La*F+ z&2M=b%;jp|V*PChyk!mI0T{j4OR5j3Bvu}5AXFn}z!r$-x}z@^9qL!6@g zxouGsJ%Mmsdx^cl#)pQxx;}{dkjE*WpqsLEubChbRzpjsPN!Bo#J(x84105<(JGJA zc(#0?Upl6*)eDj+)1}BZDz&QNK zx#2}XTkmlQoi33@0H+x@Kl_HA9x_Dum;^3X;*jDOxLM%guh=o}dWkc(Ue42659qJH zx^8<+U$FI(yt;N8wiiVV`4M2)68)>kk`#Q-0u8*A+O3L`hnoLx&F0v?p?CM4-3#)@ z`;?MQ6a@m61W&J+<3c!+J*JxhZ+=!OV}~D zDXpYD$y9B&3DPk2n3sy0oGjznUvL*5m2) z7+Hv@h*Y#PcV2%U(g6}2_8pY#wLW4f+AX*mZPk)cvr-=q(&@I{1P##k;A|cgh-noO z%RK`-UKy$U&5lwTpB~w)uxhPfzA*L$ZUWhZie!8qKrrJoMm%HPamu>3nVh-szCvYr z9h3?tP#hzX<7v+L99S;nv!iszCsjt{lP0P0iADJEY27g!=ELb5mWrHl?iMX!MU)^b zQ2Q+tnUXh#DdXj$GbxH%A@P*M@TSev8?BEO(6$emwfh=y@dUC>yDVhNF_v$pm&)i4 z1r|1exh8~$qn36`XgKEb_;lSJ2X}QO?Q{x~P;1TX3%2NCca%*~_0qxaQapVL2Wh;! zCX+nPlOQ=cdEpA~Yy#0`saQ3q89Vho3~aq*D^>;i!`oy?Tl2Q0Wp27MXRHE7!rm)Z z>AiSyeM$0)-?2)PldnUi>jrCOF!G<|o`7FUPgI7lTh?59SFRa0&Jw2>Gf|y~Wvb5` z6lek~+=#j|F)s_al!;2)+(U)1%>$?(3vGf_Ue9jqgtvE^?ry2kO~_?98#y>91G{3| zS)pzNA?~JO*P2S>O@vT+tf3P=-nOBM1=^8AeQ1?krIrQ?Lf7je7<^A!>r&+Gs-6{G zF0V&B{rg_Vg$NEqc7j5YA{YzF#4thxkaYt`MY<;>HMnFwp!3<81{?prL{NKe( zJhiT<-}ts%`|ps97KQBMVOX{w*3mUdFkxr*q;Y)+?TSF^25J>k>;TTj2T>$h2`oM> zi6||BGeV2P{!W7z5FTyC%moM?yT@S5XCG|YJ&W2}hR6df^hpf*s(Gv+vI1-Obi6Tj zgy%|Cd{(RQksZ@M&>ur|FI!959TDg?+H?mtHZcpFdDkq#L+vi^He+m*0?-HW!vJmz z3|M3}V9^0TZuiAR*Ft<}f=4%@Kmx|Ot6H0j`|_Sv`T5mg{a9NiYrgL*rS@Z@Kc_QM zD_g@52zYHr$3A8htk1z_kmtLRtl*L8jdF$DcSJ^{*bYH8^ppjuJ_gkugKD2gQ0)?f zYFd&OTmq<0i{Drns<4-CY~13a;dH3pcFVpzO+2Q_2y+qo`G_On~aXXZlun4|?8`c@YA&j~|ZSZ>a zRWp&ql)GBB!iUGl)9EoLel!L{t>%+I5LRX)PmNORF;-H6TGhCs{NU-zj(1d8632JY zu1prE=+%x&QKJeu#3M6d2a=eq6Ilw96nw=2JRk?g!=#er1V5Z+>pF#Jm~XGxN>rOO zM@GNiqHDf!n!+zDMzXr9SgDH51L|CE9}Z#xcMgGuoBQy#xS||JIRCZ?F+*V{=Pw5Mb2#QN8<7u zkj>_9badWlVQ3utcr6=#_>W&EO}mAYAExk+FHZk*`iuRK|2RE8Ir+!m-~9FF>g7NA z=`a5%>(wp(*DojkU@!lfNaXbNFa3=ix=%~vi4Y=Zdc7?n98=5viy_p6yLw`XoN7Js4X6nZzI`Ma1c3j{UTYmE z7>tTZ$#mJ6ED<{ee|DHQQ$-1|GYy=~oD?FXMFLzNX=^cXcwXAOY6F4#23Uu83;^-LQiW}H$L0nwec$s{y&|>Lhg_8AJ3*@E#<&6ATP%M7N8u$9Y}@ZK zo#5K7WaA2gic)J{${LIfGXvCrgA~Oa!uw9$lnxPn>oS(SNWYC1z}js>U7AF+4|07z zNnK}04JR(#Y{pxXbUSiiZ;Lk%8QM#V8=TH;L#WN;a@^krif^2=#)!RalNsa|o`e>U z!^lk!Jg&$@|3B;Ou@Sx*n`6St@U79bz`i!+FgYujf(jPqVEZw9W+m?Q;ryW_-%1R$ z4u@yv&j~$kRfkG6UrWYvtdA*}BVW~}JR`GHn<6+&Sj+=YNqDL4@Vur43IZJbAjuckmq?Z`mTGd(AhL@xz2P->ki46qI(*9{2pVPl zeCUnWQ@p1ez|AxHkgXJxh+%C`WZwzEmXUB_Gg^W&2~KgnwQ{(-Bk7r=J_sIAxceAI zqNFSAqBqc5F-?EJYtGLNTdfPK(sMbEzW2Q5Ui4MpXXM|7L)c#kHq$Oj;fD#MLv3DgO zaNuDIp1(OrQ?HYy`{N(=#Pyqhp8V14cJSvPwZy6P7ZO^8m^b{qZr8l+$19OvuUR%V z{ds;w!0>>I@RVMY6Yv%y z_`w-bLIB?ZUKpf#UJ~}6OF%-wwS}#rm~8G86#bL>Bv{~^@Ie*k2z^ls^@Th7Hi-~4 z4ngRh;I^-oW&tHQ>?2EHc6qiTD=rniWm9sk6%Idj0e7+_fYHx#QkRN{vyb$f?)PCC zd?n>_PGp^Fp}4Nt#HvHF!{5hH4QS9>m@IbvOG}EGUF$qLdDt6Tnk(7O<%YS7GHX;J z*w_f5&0ElbijBz{LT`bI>y#{GQqpR320hKVvN_S1Q5zns-hmY@v3pp>GEquZ)fwy* zC9_K0veK0%XlZa0QUZz13c#JQ8LW`HAxO5Q<$^V(+$);H8Tq@j0Ak(@yBl<_HEgb6 zTV`4zaS^W{N{4BB7H=?amyj2Of`^QVQ>>VxIaPF2X7(HEI%k=T7g#Va6DF-@(^&#y z&HWb5z%Q0|jQ~qYP03r47-_|XY*3Y<%Nk;oxnDzO$#Rm{pp7@oG!_#~_RMPSZq$n2 zG==|JlVuBQ(Wh(1gO{2hD;2Mp#Wm0e+$?lm;=yh&dE7CrdG>-S*(7J8JkyNPXfMWd z1HulrAxf1RXGOnZfSV|VkxN?o#wI@|M2G$0-iSOcp4VyJ*1X&lUtn>M1oswxAt~&z z0xGK8|MthyOPBSp13H;pTSxQJGA*0YfBO`4o^{V#KJnA|*EYv~%aqk*d zZ}K)=W>7+VD*G_5SZ9HR=2yXlDIZswo^w z3np64Uu)tOHl8;nllnkcq9|Ae%Vn(pv}4dhF@cUN82UPM?jL8Wl`r4mUc#x`dalUATb%u+ly`NNk@O)9j!@OoD~>e`9ot9zN|m{CDWv zVFGWiMSI2cFC~+NnNFciAT2j0Nlz_#l~2~RQXBNqoVn2_6ZXp{6JHvg6B27B`JrZ+Qln{~)-3(j8`k6UiOw=TX9LhXcmUnl|6;U+-XCmY za>srN)TGTT_tBd)tCj6UsMHydR^xQx7r{AQ7yJ+U*UktZ_R#tdC8a1QrdZzvZ;ak; zGlq4q zsX8fCH*Hc5FLCt<6`k%H!j-E81)`FS~lCKk1X^Z)w-GtD~Me z-B&W#1FTtuG@`WtYj5c5co6*o_tQ| z)=*nlVdsVLj{ydm?Us(@)ZVrm3gAxEC%|6b#O(rLs8jN-X#wx#i>u2X@DHRZLFhw3 z{{TjAjEi7OPR@(<();B^!Qyz6D_w1`ia+ioiZ3c5TS=+hjO?u}GOx_A*5*0wRrevHClx$gP6nN)7-AqfS3?7w@ z3B0qv``3y_K*;^am}TC@vs}RDWreA(16CEK7$1JNS4}bOEEmsIP-ZRzImwL(1enP(cLUO>W zFYJ0bC+}D$?pTEf;N|-@EhQJ_E6R)1h>$%hO;8A0)wS~zMn)kWLpR&KG7Dg^zcfvg z7`m?59T#=lI+!wsTA_v^m9f>AeBnB~+Eisoy{YnaYZz0Csj6igYbAq(h69GU-QGWh z#tEZM{BAd26HG`6=supj@?}+WEibWvzB_W#(rLCQ*a#f_ZV?AR+rJmSF2j-OP9)S3AsdE z2QW~LpK9Kq3$RKC^RE17MCJtP9+r3hc6xxFM3m_QhhRRbJ|i~Yv_&`3FeW?P6MV*K zvG{E3vcQVK?dq9t9hi6c8{#OjkYe1;tufCY$oydS^b`|-|# z4|Q$`+KcI%>#E(iZ%7Ne-TvMfPmx%0rI;<-5OL>Pv?n@0puw`%E3u-|sf@B+otkx&&_Ed-_e4PIYs^q(FJ>1o{_gg z>Hm2Nb&Vs>rG731lW&EB_dm!c;q>>|B9nDuoO)1u4ERqY$I*<%W%#?z=aO8OL{w&V zceny(kT^UW^loyr#(Gz_$7eQNRIMF6*ic<&R-^!R`$0Mo)q}i7SF8vvW~pL}g!JF` zvtrc(FiW$fri{%qQbysk{wpODLE&Smy3e=G;FZR`?+MYdPLez`l;r3v|w0ePfOQ{ zRLr;Z&vb5qt;e-W;Jm~~w`_BC*5ymd6pt>;qXw0_#e932AjMlSu@-D)0vL;Z_~0sk2f=SKC$G|4GI|vGN^9r_j;s`l@G>jv9HX;9 z9%Hl*v!pv6;O13(a&7I1i#4Wt5Bg9Fph&^x(Pn9w1*2x4$S+b+%#(&O|ST@V&uh=mL)4ZP-ArH4UU;AMYAO)mQbQOLBZ6qBufFo)NIL12RB(d zXzEBU!deV6{}f|;WSiGx)92M3&!$l-Ui+r~>zf#43bZEczTb4PGi(5s28A&6B8BgU z5AAT{S#r5@o>pGYSykck&X{>2NSDt^U3#_C*m!a&?ny4lJ%gkkt&KpIzD(&pO>Pd4b3FMARX0JHEeR--}8LLV!+qii(so<^&$|x3WVpZ zRQhsPVO{?OsGX9R9O3PNHY6jhX1r{$5}OT(`L6W6vhE4V6asJofPzpj3E3dzKmCl66rp z_#n*G2kkB2w8^d|0A`1`((5X}uZY;K-TUXM2HfB}($DIj6WFd#}Ce ziS_Z@9v|E8TrG*=rO+)!kxRnftBMAHJQJ&xR%9K$IiY2kbtRb&hf)Ue&sZ6dw#k3` zBDh!DtI+y5&BC%#0 z8QX5)-)+(#q#A4BFMB$C<7~o%H8TxD?mu?(|Gc~TKXfbgIe_1$wcs(|?RYfIhepZr zJQc&1lZi^yGRhQ-PrX{InR8h%P%pKR(&zg5M_wetC z`4jl6Sx#t#Wf&Y+GWoMn^U4;Lxv1R2*w#H^{%ezh;J5V}S1gMl2`8O?Goo+5y}TH^ zO!^(G2*SVHOO+65g%&3Kr`k8c050Dxj-j>RETgw*k+H^QdcoywT1%^~*VuP!m~rj-J7EB$b~S1c>^J}CD+otJZ)hJ0qAj9up_`=zjv?eN&N6!K5tE7#+MJjvPJ z6PeRzXE216%GdThsU%0wj;7?AuXsVL0>QN$!kGPD*d;D1HxLNLKRqHRqJj}+v?K+y zAYF#TY|tu**lZt)?U94Kzt{OF)#Vt!?}=33y>xZa1gj!u$zNZ*oRV*iDPzPkay31F zeWu|XA97)nuI?Tlf)sl`ECV{W{&vjaV=P$MpAff9@I>vbQ*rfI^kK{1N@<)~^JJLMg0P z9h+*?eN;BrPBh&}aQ$2@$PWgen$J-rMIFVZaDEyhDr`Jw+O|)p$5Y58J)Rz0MXcaP zSO$q2+0+ci?}gMpcvC{Yu_ZZSjg8O!I-VAyYSRv~=NDqU1^ia^%pa_2thC^F1{ZN} zUvx8^CL#I(i_1BSFYyG69#;$-lJDoEN9$duD!LKv&<2XNue} zg=;wqbBpgNTvhCyX5N0HDQNu@#bb*O*YXdW)M4~^Fa3H44sE^dPAl|I6OABTFLdyrHZ)%R?fi<+TCbksQOvirbQL?&Ypl!~ zJwx-}9`myl9%6QfO`mVYu_B&#s&YUJ z?!C?Au+jtn9llzl_?ySWf>aN~-wtBv^Ph%>I?=*z@NfPi@9HQBUA*>%^HWt!Srf#C zu}J9R?e+h8eg5^!*RXDw-4gIfs-@A&cgcH9zqLd6E4poEYS6CigzHN3_SJPOQnwY6 z8}^`dBX#?lPUU=X1s=%X>7iz}j8wfS&}gliKBR9hFk$kM!cltWxEis@(fB}AT(Q_Y zxh`o%l)T?v-xw z@xXG$43h1oBve|dYtq;JD&>dZ%zLjjc`&~1*!K6)D$(Gg^xA!gvH9XW!=0I(Im1#Y zQSMM#)AwRKXnzIYc!4!#MaYBVh+zJ*3nf9%ULzAlX@g4bkkTG^^w(5Ye@K`9zE^df zk0@l*U$$$0d0{k6TZtykAtMQ=jBKB@2bbvi<;BhyQ&j3+RAWFo+OKpnXw2WbMWn;l z$ftGpuHo)=de;rz!LUZ`jMkA?FdPSQaktJD{Iss#?ou*>%HYIia5g)kGVE=C;E^A} zbLqCF@p4j`10KW}EM~jVp?Syj``5;H&d7`_Y&?c}cFMQ4!=aM0 z2})`36=bkE&&~ zFGML6q4PPOK-*i1%v+zaf=BRg!JUGBVT*Z#X_oLiPLjYB&Pc&;8JSCH z;~lOgu_(e7lUn7^XsJhqKh&Hq$$}t6hYdz1^oMOnh|FcSEf`Es5SvJjydZKJ5`uiK z-@I~EaT^SPOv89+A<6~pS|mOq{A44RyDHwzIufx-?{tAo>{Mk+WN^EVKiHkTeg`1Ye=Gs(B#%*aiJ&M zYIp1P7k@Eg)rie~Zk;VC{PW7bs5FXTDn&pfFFh}f>B|DC*xIl#A7f9aM5>otRcZPr zvRo6F+p|cd>gL*{_h=q$#Bp7EzcFS#0s9crtRyo9@YMEk@e+xaJd535H&6*g4Mlqr z+-9GpCf+rVWU5}{a3Kv$&z4C^IPA}gR=3OopwS|Am#*~UIV?zQv~q_zt(u4VMUd%@ z(~qaqV-$@&g_B7%Ms=HLUEw!$EwMj_*1Mtej(`GQwKRe|kt!iH0qf9zcIh=VveVE| zpCL0(bDPF=_SmUK$0`xOy?5BhphvWT;hbhMf+iW#aWP0~P+P_|ISDJdPLUl&GfC+k zMbRn95hZvO(V)WYDaE6RdJ6RA9GFROq4Fr2zTIP`2((#lYto}=dRlixvmQk@q=k1h z?NM|CT6tPo;h|aw zmZGSYD^uNBa^eFMv(07@ZNQRjr0M8s8-=3$Ew?= zSMG>u$K1m0Zzmr7eYz-F2k80LruEwkAmNv_M(~AcVpC_WQ%@x z<7sPXue7LaB2>v@!{1OPj9a-8z72qLGDVx?0gUDW4Kkn~Nl5QL+fBwn`jKmB-iqFs z^iks@YzlDx9Gka6UuL%yMp}W^>E+H;UW9Oz?zmfDUE;}yvArZ)i)?7v zRg&3~t>|byOFysl&RiMw^1k9qF+@;g)k+dEAKM0$w4#bfch5$&+rww)rkQg)mA#hs z$}93mpCy>s#aQEqco|#HgQl7N9q!!+T9)x$LA8$QmU6VBJgV6z*}I3KefIOn^mt;d zcV*Nrg*-85R_z&UT!lO_*1Ix}<^jTwTQrlxk)ue)JTb6WqbSBbF}`Z22K54(>E<~XN}s9GS1 z$H&v@@tECl_%g<9tJQq+2g1rsX`QpG6Ou)4@jTk8_6>F3%cwjQ*6B zcjS&%!5sU(XJ_R)=XYF+V8u`0L(9!Kqpk+QI>?LK#6EQ*%f9m`&HUe)qEZV@_4Lx1bs7r{-Dy7`bW)vyn*kF;VR^PE@-#?FPNw zg8Z{FV@=3X!~C;EqN!PG5aLcg`j1&^@#is1?J-O3F-vU>&BrXY$1JtSEVaihwUp;E zOYJdB?EqP7Xted@swGa&U??_;YX44oYNpNed6tQ~R5#+5B_yD9dT+0uD1cJ};)Y%S@ zsYa}lteBfFd8OahxiN~3ak$5jQ5_PtE1PYhU9o?ecyubm$NArQqiJOg!4kVEj2kFj zbAu1|5PXWgU-JqM`!&l%neXDb+M>~@Ob`xBcCq9&l7Z@8TJW5!jmro#ZQUu}uW=i5 zE}K0kbiJ+w&6Z4hBae6bYaRnL;tG(9dcjLH3V^cK5{nI~grX|>1Z_{zKUMZ8^^YV{ zM3qfd8-UOfW;otDaPK0dyOu?H*BIubczx(ZoYnX1Vq?;*&2Fe;c zQW+}+xlXDh4$d2Ptm`Ch7|}KUsFX@P0LMz#@e?)nWQ8U1i*Z#xO6aFr%r+_wPRV?? zjidCx%!gYLuY=>>ZpKWVQ*``xRAod}(Y`4u!&3XlTOnht(8TCi)PX!Vg2v3Zy>6Zed`1z?db9?=b-{cA zhqKi*ZANJxp>bC}$(>{kF-6as-^Qw$-o^C4WTrBy(D=2!YR59M!F`E06-26sN!&q( z377aBGxyq>eiULx^0FFuxswa6!2-LnmZJn)kFFER9)0U{;^^BEMgW|`shn`OZ1pjv zxG9&Ix)?9xO8-J@*56_Y8sx+3^vE&-@(=j=FWKP&ZtsF4t)~O*sA;6 zp!`l2HlC}SYW|_5G6`q>2Ae#LaXtlHdPZsjre&8SshG=e_S;WB%a^hyq%(N?=%<#A z6&T(=ts}fla||#q0Mf)O!@4nU``a?4R`CGa9jCR^j|G(Px>YOOS#8^S9i2UgSOu{O z2eM0Lx$88k-Dep`pg=s?AKt-pUT2h#ORlh}dd!$UeM<)MSEC4ldCwt|r@0)k2~;BvxAet|l(PS<3A52)SikQPQsuA~5Mj zmQgLK{)9+~GLGD&adY-K0+$mm;-l`0iO*su*_ProG1gT3iwn8UrD~`#bh%!M@);%h zV`}*qTF@4wcVa2D4tH?%s{!;MxtC$7*ps+H$Hy@a^CTyC*@RRFtA`xK%u=bh_Z0O8 z;L{S!QaE#TIX!Kv*}TN8b=}g1J7M$U&E%br+qH3wB09jw1;pbOC+}2v^A#Fn@VQNk z)6eO1GBCxr<-htGf)b`$Rp>9Fe7iR{sKM(+7SnZlsSA2rNr9eAN>fSmT;$?R;HT!L z{M6#Dpq5ThwdJI?R2y9640nfTH{Kr`rX^X{Y+3ADp)TuZWyRqmM5vrsk!9KIb(-h3 zRnGZyLD?{m6Z+uoRkSgcCW>2cqnej}<`1rTZmHFJf4yhV?~qvzyjfghjU|g-o#9;_ zJA%&#NRoC8zE-MX_@ve1bv)uCuYk~NPGu_>W&fOumyh!*(>{kbZZx)E9GYJsizoK| zy6|g11FMHbAAaTb6(2T<)E_oKNpy-b5NWo^M5Tz18zQtpHN{saK4?%we`sAlVh{l` z0|y#g8vEPJ9KbTR;WP}5=0O!#urvg1ltrSiEMv!5AXPydss>N4jE`HHN?0}TXyj$4 z#PMs{dbouT>p+^|Xq4T0`^;%ZeY3RG-Qb=9N8E{w8PQY!BDFAUp%oF>M+L6@mzQ_D zO*NN*^2=ScS1ZBa62B9sGoSAY%lR zVL?z<0x>&EQMxJRY_gD+3$N?E{2() z=vUOG+m;lKbLF%01tLV({~S}h30FR%F9X`##%mk0ano%`^iWUCd zqgJOeih)JvpadqXo1#6SuMWzmc1NMltj2HKDX58SK-(LAITrpq5)ItzsxoO0-iK&O zuQ!?5G!wUFJn82={(Z@lVjhvXK?j@i-TUhxOWQ)@L#KAI(hK~PZ9V;9i{;Zyt!pk9 zS0B8D_V*iB`(JgNNH^c7gQ6PPQH_t<}6N!2%`eUQ6srleEXi6YX zeI&$2qYF2(30j9SJwcFWbnNA%M$RKReE+V!@Z!l>(wpMH7Olrt<}m#>OaVx;-EtJ_ z;^fL})SqHrs6U39M+;|4G7ni#-fT6o9e+xGCdzXcvL^e{GA(P`qo*Av4WlqRzHCy> z^G0~w$P}7Wrq^qcaCyu@WJ%3Vw$$&41~;)^&JGSD%Z>Te#p*!@zOzXC1HO6m=?(I6 zIuX*crc5J*Mj0_ss()ZH2`VANehx%Fm=} zeoPN4*ppn1%9*I|ttivx{T)?j?^$VvQLh96LDE~wjft8LwIo{x^(*{l`{HdH8E3dSkE#}&$lF)wUMuki%!mrCjl=M(*xKt^y{;&(zQn>NNv$ciaNv|+ zQ$MzgLc*q73r(uYrreZZ6Hf|E;MkQ%499pN5*jnNJ)~HKwbCnfwt-GohnLal?~`(B z`zE?*j#TACsH(EvU7}(mFP6{3N}l&@oqBQ*FLy{IS6yu=n!v-MSE=%CJm%jlb!<`# zX;^|G?W%{kg5@+eyMmHLQoK2QoB1y@6t51Il>yL2n%4wDD)-QC)YVUe2=z@hjj5|9 zN`Af1*1wrtJo`Js5b`pUQkx5I(o0{7Rashgwwr%H-)6Y?jjQk8YTBSreh_MX>#eNF zoXyC3{C9#{<6gSvsfpHc1K`bA#-IC|NZj>X8UQdV(DtK1wc^NiHwJ$vcA}5-r=|AT zLSN6s!t7>35E9tv>dB40NU5Itxf1RuVq04h;6KzV5gHC zwF47WD9VHtOqFtVPn20?#Z>Nw{8flX1i6_}*YeSq_A3TK8G832SU%9bX4Ia-6Q9h7 zsd((h)SU86$Aqh7NW@(AK~4^TtU4O3sYPjRdrEu{{m1Ur(=rKdE$$gnEB5}beOi9E z4?W1Mb}l}+%Vt9)JF>I{4ox$}ZH}id zE~+)qX2a%O!ibFf4ed*6R=zIzT@qdb8Z`7UaD;~Wr*bf#nD zGmX?-Tpq9_o8M@pI!UiKxw)tf+ZmXkJbZP5WX$cozF%DAf!-&iL8I^y{!v1BiyO(Z z{h|O;33|UTqyNu4QkdYIjsej*T=FT3^$U>wDAEq@rDP(9`>Y zn>_y`GFgh4j=H?R%>Qa&*K%$uY3$LT)DbjO;=-uK7&O?qK_GV-kuQTcB-Fj0YUv%x zYrx`0q{V?IxZqIEnt^uLuoYlE-C!=FPVM8|cfq%xm(js>46Cc(?EB&1*1$eK*slC3 zj(&eSac|5p#-0GfgkD<1lS;_6&xr@4F%2V`>YlTw!+f!jKs&Vlxbo$2n!g@IQgO!` zue)t6@kb8CzI355g}jUV>?rK&Rcn5N4<{S7ASEE(NwMr7duhD~E}cMwU=eh!X_ZQ!Qy8a<;F^^n((urH4;UsNc=o+(Uq}x(bd*3AI-D3M_dj zr7Yy}$m&%P!roBbM=RCZEdYrjxxmnOwkIIiht`(PZJ?wc#LgTh+ zdw3&*1s4_-#&J$4FB_*nnKem8kQ%p^QhX*G3VyDl$C{CrDbraoYwXL+OA#p`gfe7T z=>o3AI5y<8kWjFSkV70RRb#TXvlNE-Jp1FdFE(0J-zCzO`(T(c#)o40EEscb4xx+>=>-uEitb7-Hom zUU}1@GM3i%rF3g)1}t%M+I~a5@)c3!$W^RfU^0U^SIL;um7R{qY~?yA=aXT*@O$;C zhrn9ePjZm@R(YLJg5tWot$BU5_s5jKvscE;)Fb3v6)`{=+W+4nU8}Fy#uE5*H{XX* zn+bCY-kT1h@rhi8?_LGXm8n_-wql)TP~5w_w}RewVQf_0=<1eDAOqh-29h_gfErl(e~+*H`%tDK&-dMb z6V-l(*05j&qE6G;iih$#73USffGZ&kU(8y$&3pQbZ}@z%X~+hMv}08euA~T9G?AZY zZK}#%d!k}H4bw!SlJ_$yj5Q5XF=klX)f^gH@G>{8UVs8j@|@3-X$fr@^n2@2*zz8s zL~PP$@$#5ijJp3RAY1mBM#~Kb*(uJTbdPE%`lu*dnqxDLG-}c`m`ikQ=*+@TTMLF@Fld4Q<%(xZ38!3fel9L7>`jTw8f9*AKue+?vv$YVNXN(ukNiDPb( zrcnpD%v9x@J85J22qCL&%Q$>V-vvrQFder>#V&FSv%y1(E|gy>BV7}c<*SUdtn$85 zB7Q8`>h9|K@lpIbX{Ua?Fk|l?8>Hr#9f);p3k=!(=f0%g67KYO$NY%9@8BbGQ{m*x zo18b2@Q(g>L0`hx9a`Pj!gb^epu~G6>?P+eZ-J){=53h31M%Zl0fAtD`=Ep85*q0^ z?uFKYQP-bi`?HVmrtw>G${Z*20xMjBRS)>+b)KrwH$EVfr?0H+sllDwTJ&0>%lTNG zHKy+(196>qBWC@B;l1bkW)3q)Z2``9o)ks4uzzhzp?OentU&s3>bo%;MMdDyF-lEj zku5qVCg%HgN$vJ~WMl;A`}?w@rknF?e@(6D`=9~SXZ9N~boYSS^L_pb>-f3b@Vy`L zhpMdhb^mpHXFYS%WWKvnhYVy#CaR+_URZq<^ER`wImA!yApgatWn_VmH-p!O#qlFM z&4`$<9^HacOPYxeD&?K}=A(I~V9e;g^zOVzxV7*wfEbPu=KNRJ4E~mUa*uFHlCr0h z0X8^knZL|&T!WmswIBAuZ`on{_{mpVSmNKX{l)LXlT@0A!u%)K3qLP1`BVJ6VMWGd z9j^VMl4y_w$J&pzWLe5rEFJU=nHH>OJf-xTXrTy)L)8da#Cy_5P9AY=4^t>dv{*+O zqe$0+XXokjHF({^KtmY>Q_F!~+ieWI*T<#%kM>S{y@-l_-P=8h5kHq6D@C-XcAGHr z*2f-8rB=L3R!6T?zwGpkx2N6O+e0w^Y*tKEZmcHB0da|?fqW&5*S9e&SOR0p zzBl?vn%4#2lis#gMiU8DN46Y~dj->Bm9n`Mu$PZ-TG|F-Qj|*1jBicN>*V+XCF8Zn zS$UjagQ73-IA-Km!F5Nqho-(rvow$<0rKQhCwpbYFjRhzKh^U2jDFZ71UPM}eMsY7 z+x4kQ)zP;=3_`sVb}&4FI&jws(RBY33%xoBOP-GQ+R(*B#X9{`3H7h`mQT7V6jOg- z*21bB;#Zh=Qkp*;|H{$f>)f_Vjj78?PZfnhDqqmDKu-L3g$fd6=CFlITt&i_E(Iob zPC!g0C&GSPZlW}%T^|o@%z-4oxh+o&Dz?E9^VX=`OarrqjJZa$?q0W>x9!|QOuC$g z8{CCGvacUY@%V4w6WCRoP8H|&hOearP1G!S0M(90un@av^z#%S{{mI;h6sDE5L;|a(3v~&90}fwP$mP5_ zvp+v}zMjtB&vMRvcACDjTE4n00Uk^5EtcOpynuy;ohx&1>eKMyr9{ty9OfXVUk+8e ztk7iooE|t#K0xuL@@I%Gg*crF2E~{hHH?f+1O@d;bqRsptEWOPrBvxE+R~EBA20< z-4vl{KHLvOxQI-(xdHmSz0CBSO@)VD7`0jk1V2pzj+*!)=&%U=W|pte?cKxG2s>OU zz;iO>t-p^9^C%qVIx6CsXy>At)0)6)15?=rT`!_pLmuQF&rrD!1OfIT;2!TKS%~QL zv7ndjOe2Qp$n)GO4^`KH8Q2JP$aL~K%^bmFb0mDm!$$ya{7a9Tw= zJ32O6U3>jmd^j07w|)TZ)2P!UK85WfCc^PA%+nJ0&zCRTtpvb*$`irw+mKoDN6;^z z>sAWy)Ys77E7lM{7cG?=OJ!cH41XSCwG9;Q`AmVB731TTTC$qFn+r~4$#_4o?NRxs zD%k3mzD+QR-Fw;hCBsph>>XprF3g>$%1a9J_s_boY6e zcCIZr#uqMqzgXy!iL2i?jl>kqW$$`+T62vu#^KG&9rY1ubd|5G$V}O}FAoB~P{LpzZQe&@*Wv6wQ5j0JDvw zOI<{To;DN@-nel+B!!>9bU)K0)+2LStYxw^fBCi3^Z)ZADy$^74!hNki_&Mr!99%y zN5+%X)G!RI_unOiBMM)bmHyC9UKBp_q^f+03d63~PJ!)}fhc_Ix|JcBbw;a3va!6O z3n$Snt5+<>I4;F)Ls#%OE*|gC?Zi8E?wM!*y&>6Pe=~zTfh1e^nL30t{C?!ogMX3u z%|1P%x54)?YZdq{XAF`uSo%!T=>z)JgQrnA~Gll8i&bmL^(TNf+YQdMXz;aJY$ z%Bcd~Yz3FglC$eWhD4(vkyq@f+LDdsFd|Y~Gh@lc1(WY{>t*3q4etm@>QyKsfRqIIS@eXS7`$F+XL*d}qLuP31eP)y@4}n$deSRktaInS zuy-DYfRrOb!-;BB+P(dRzpQei_`ao zRPMD$TF*@Sgjfswai0_G){8K0+e-fOzgWHg?akFj>eF2$WSGp|EWaw$W^W7Y`nu0o z@KPZHnYgp?b6Aj^j1NYG1WEk9#u(e;nO@Qo5aQVtG1fXK!||GP4!PYiiK?n)xU~^{ zp`g0o#+=)FY{yv4ln|>ma{?p_8`~PPSNc#hx*F6~2Z8XGqNcZ6{PV_mF4OT$1<-$I zz)uXox^3vTHBter=5!3+*T9wSkOJj6QA(Kqm9$zLt4 zBSeHmy;-P1Y#U8ZpibHd74d&vfS&dzN{HAZ;4`SzY;V1R0jrtJeyhBd#|{1So&k@W zXkaiX#oTg9=k%Jlg913SqZ@EaH9-`s=N6Y0=c;c$swzjrprcNI>Z6#uk!Kl5CxczTk%Ah8e7m75|dHB7m z0Yln!50ZN19MetF=H2GkchV?MtKCtm@uT`tf7CeVTowH}y-y$E*{eUGR!+LFX~+jj z*zPB0cyB>2q?)O%i&u6T)z?Xel{rs8uG5q{A-PSNE?h@ko&!eY(1+0BJ!<0(xX|Gu zq8(!>F`moDeHQR@^T(jxhmwIjQrmyeCCThZ_zWd}{i6CrPkXbC$=9pnHVHi85%1xx z@htr2S-rv9@w9l~%i<9K@&zsp35L|=lGplT=Qz-7p?zBzVRmoCMGco)GgQj4WANHO z?`62;vGhGB8R?#shu0X!DcC;=iGP*cpV)|hz4yNG8&q4p{kJ}l+H-m6%;=w%{3^50 z_EMm?&$eyD1J#3l$vFaJ5=gl(lX=5npQrYuWlNkJ9JTCCyYCZy%D?PM2LEN#$E4k= zD~AzSrn| z$xnOuh-myx@*C`tk!P*20bAfuNLAU*w@H9ixlBxa%@F2JlIF%a%|O+M0Hgq}QWJ>y z*d%y5@gTq+^!)Pq?Xd!L;h^kB6i47Y(^HNWH9egb0fJai)`{)cj6{}FQQK=A^!y(N z^w>$Z5^#EfY@AD_9&`-aQ(A**SfuS3kLaNT&7p{cK&Qk==sGW69)u!u7TR%ROXBR2 z&BiTigDEzC=Pfw7PyCb&^csWc86B1-(6DLUD-podCZw1dN7q20mkEh=@c4O~@dH}0 zqvO7=s%GKQTGZ+{Y&EENUu@(CPYb1nM<+0LVvX5HCTpcSg zin@{=ERXei2H`2{yW+Z>Pze$t-lN%03}vK{#HL(XQ>Ddt4dzFE#)$10?=hNlz%po? zLFUaXE-Y?;#WuJpqx~A&s)md3N`{%5em(V*jW9Cu_G~zbc5>hmf{pkcPX8<-rj5TR zP57>_5IVu5ldY9*>$NYP2AzdBDkI%Mwoa|MN>j&^0MaD^c!S-c+)Y&|1-*uB%sLjuu!}I)#*Fz3nu!3O8fSk8* zo;4?q0n~~?^22MTOuxJ?U~ap>=IpI>0V1I z#HfPTJ8ZV^k^Q-83EpHiy*f_s*H;@WC2CEGcI|t2cg}4QS)+!kf)$m zy(uTa`sRJD5duYK#DllyMr-@Q^{`w+EW_6P3ANE!guQ&w{8}#T=D>3pIl*?jhrwBT zc_EE-6=y!`wgbAeenHgDZ-M)CZo0|Z!W^Jklw_ujLS{^Wvq(4Iw;d`9;1Xk=UT#8^ z1h!EcH+fo&kaLqx20E>cfbV8DmLsIE^rjic)QZG1onYJ^37$M#M!$wriQEgZ%Q(fn zdx3WBdU@=E;AV*+wZFcf!-0X-_eV&fA|BK%)<-cII?q^IjhWsU!2E%u{F-ipgTOWW z4(!WlqAwD8##%)4C-3tztK@OuHoG!w@zA%|$7+*Hgf`ObO$M$BguMh_uH@54y%AjH z$~hOMD!juVxyoltIbBS72sb=X>l6^z+TmLAnzGW3lsHmumfqWnr+1VB%c=p^LP<4S z6`FIzcpNOgP4r9dSBn2`SyFVBgppe_r{pGMUmDD2)q;^TYnh2;8wx6cTkO6nmw;Gp zEo#6{pjxD47}uNLqk}_~eU4FyTkI&@Ci_ZT+VSXxUg6|u8`2cFV}p}DW%N-+pAn}?O+OT6294%&U?b}0PJ z{v4&(2f%4ce@@qqd+x2tfwLW4ETPL)4_;o~6=)A!zR;ghPdKBYu^$EW zznzDDl~b=97bjZiN5vJiEr=TNr4adYUgmV&viDig*E(eFQ*g^9gMeGBxxDsk|@-f4hd?CAGiP+a^eYd!0p0!S!k}PdFxwa zF%B9=`T&PJQa}>}iD=$bZZ>=1?Cz%R0ZD#6i2&&z>ymU%fY&vq4428huKaqH=v z=^^v*ZHCvo`~49i$Nd(Ptjx?z{-%X*R8kLaw}H6KFCJb2@-IDE*-t+2Zy)CZXZ8B` z!+~i3B%_(X;1?GQCq#Yk?~iX{Xq8oc!b>QkrejZ0ecxAPELvDw4o=>tG(t|F<8c0_9$i=&D^LVkxYap?!4Vt>quN@FIPakjP+>e zCpj5xY%dQ7K6H%Bi_B6hPPf?DoJVm+^n_gEOVY&6Msp@F)wXl=kJ zLYIf;x`xaCtd#UF=zBQuwcSj+4SmAak@|ODCToqj*oUjV5@ZT=Jtg#Lck_B(V;zsZ ztp#yNW6yoxc}I8&k>TIGz$y6F9C25u24X*sdqnj)!Vo;;rTckI7soaaG-kGDtd!iq z1uq+HIH?JH5JWn}!F3=L)1K#ABDnq~MnVx)zx^wZV#sLD0u92K5eC0$6!5A4{j#Xc z!Ko7coWP!n-5v^F+FD&Q)M`Y-mF$5W7Deo3ZkgmcfqG z-J)et?axcZXiWnP0|Y(en=noewFjcVXg zA5~hhBUrYCu5!5PTX&+;V@lDr^o1~C&Tfr3Q@)T1M+<3ss-dAD+Pb1`m&F{+4pJDF zSOg60B--2s$3YThp;;O(qY6qZkSt+;9ViYP9FHMYoU(STCk&4G@}38^E`x|YiE&pK zYlnpHEGwY{$Dzol$vf<$L2RU_mBbZbCIZxozj9dz~j#MeT$FV{X@^^ zafMi!OT4r_Z0AF2GUEPS4v>4f#&bUAY#)SjCdC4xcg*v;XE7tgVi+5Httd}3$8e8sbLV)%Oes2x-7 z!s6`AkehT8dwFQMT9c|}WIzc?A>iKLWnmnx;#Jzc=c$0?sCi3e)4}zAQ~-;}1k%&p zIwL)~$#%2t^>F<3k?`=qW>P|~W^%LL&DZ4$IDguxXh>iKc<1thmCSS^3^}ne}vzitPl@Ob6JZ1cr!IgrCq1YwG|x0nZk zU0M})rVF{=XQZ$zvrg0!!zBjljC>`H-HA4o5YYlQjwKRlIZ~c+f62NN!b7DpVI?(S^w-YPwsbI65ADhXif&DSE`fJGmF2H)=vn z08(WkA@_92Z$l~bQ+e+vQl*rc|EPkLOn@6oE}-?;tiUjLO8LVtHr$B;p|Tt$nP?#K zJ5i#aRONA*(DnQCb>>HeX^O2UPHthbQ_##qExPLOj>uAteqCJ&{ z-;m5~w;asZF|y|yp;CiozyJHx`V3vjtFu7N8Rrl3zlbVZgN?XHymKr%JwwWyRxBl` zl`a&zKra1%7D^*dtK@@UHJ4F4tq7<+b+mUG zgEsHRk82MZebv|@`63GMy9X8@k4>uX4CAlnLFCiNTA0c7FONV=xc7jyHg4e(lN!24 z5ctg#TarA@7t)kYs$L;MUL%nt$Yg}hF8M5o%vF<kFBCZ#Dxrm1&Pf*RD$!h)EeF{%>MBO(Lf2bBr z44M`ZGZU7&io4}sT`IVF9G)hLCNqYTnBhHFY2(5s@%TF(E;E~H>QqXcPb&@`^MaC7 zl-eI#U%Kz4vSd@PiPz?yz@uyIw*!dc-S=%$h%vzIeM%xi=JnJ1BPzRb=9n_YVvT7A z!sj2~Sk8u!Ly~o8=x5i)F9h|4HQ;tvFSnqdWsv76%?0^y@3LI7F0gA%L^>Ftbfn!~ zAa}-T(j>_QDE}v1@<&Eqy7gCHhiXbITO0a{BRwt<6vkax#+L{0AF)C^s*xaBzoIJj zK&i-3qrKFF=E7*WBo#489`!T-@)3A?nN%S4ked41y-4bj%qRQ|;wR_unS>bA@}FtK zp7F$TrgjR|(^HHH5{0^7$3+z%s|kJ$k!sR-SCOURN&Rd09{IM>Nh?J=YhX8<@0FKY zu@2yX#s~(}dPL}6{nv?z9l02RWZe|*9td$w!WE#*80+Q$zIKFj?MjQ&ytf;F<3Y!( z5Z(y+Q|y@ol@L@ybV7*ZLZLy1!iB3pQvJEF$@}7A;f~EdEseuZ{-qariodEg44eVU zC&Ic~Zd4_wc+|_!+qq-z(+@(A>moHG;Y`54Gs@!lHluy9kTLMYN})l~S%$Y@o&I?B7zFb z33y%2s5aGH2)wPbLUG)z`YLxU)G#?RNV@YS<38z!mru77qu6MFz;R&2GUT<1F5HsO zPI?w~(Y)t|GVWZ*5kiF}G>90|7&S7DNT~GtZ}sJK^N*0`CrF}O6V zFc)nEd8rk^;^*8@If^#by7@UD# zB-Q^QCfdzcvF+-~;f}s+Mqljm=QpT%C`>Eq3XV&O`}I)%0WRtcyh^@D@mG?$G;8>| zaQ>KdRnlIkq|he;{m!yC)rF-B6&lx+CvSWzOqgT+fd}jV!2{EaA9%nKrk%LUfx&KR z|0~2hY(K>-Aj?V2u?xEOAK|FBNXKokD(+r=qr7|Wh`{UF{~-sA2S-o=M}19hc@ZVX zZIy3jbU56nDohKuc?fxBp4vjhk<`8nA2VK6J@t z4~N4{b@~5zfrT+hi_C5_^d_s{#&6pVhDXWW=BnggD}rIvW*1v6-N7Y;u3ZsY0Zq5i zK+5u=o8W}G8j!^>Ze9>%)v8aJd9CaZ&K&;r*q0G0o8iK@tsDh2Z@v@ns!F&|Rg)Lj z9Kry(R$jV@StzbHt?iQORY9b)Zw&Y^-qyUrrQ`j58S||gg&J+yq?0GV4hc4=ryaU2 z$n^C0swpiWz+wuixn^cE^!bFYwM^`LXG*r<$VTIpkZjQyMdg#8(o#}A##z6lOw~2a&~19YVBu2NzQyI-SQ(>mTbk>o#iWI!{|kN=MQ+ zV;`;VH8jq7Yf8sKwpBFF_*EqsJiq6(yW&9g?8T1fRn+fK_`8|H?Itb78_xila~(rD ziLQYE-2rJrMk;S?FIh0bM=NhEhsn?lYjxuwd>wfW$8*x=H2nE?8^P%vs0)YQ=2X;~ zq1~=n&h91|l%Ig~uAD|3k|n9$nQ*d-BOZk(hxhy75z9XstL-9ybQ`Y-C%Bp|JnVWa z2?M-yDS8ezV}?B81xEY9;_c2yvkDNdaaHbrON`%YB( zacc2vcmwTTYi1fvr|F^OvEii~(E8BSHxk0$16S3KCnwVS3k0t4C6XayCl4CB z^z6Aj`3$HPCQy*X_I=ayWanR~`KQ!;m-Gi+y>khke{VNk)MTGkcdX`N2HShz&e}5T zr{1DEGTeT^69MXey^q`o@*Vqs_;{kf+l3w3qlaRCVoV&p`0W_TeHcnVg4#TS?m*)E z;`^ie()l;|^7?4qV;?(v?JpfAFM zo*#sts3;5#sqlVnbHhb-UX6|nL@7q~Vj5@D)^_nm-53Wt{} zK+)Nl^0f;Y6rzOM{UGV=O_W#?%p@jA?A7QQUMCL7 z-h+X(0EQpY!ih#BIP;n7)EAq><8zjtrVH5lMVd88#F2mP-z|d2B+#&rNf^nfT`u_= zMG4ziF|RDy-;#>q?r<4>Xk=IGs=byZ_0pJ)Z)pyi%|db>jnrE@{u3+vHqjXjfa?9? zUxbaSS(4Bu+!&Ndoh+~cLde8(OU%w$=urSNspl>vzm{b{W)YD(5iyDL%Z+P^ zc-#8Y-NnkWzDwyDITtXj(+7u=u5hmPi${JyyHvjg(t3xwQ&ii50#eG^-p$=P7$zSL z`F<8S5s#Q=4v!KB@QpqZ7K@FUcRTR=V4s}(ZDj25`{m2#nP4Qr$LG7n=dMUMk{;?c zKsBlu@EZ+r`yb{l#V+>prVNq>dTra~UM@O^In)X^0izskXwvJgT9}?^hI4DV&S?lCH*l^fS5xb>c}YVomo6FO*z6w-fl2 z|0S(v!rC)yl>+&PX=j>Q5oS+)Vy^fTMGs zw5i*jd#%Vu<$jul@-gp=p{2ndy|&i;R${mY@zC9#M#~Snfnp8VjtT=JI|XKkmwJBs zIP@U=Vp@rRtt_F!0xxy_Z z#m$~%8E*Wve5r2##67Kap($SWLJM89wghNHnA@hF{i~LTr)jm=UgwyL>T@dM4zf3G&L(j`UbrbDz)x;b4gOH2aLRsmx1shV==Bk#9c_#=wOE_*2zv5sqV|}F3yIhq z^|03`QuP5vi(TY|E7slc4V5?2D7Xh+F1U)F=@xkv=BBY@T5>N9d@H!3XG`GogSo2f z)*7mEun+HC{ptrb!k7E-V;8G_UEv-igiEbL?ToI-+*^{@t2aRe#ws~XRjXCa(c5&^CHwrZV%H#kmEyWHi|5lp2=S%NVxsxcyBoy&@`xNb&R-KFere$+<=~q32ey0th(f&OC5jaAqTXHff2@gyz<+f!(dAaIuXI46$ zTnk2}>6$AETXY`F*iSJt1_ht5f-!osbCf3aRG*E$ZZ&RX=1CVoG%k|2AW5m%2{Jk| z*x8NXk)YrSQb^(H-S6!K4!)D&PR(VI|V@*+m}vYL;7pV6_a$F(_j1ZU{bMp-G$%|GK+JCiBYIL^K{4|fx1 z8%`{zC>Me$9SNrup%2;XXz^M6hM(M@>6v~^n+E)^S&2>TXf5%HigUXSo7UGzY&9u9 zSinWF{CX*?*1f;6=4*!iw=i;Deq=6L&qD`Kvhea?zNM~m;J*wf%bPv^ELh@{+|KQH zx5Z#otZfFEtE#q4SVrV@_jJeUUl0&%HItP9e!1u$1anw&FxK;ZrI%Bk^HuisqI0q1 zcCjr=zLA$N4`e#>UCy^vp?gf&58820c@P0R93rFm7 zlFn`Sp6Rx?_N^X>avWdM2qhymOQ87Ym zN2YAZNvdq9uk818zmU5A%(CneDc=~Fe&^B|v(&?i%w%MW(u+R;yNPgzw`yvhCF z9S*S;Q0%2!$qrKkaT~UHWe%~x>`a*Hs?Q)L2CsRYFn2Kkl*SJq%?GP&SqHi(Yp>-x z`=y;;%XcbIk;SKxO(f6Sso6!eAZYQCHO7fSLi=x>(4dweFf+L!s&8$X*2Fz3}HGCfSB-CSYgY3LMt*)r$;5eiMSj#9%qD;x+ zA2eAUg_&T9@j6Ly@^Dt2D2$^S`ET>&1(ug8V_1bVv5IvCj0}}DaFoyns>?NKaG`^C zlD%Eys_plQUIDl|we?y^wIvgIa0^~`)qVYmFO(8(3hwnb=>-uA&lp*kXB^dV{~Qg5 zXSbhIQaknRBpw}X#vc(1V(2Ka_34OzeO&5;K2ORxkKIViXZyigJRS#Zzq-H{8UW7| z$|u(kHS(OfkTLWUwkmoCp-=5z?sKPH-90;6&mJEiB1i;jM2l=!W1q4&V0dfKf-ji| z!7l;0a-L#V%6eI_fZL0(jNJfVU7ATZ8HqR^HS^Fo0o1`o3SHs3yr->qjwhgQ#A{;|Q zQ%A7XO!fCQy&oozPdDygLxzdn8TZR-`x685>hsHyo zYN#3r7mp7OvEb$9-`FM`r&TVgRLTq@AB{?#3g&o}?ZhZ|JaDb=Cn8@I z@dTZYLG;%0L>N|^=-4Oy3PKnD%eXgfgubqpW!rB zhDo-slM&g*e{~X~OU()`^UK*{148~CH^75k#6}Enz&r$*b6DlUC?rgM$uI!YV+pp! z8nIdz%)Sz`zM`rkf=L+8(nL(!aw2%w?72vhPZ;IN_WjWo=&!KslUs6C` z(#u#>7~BC4g8wIT0gAMTFVLuX`w%!^^t5qUXfHl0H9qDWJMIfsw0mT@+a}q*9fjBt zQN0rW{pmK}Z}*VU(?KX+NYPp)xJMg5SUATExd*RXu$@9*((Z?~hpe9?I4LDz7&0li zkr+5BE3%UwWvNgjt~l2g&mQw+TX36d>|Y+?<>A!MsL}*~{R@gTLLPUTj@$WbEl?WB_? zchE)v(z}LjXsU_(unl6`1A-recbH8cC(@fd26MqOK{=n=&Km`+`g7AhtH_Sw59T)F zUC|Dio_mUCqD#*c0&nA>BTb90?tQjd_^W5v(M`MF0k`qt1X9Kq(`nN;Jg!GfM&*!L zxDWCt6fl8V_Lk1un=lN`<>ziGwuS;r7Q-0F_RUncG_RVeFcg$oeODg(K79AH5p=)9 ze0{&ZwtjriWCQjpOh)v$Kh9r#JfHUw-x2k2`F!p^PI|sU@c3RYdtUb=B&le+*}Gp_ zSjk_~8vj^?(cW%33M|#9tHeX$c(PBumLC=5*k)`le6(yFoDt;6C$ z#cc^B(iUT521)^vUc5Fg=8PEK7DMk-G%FJj!|9d2u8(*4J6gS-#Uox*P8;LHYv@A5 z20e?w$zLA`szUqI-^`-@)2J=XIND|Y{s~Q`fyy{XWvDQXLj}(2klVqR%jrtRAE378 zT(A}v0{kcItUACi=igu1NukEcq@fH@pP#}cAR=X|USsQ2+lM1fD#Cqas#ES@ znLR-gQ|&NylUV&()rt8-$K|u#4%~R6$Tffyzpl+BA?+FE)>$O>cmb%&dL6BR#68_h zE8(OJatehcGaN3#gi_S<* zkK)yFqeRX0G$jdG5k~@`E7z&|(6Qu-4e7}r$?6ZQRfH=v@%j(^)L zNQbTes*{km3~#oMb!oPyEZ5Ol^vM{J+_QZ1x+!cP{&;Qwa82Oc1dCk)t7ll((t=HM zWpWtt^Ph7v2zu9KO2q=~#{kNP1S-G}+$I4RKQzr(;QS7Hid-`%#DZE|j4;JnV6o}M ze?76ni9vkD#!dFHY3q02M8=IOPHR`&1Dm6cgM#_fL+PO4l5`ujfHQnyWklN&P9O^$ zNFjoj*BY=AXIC@a}7pbpGA`? zOta*PB#=vy6s3*M%^ud`=iElYcKK?pPM8|l^)Qr_BhNs*vAgX`NGPo1)D!dnAnO}| zB-y&Hr)}G|ZFAa~wr$&-wr$(CZQHi({`=nVz4t4k@?_@TCr?#m6r$E%YwfJ}`sKVa z8|HpIzkp-EFguZ)l=+Z8Ws{N}Ys>VY8!PoG>AlY^y$mGvtzuI^7Mk3{&!(BXom|zd z`xm8i&^md2DHp>XW_}*nx#<5w>AhZ+AC`KWK7LU8wDzwLRlZydX3;uIN!o;Vu0UCH zH1eHkU?{>5b^ue^7_Ua*kOYrN;MD{-dXE@S7(G6a)aAs5_jnH>BhBUz7u!qiR_k6i ztMHy7H8%VYah@PvHMBj8-zy|~E_`n!ddEKq6+}D1gkr;_%?6dnJ{wD(=^k4ViFf>q z^mYWVhc{CNyT8BtpbhwYnrM=WS4B26x`*6{+Ou!M6(G7q_T6zNYRPyZK87-}4+Q2x zk^B%U*%nTEAz^@6gm_LR805|e;UaRhw4H80WB3gDZ)mEEjF zJqJ0?@N5q)6SymTa8C2;no_`)uwcehMSAme?KuXK5h(FQfOzt397z~e)I10;iCLY? zZ$y!5bcj3nIU))B0r5zJP=q*CxHt&e6yD2iN+sTCppGuhL= zOP{fs#hZY9M~^Ul91Rx#OBQb;PaxHn>B=rk?&oPRjX+=eKDX8m7ecq^)36 z%MG!fg7v}v`#;?}#!kLdksW2~oRnko=^lNOB&mO^(t;&Npn-I^<8z>-J^pmAjBLi# zF?tVlxj+7lm>9xI;e}zH4u`{wvF+S85E6vm10QHyvhJ|%^spi%7_4NO!H8C;W34em zt(x4$u96=L_dgoQsc5)~Is9d*ae$moKRyDo0XfxhE8*o==-sXrOzyN&lF9ZeXK$7f z=AlQs5T3Na)IZFkiRf$_Y?Xrn6ul7j_fe)Us@HT?Zu*GVkm7SEZ>JtpWNp1VJxT}c zouwvtEgS(586;0D(6`S6^>D}iypv|#1?cFqFr(yGaRgA_$(jf!`v+qfq=X3PY`Qc)i@;+uBV;;atP^V7y;c>kXeo#_3H&)=&J^ z>xF>M0@JKCfw@*|@NrEZlo7?3S&%(~?P7o}Ggq;{_!~WledR83A@Z%-i~Ca6uSx+9 zte#hXeK{95hx~@svvYY1$Nz+S*#hE$&G$)14FIrSqepBp6X3R;#|1>$Xi&Ah zc}f6f69txWo$lD1?E^bn;BSlWg~m(jdG`Hrp6U`nzQx^(>_x;&F@v6aX?YdSiF%eY zLw<6F?xtsbj0Has8Ynx(jTYjaIi#0pH3Mn}n|Btb#&gU~MdAQ#_G}quXgMmnjIy>? zZ|JuNKi%MEiEy!A3&_bzZvuL9tI*|+5aY)?s{_OP+-Fz;zki)^Pmie=2g{3;U1w(M z;F|SWLbL0fp|zjlI@1--`=kUs=|V$Y(9k_mpSRE7J$bTEuy}}Y)~a?GwZ=Iii zgm7j?$^%@Ad7c-QYE`TQe~rZ$p5*BP%Rp8`o=E;)qQmThECLV}cJYUVcf%X&Zpx)@ zBT2>#P5AdW7@oA=+z)FLGXCj@(mBVd3H$yJj;?{Fq5w8X_pThHT#mEL+qvTNX!P2%&APgF; zo-=;32S{L)yOaX6VGYFD9D{plKk8ve8&fYF`Z9kCmI0|IxF`uO2J*>kS&48Z!$gDP zhfVr+xuy+g*NplB+I zH7RB6+7W!-1DSoUqv!IsKO4_tb0W~qOBG9aA$dCc^Zgo+Z!ujzS0rj@QNPt{^huG5 zRF_G$+FjG}r|gP=f@Zq+4H$m02e>ZZ#9|wFFY-0PpX{>A46YJZU6Y4F3)%gr*Nt`^ zsXoNU!9KX4k9wF;Yj~fwrj5t~*B~3}$Ke{n=cp z%VzI+>pOFLOUS+KnT!5Fhl`#5uVzuqII?}JAgxz)LCpBpm%_;5k^{v7<39<>b%hZl z$kq+hf6uL(|D6XE{j!YpYlkS-tjF3&+jO{!JsnBvLw!58KOsQufF-6M{3XtiJ zt%K$)%C1tus^4sl!Sk9fDiH%?0*^DIGd4hBOF;-=xaRp(&k!x zj?kAW4AaP@rr9zuG?=5Lu347F3;|<08CP#<=0zdc!6Pj-ryAr9dzfRo4mqurt(oqx zF0Q$z>KPW{Vv+ya=>V7LRE8MI8B6f*2UCZHm7PtlO!Dtnw0%*Q?A`q@q{P&;mT_6rx!`Uu&Fm%BhF*Wo|Bs5eY;kO=53oYZAm@H zGWJ^FqV$sv2N^}hZ#`*50*VT9ii&j_ii-a%9@n>KosD4=rl=Y!$5mdTmVcGYK{L{H z#aU3U#&y?~s60kIN-02VWBN+8BAb8wJVqF(A>^Tv2vWsTQaW^5f>qZ=x5}dORZ!wB zv_v$o-%O&n{h^<59l}vCu$=JX&i7V0pmN=eOMbi9(yWh9dyxk#+^Z(3qBuj?*1S8hP8iK{|9sl&**w-=E;PmoldKkiU)21*dGeD zL~|HTw=MOu45U%mgiyLlwGscVC(#|JJgPOSTDvXFfdoeh9HzJ>ru!|extZ2uaNw8a zf7k|!=Z9nTeYusMG6Msm5Gal!iQ}5)gGDJ(XPAujys@)me}J9$S+8Lz{QN3L!onYs zaq>}mp;y2>r|$f=a62=0qdPMQu2jo{&EQZ#Xg^=P_4>lmOz?q zor1^f6QgGFYN2rFlH~(X-FyW1-bpGrJ)mLuN*r>Ne?<6Rw(pe9D)V}P|#*nI|)Nq%G7tyI{!iCd$roY#`<79fNpT)Vr zGfA`KNR))iT;hI+nZWKG<1i{pfKS4gWuR=}Mi9O~ky;(MnHH7{qy$<8eM@n79Jjvc z{-VupE@SBHX05L1!~tP~2{NDo>RkY^syI-Vdqosu^#f{~cA3>Y1N>7Jmxh=!%7O5S zfvYDn39Q4(63j&P<3}9(NLCiG8bGyTtUl z*%}jJz-wb^{f-KC=YTz|GjxZ@?pb~QCo_ep4$qAtMQ(-`{bAj*2JU~Fw-ZN_}XPF3GH)%co(~&g+I2^P)nBfk! zStv4G6i$C*%=G!dI$p2oX&c-7bp%dcv*ziyM5uw^@dVJJ;Vl2f0DLGrq#2}NLlx6 zk>8qxxG9J>~1#hDj8Oy2* zD=6qN7$89c8W$*tWsLrM-H7Mf%{>b3=HSMlQ-d0lMiVGD_+Na4d zWG-7{y6Mp*+H9h1#7n4Av_4ol?HyygU`ZL*%B8**s@WrjziEZ&T4SemRAW^`!OjnD z;Oj7a+jKtIbxv1H`u|pPOD!NW(TXU+6BJu?Q0jNvd3t(&1Xp+YfAjJ3UVVJmZ}WM0 zf9%2i9}p1TKM;`J$KF43?ixk5$~eeyx~S{V%E?hL(#!ER1KR(M|AY%M{NO(ze_8F~ zD*i{#%~zL|-ep3XIuiX4^2GAfA5s&Z_EBZa#;RH@e)K?oU%)5S_V*~52>Qsz>14N` z#rM-{KGxXXe*-|hhpvUK_~hi#*f}{zC~|$nnv~GzHG>WRrRrw?e^lMWH(}}H4dIw7 zd=@1)BSCCAQyuQbU*Zn5JlMV{uAy&ubx$%}mX){m^5>dJ3qqDJgYd_Ypmw=n06vR9 z??_f3H=)YuZfZ)u@T(b^X-)fFb>mJ5eC{;bMp9)IRYz?PLxO0XyymHvVvy)Uln2Js zlDL=$ud#6R!8036k>-`wCk{-R$6@eiKP`zH6B;a7OgB8E5P{yUyHZ&iI|ar2mQdwD+K>^fjw-J3c?scQJI z^VwM+K1FXN582v+3D~TKOZWt^w1EIrrIZzDtpj>*}!h z&#XK;+%A{6f3agZL9)|9aB=Xx-wqlbPiyEIvKW}2CTw;mf#?7wNN$RByOj?PaqOk zSpT*oKGpXZX(|XaEJHj1Pj&f z_#`4%v4e1sBI%$PjbBk+hFNbvDW@{hlDETY(K*b|rc;VKTUx~d0Y`>+as+W(L0ibl z^6Z!N_&>}u&jxj6rWv4gD4%f4djIJtW!3I(Du_pFvXn!l{;xK}hxKu+#$DkD02P-` z(9B>Q(OMeH)iX%F+LDOjyzZhtP?GeU!_vXJIVu0cB`#R@3wFf^)c)Wk=4p?9$0HE! z25BsJ+3_;!Ryp`ieHGT=k!w#N_JM&PdWr9nFovQ$6V0YaXkqAd+DzL1qfA-xIH)$w zJR^iWMXwZ0x+Tn}qOo95WXgJ)m~1h8=K_ZR;hSw56LqN3i8U_2pTF@~c+-~mN`x9y zQ{RbP9J$!SkY^<^#gXh|$#qg^_#a4bNrx5siY&uV1fn-CL_AA!2Pvp?rL)s`@LWFA zNE#3w>NiU#?Q;c}`1V}gN;BpVZmjg~8+N83O~qW>%PICX`L!tS;3H~o)}`W7sAN@H zU<&prGT6)0+G$Qa`5=RtDd;`wsqqtWGZ7x>ufbYiKSeIGod}CMDRwBm+2!DAWaAX6 zid(ZXL*8^oUJ6%dreYAcw)F|YtiVt>7Q10vMeg8qr|951p`Lm-pzVX4O#5HY>TwM~R`y1c=%d#WT3j36$vKm*lO(5xf@*Gz1y~F&`)` zm9*z@*)-_Y-yd&4qh<6D@2s$;r(vq3`n-l`;VF0zHAX8wWu^L)U5HeaRvGTnWOHHA zru?n$29#PBgla#YEeau&L`+E;lKwSn;4gbLheNGX7!WE%+GdXfcZo|e5rGz*1&Ea` ze_$qowA7bdznFyqg~%(r5D-g2mL+_yqGkpaMumin4b2BQr#@^AOIQ+62p}6GIkAcx z_t$n2WHVTCPL|F(gCFg-HzYfuP{(?RDbsm*gfVmy6X(kFOt>{H?1*X>pQITO@!j;m z*0E48)Tsh70<~cQ?`sM642rEz;8shFbCUjY!ahmL4gJNhJAi)MaP0rAZfhsIGwaOo zqfK_Kbv(c5p=#$EzNW-=M0Od3s0YlyYVAZqMkoh|#IKLFoFSNquCmk*B%tFImDP<` zaKhh>k#>D$z8K^as3?0C)zuBTeOteY)veC4_>IdFv?AOxXY6UTA2%d30c(-xAEJuW zl82rg#VJh?Q}@8@{4fM6ry$NLPs#-+L`cg5u=70z)OVUD6M3c;@VZ1d?Mw#_Y`y1hm*@rMU1KusB3LAZnUQ z=4dsc`~=);1zHz*!bo{w1)u3vZw1`*II!xK-@m-Te~%Hbj}euBW}%G1y)p70 zVBtv-!uUhPsX$e`fAbIN4e3VETB`M{z4gH&3PUq1y0l%Ii-S#Y%qakRY$^aE!6858|9SLB4^Q0X>xy7PEs-0n z=|p7O&AT6k4O(lMftBW=;3cPeffRA1ml4owz&}{tUA(xOHa7vz>TpNrSxQ~@qf_S% zkz#mG$Z;BOMyXxDB;<9vr&3>6W%`;pg}BHFH!0CV<`(0RB#>{x0Q|e90X;i ztz_|MPmL$Cy<)kG{n)nQoUBd_M{yFVB5GibMrKq$h*Ky=(VXiciEZ*P55Z)p3>agl z&J-3KU)j^3sHFlr1AfUO34}VW1dCZiD5B7Yu@E*dkfNRg2n3=i4LzUo{kAK6Ju<^l zWV!9Lo+^EgDsqe#3f4M*yurUHa6uDF6c|P$YM@1+t(Z6Vh>_pI1b!&1Z)tY;fwOEE zCFbU)p`Y9aCADt`+d5%;uzGL~?kZy|jFp3>5uRaXv{ZD}@7`+qi|pKU(V+hF5V zCj08)RAzhrYxVkJv^v%?r|sts&&0tZbL18PttS0*+kXNN2gSKSUdY{|6ShGRJgcnE zu&PI3MJ(QeK$}V2+Y}H*2W~$Nu+fW|#3k%kuXu#!k5yd^J6RB`BMv{|KLeQT!COJn zqqA$lk5)4yTS2aKugnTt`gtGS58{=#1x zFln|4;T$%Ydn|K8doyht$z?5BhYT_lJv)Er``k>LFuK|>BsIy&yIbQv>j=Ey&z&gTPsR|3?sr*Cbgg}y zrxCAG4QlZx=XJZ-p|zSBbkob&_-jBrk4kkeY`=GY2b*Tsnkz4uMv!fux^a&HFPr8} zDPdDICWJLFooF_++*wj0<}u5_q4cO3*L#FDy`z9%hwE0*hOIWf`Ad$}6>c4l*L~S= zzcR&KxPFCfL3!bBx?u}*V)jyt1{8@sb2qtbbC}8nx;Q9VY z1R;UbSjT9`*@R@%wV^QO=Fx1&m*rtT^Rr*IrYnw%HwSJDrFVkKjv`afAU{ zXZ2#{dhd!1O8|wnWPE8fC6*MHT1-|`T!4Hb*9`Tua~?p^QQ>(G7&C!8dfgBw!%yag zA17EjSed1rDC%~LCiG+?SwbTixKB%DFy)KUg!PWHPH}Qn8Ux0oYQhWd2sXLPxO4CK zPRcLey>(!tDb3GcO;tjLeIz^WFoc1oJo6OpFvS%t{Ga98isaew!#iRZ52}ZjjQ+;6 zefnV35$&A@dX@vfAQN+@ATB1jWvK`Q7_y&Ix{!&#m@f*CYy(a|&oc_A@9y;cX*w2(mF2q&``C{pN* zn>rJR*tVit{d(85R@I|P*vIp}ub9zd9?2kqo zED%qd#ZB0vWl+6Q7D|MI(l60T6Ytf!)d-M)@TJNKf7sF8etu-Qu`DF;P+ni*<+JmN zc=;%|M!UFGh&q&SRh~8-{64iy5}-TsEvC=K!T>+b);c}K@%YHtci7$n;{)`_E{_1- zR#Lk>?%po8_mOrlYjxIp<2hpPx!m`>>0~dPF=kDA`r{RJ4YEF%6?Dbk4V<3`BQ&eQ zZhN_XzYlvo>1Msr_GLp^*~Q*8^Cq9$sceXxAH{wz;^KtA(A$ON>%(8-IMvLryz~#L zATms~tn^!J?&>xN*afe5#kx+b=}hc;?Lo{-Pc%9rVVRzivTn>tQ*RFZJGiU2g<3T@ zBCY?#pQc@qu!0l$un(77!v?jmo-&YFW8jw1T2Y;h&cZFBgezg5R(&2Z!&I>@oSQ?M z#ABKLYX=#R5D+ZkkUCiz?P;ctBi%o@a!XkD^>HtldG#wVjd4l)!AJ+{dkM{uywfKkv=o03n8z-{@9POg6WUE*8|Ks-d?Y}=>h*D0WWSpqBM6c2CH zd+VBDxC;OSWja$w81MrFd6~Dy^8n(PF}J?EMxVgMn<-_M%MG$5ZI1SpgB-+e%WlWBkf!_T=h z(1oZTB&d7kEGSZuZXdE#ia!vI9waGoco7M4c%Wfy3^ih$h+rLfbD$x^jjLeYiaEq6 zA%WV9#=mnR6zMkyG$q+;9g+Tfu>Cpk8=jZ8EH6w~Z3}(<&&10ldXRsgz;f;QF9rGw z0-A8i4|$rmv)F>_gtzkWFoTvd{LaWZcz4zK_vGq1#!W=dPa%^z_JLkjJE_m5~U#RK6(xu~qrUmE20&x3v8wKGUPndy! zp2~MmQJ7v6-xciB_7)V}{KTIY(^t?7fmJilqy{V*{>E0fkr*oU2>gwQwh+l1EFR*+ z4YFzOH%SA!CJlWL zxvv@PX}S*l4(cs4l@jJbsUwO zZ;+0>iL^8fAp6q@>9+~dNYcv^_8rGErz%%h>{IGJKUUhbnW&xL6o?K&BXOcI$24Un zo&i&Gp+cdjo8zA)St$y>F*i~TA5OsbY|gU?i~a7dK(+2>MOPc|i}@fKNOp7DjtZZ1 z46Z^{bU?dUBtHp()*N#lo|Q8uOO=N;_~sPfq>{#uabUmm_}D=BOm>kI4~yEHRYRLz zdgJXbf~<;R0E}V`*MS(gtvw~2Y*7A?z*360ETNLU47TufO~JFlN%nE^(gTEUlD(w3 z_Ixf{YjO>#2e%A#d6H=UBy2B;@8i_F#deiz?YwyIX1V%A;`_21@+ieX$u}Z|w<@;~ zYw~e8d69cQD>{8(Emt$^cZ7!4!2a4LPAq7N_>;McFy;G%z(MCHvhqTZA?E!Kd>&(m zZp=9w9|&^@1M6_xHRY6D5QMpmbbuDbVI+AM*GV93qL<3SpGRdV z)2E&=tRN|Bkr;i6>WD?A#=;^LFTstspiR}` z@a?c6m#c{NBHNAPbmI}!w={=+fjwYg+#)n@2dHY@*E516-2{Dd*{Jy*kq2`E`jQ*r zsnu%u7j7pjGF#~J4pZQ5g)8T}cPpj!5~fL;n31h{1_Ih`l8?Z&i_15M7DQ-d{>a$J z!kW*QuP)8P;A!jWNknLg;&iF_gP6Axy&&VdP4|d~BbnPEU40E#!y8WJbq9SZ+$I(Y z4xbF8aI_iFR)m_Ati79cn`MZOsD8x$as)CJ$cthD@;29NIwWhbRQ#4UxKPoRZ?wx z!_y@s-G~5w&+)^%iu)qWb!K{D4QjK(jYe9$XPEbZzkieQVsM1`LpvE?mS%^K$K9tz zH-z%F`(5q;H5o^lVZ5AKu#0WZ^EwSmMkPPRk5(+g`f|Br(>P_7nByPcgWujO%GQi~ z(6tGPiFFz58P3HVSWMXD*?B4*bM>E_*Seto2TI1RS?g5YT#i3~OnbJxbN~2H*q$D3 z5n{zz6x{?T7nStwZ#R0oW8+#;wBW{Zq!~MdEKriq>^svbKB)VoA5{LmcZM`ciq#A*2gQ2m)YEo7)kLT|1s`Nz0pe-;^TN#V!9!No{iwi(ns*O~q}Nxk!|s zB+b~Ru9qZR!-Es=o{r;XHaU%?$tSW3EPD`#EYcmtal#l%&kVQfd8xVw`+5Erk&aue zE>NeI%xZ1BN%F>q7VE`)7~YnzjjJ?XgtWJkvMLlbidsB@s z!n8*#boTVUUZr|lJJZYS>5cGWBf`YCzoY!kLSZJ+;ut3k>YtVnNq)3q zl)1_s(2i$;(^QPZN_y6E(Rj}rIO|puz3=Kberd8=K*X+|dNf`Y2R%bOa8_ri{Y_`- z0{As=8o*)3p1z&6^q$e<*CTKK6Tv{?ZSkNQt&!AV;jo-eIIvcDenG#V)o1pr0kQ0c8tc6JP086pGpFUUVe1DInQdDp6Kd(b951^AWf-7P zny*>^$>S18B!q4d@-^SP7xLo78r*wQBL+VgFJg8H*z^NFuB4}~KgYUuO2|4_N8)$1 z_YSg#F~ZYrGiaIPc1PjEw6Uib)!9xLYt7m?TTISN(fS2}z*2xnc@nlZz@ee2l1FwF zJzr6wAJyvRE~2bi0k`QBXa8IIjgme#45|Y^_z_H>t16pK%LTM`(+4`Hw98hFPQBJS zBlE!HSo$%nV^hAK>$2rVd&vWj7QDHmM7dVHB=Sg~Hta%Khx{PmM4Y3ukdgHmx&E;| zM95d_mostO;S(28+^Ks4D_Z>+RUzFYXv}<8yZBu^97(e6qZ7Tc*6PiL-5)U$?nbNng{J3N#zrre;%$bD6p6M-Zi_S_JrtQ8^HZ=!@*32avp@BiD@*W z+bjC*h(5BsaqIw}6hUXr>p&qJ>~>s&3q#?n2v4sBGD}y?G8IGN3#PZtR3Ndjt8wA^MasalCs>uuUq*}(`v+$x&c+=Rl?^l4KObu%` z5lkyE49dx0hOnQw4RRrScbmq96gNqC)F=>vg8CxhKo)oB^{lvpx{cYiDa5h+Kk zGI1lNqGW5l>-MIMi|MpB3ZyItr~O$=W&iZnj$$BmkcZsBHRrGacM=-)E~8q69G)oX z70S+#$a`0>?ra4kWU7eRO+lr(MG|fh@UV7U&Q}C+10>euNkI!qb-2JXk;pdlWiQnl+WNo&ar0>Pc$n*yI9y| zDzco(!R}IxFHS`T8AsHn9;>NS5ysNz0OG`d#sS=#dnE*44?>N-hgjc%4>-v{bMaW| z!0_kCT^p+c+2BLQHhkfEhI+s6$0JRmEjtYfD38#;JO?zo7-OkoXEjn7MX`ZCe&++! z$WsZm#z)U17@~H3srs9v^m$a+M-A6&^#j-keDqLtG1wD-l^nig8Be?kfXIKhgZ~Jr z3j;a~%RmHIeE0_TZlUA&M&F99BnLVwPkJ__u1#LKcw_N^4Qs{RlDrtOrfA6&7pi3i z6N#U}u4*PeAU~j312k(S?9xFUzCTT~O-=gOZxy53AP&5P;E*y^a+%3k;X!N=OWbjS zIBW{P^9Jt!(TMd)ttZv8+6~oj1_N7t^ zwXtVX+af5}?D6@l{G$$z&b%T%hl#ka(9>Z~nah-+g3*u1xNyS<>kt%5-jcSksr{@r zeC~L{*6B-ZLrg~!lwE?7Tm#mS5nAW$+ZkI-v{%|ObJ)`B*FyU3=htbg%c&O%7NVD- zBAotGc4FbRx}*io`~}xm+)wTuK8TO2IujcgnNu6MyK!uC+z$1V_?-bvX}kVk0S6_N z9QArQ_?nE=qrjR3K$z=K7lu^hLN>sI95)uhu)4=LH@XM!gbvsV2UGbtQ2aQKWlngJ zc&|WxvdOUksq4EbVL-V42_aZVz{84&c390`qBJ6-{mCrLc|eUr!Df-Lb7!NSNFhq) z7zolcO>!^<`;L_~-$xqrg-myil5Ap+FH+Gva6f%mf9w(_>9u52a_i%p$*$>qxc?rM zq$qW|SfT{7iP;5LJtAq(GtG|OvJR+NLT4(nL|hOLHrfTgV7VB1MOCzC|*)j4wz7JL+F$Jz3OrmJCY>(4x?ZsRm3!;cDDO zOtc<}-VW^ywP+;gn8f7n(LQ%r72tqV&q*t<&ZX+1$KHWYbSart$@WZB3cx;2j6xba zp`(427YnDj`IStp%&BX_%bnBwW}O(^^#)0j1mwp$0CG~@IOgVKHyz36coW=-$cY0V z>sJ7?@3;3Jo{69)kGEEPNZEMv>r5NNj3xC1r{#RzU|rzdpA2nwWXEQ(fv2m<`hnb? z>X9@P(#}YPYNlC3XX3+pLmU)#8X;EF6hYA>39@->!1(FNK2VjVECnLFNI>`LdROnf zx9ScUP1Wr&h?52WXXq7`qzyP=TuIaVH`Gq@PtH?Nx$tLd^8usyKgp8y;_;36@f{{- z3~1iHi>u?eGlb-6Ti7R=G&LliY?r-VX_rbyf-MN<(Ggn64a_~Pc^?~YFLqU~t+TT@ zi39o3$!})X<)qq0%`wjif}mX(HMM6Gy-1_(*rdhanzE>d5>X1a*`W)VgjuD=xpk$pd|?}l=i&+{aa~b8>6CQ+tr`M=4d{9Q1J-MkAH9x@T%u7R|09MA z4*J={U<0mRq~`~9g97Lh6mlZkG*~HT!4$PH#)M^2N_>OV~yQ_$$m1JKVB@_VJXin$w6^8H}-(I7)H1BQ7+NgX==u1kkHmvJS8C{+psQ5rXAoqRbHw_&{J`%kHvlCWV( z*KLV-zEiF#rRuJ@AMn7$*#0Puk*=~qiibD(>+Gx=25K5MD>Q4%5&Xounq(c!ahV(x zW0&y9txN7gEvhv+${9lBl;QR&rwNNx^f1g0L}Yv%fi~y%3QzS~PfMR|S+?Nl2A(#1 zbCYLZlZT6N`Eqpd9{wt`v)x%VO-QuG@#%2NjecW-98IR;-8k@^bjb>7zizd|m}lwpZuHb9 zL0-h}HVoO->o?=nU5@73FZHtLJm%^(4>LAZhtPh7*;Od3oC+pRbw9`|M5eKoHWzY4 z2PZmGp@!%2+E9L+cJ%E#u7Tq)`iDTqW?Wf~F-HSCa2tj8!pHRKC@rz>s@7l7*a}y} zkOo}s*%(94jMZUP6hkQ{dzbXnnEcHq^jYrD21!I%Jlz5xy4iRxdU@E5S}bMG6R>KI zRWki(!Cn|1qB`(I8A*>?cBS!nn8)cp;pXKvGUT`4)eY6>NzJ{CU|5S_n_O#U5H(kJ%=&;77V!QK zZTm4LDyUOz&6ebX6FYP}!HUeJJG@;pMcj-;!O{g+P&j`3x^A|G{pD|o_^U99M+Q@) z@wQ}Ch#PL|-UV1g9-am|et;)*o8Kj61R$N06l}aMe#WK0b}LC+uRT;IkQh-g6|?u; zY9gd+Nm|<8jY=l+F_=nl)PHdSikVSL6oK?4FNDE5gyx04Mb&WBbn{O{h3O=zBn|uX zuGJ2TrcI!}06-6t)7L|Aa5$%DzoFu_v{>I;gOzV!5#APF-Ra;v4-+xi-+Lc75eoP6 zzm~=MAY~ejjg_mQ2!3?iTAw#ZAKluW5D7uWt7~Gi$bo>e0NS-hY!PyE;9t>0Fa0vu zlfLg17=DbDZUUi0zl{)fV2~{EQGhg$aUdk4#*x|oY9t&BBn9jYCtvGm3CJ0%2|!W~ z5%*l*`~`u!#aE;@mzf$w)#=M0K%r#?6 z6Cg;SgR~(8E+#Z2e&M8btrGkW6`*cuvBf-FDP(oBE@PWNv$X=f(|iv zH*6?!xKmd)G?;GXRaf6=!E_F80^9hOt@_iy5N{&;{V|9KWPg*NAZ{yQw8Q%hwYly# z__zp0(L*gYc^%04IckKsW-aY2Xv5K|q%lz&tG!8PkKhoTnrV7vQS6W+@!JT?%vLlj zt~-Y74oyz~3pq)BP6$Zhk%!uiQ_uUWNVe5GTvO9u3OkCH(eb@9@`xBAEVI7&FNjhzmQJjuU?9*? zTBX|nO8fUD%Cm>F@|8XZ?>UbVk2&(_CC()QK>}m;{$mwaQnTgnZ^T@7`}cHw6O({I zoMKsV)JlRzdLtN0XkblCD{*PVR76=BwNZ6rMg{O5&C2O~=eDYV>6swA1s7hO5a9 zLNXt8uJ+u1XTPx7ABX6>jiC^ZHh@_}F}d;;(XATnLT1U((2fL6Ni=WGH}XZ>jyD3@ zPxxf-5J|p)LcF~>IJ?u}mIootf5Hyo7Mufx(a$&k=C{rMO}Llf{5z}YKfC>D?7cZ5 zVV}lb)SvXG^S|p{HwbCE=X|~mr2i}=$Myd$44=$OP#RM( zQC<|$HII}RTm1|<_POIU4>#5Lm?mW+7F4LpzE?i-w1cn6`_j!nNUNZ%87u3vR3*7yWf)MJcpb43pKg~55-r%um( z4E`MF7eUL2)8zzbXFno9R#K}M3`DlxOI%Wr0CWodKCsq{3^-yS>LDjNXzwp=Ymm*G z3EF2j`4MXE{7NeD)$6@xM=;j(qM~sB$x#qtLL>@8J54CiFC~KtRtu~MG;!N#SZyEr zMfBH+z^xqx`aWSTtH(0Uu@4D4spHd-a@Nh`)T8SSr-+8zmrPrv<$GX095i@u-kS3Z zEoTac$>H1)U4==?=B<)O%@bPf07${}C*uOP1T=RhVyC)nR+MHf;&j6~&1eYg;ossL z3~YN3D;EXYGLapmzur4{_e;Hi=UZ-5zx@x94iWYe)KWN+?{j(zaxOx*ALG ziTBhjErmEaYH!R{LLQ`dCZVY6dIW}6R3L07x3!<$w-9nNt8J=kRhv63%D;$(uEjR# zA-F&GlIv(F<+nRGWcuzDoUygC_a`FW%zpn#ulVtWIXRC8r zn+UMAZ(;EMo=TRK#+lm=tYAg%=B|=z=3!J5N3Yo>O9ccSibcI+QpYI_c|8{COqv`+ zUve)mHow6+@uNB~J>zARP%#UlVhnO79liP3P|&_s$DI9)w9wsi6>Jil%b*MC zu0A>d?9Z5PlN~r-f?0AXP+i`-`T(BtTiuHx4F@h+S&MNscxn#C|TVsLFyiVtZt)odg&q&Hwx$zIX=#8<@7 z)JaC^-UZR9RiVrW5r;pm%DYE^tf5S#PUu=_m_bHesN_Pukf0g^5ll`TT`{r`OA-FvN)2*^M{P^I(cBeN6waqJ;D*SH#vc2o=;ty1Jv@u6Av zF~>O9J(2^)CK1KaUy^GM{L#br^6+o2!|?&ju}=)*c_x^LsSM_7JZR@$J!8Bq;!EqK zhn@|%$P>brM&=RGBTE_Dc>kIRq`!4Pk)1?)elvRfg66Tc4l!9qt&v?bL`5NPA| zQ|XsCy;`L(rhlF0Li= zihfd#%&xiDCbep=NetRwnu@7Bze!Iam57Kon8v?1DyVTkx{$+LBY|h z&pm{li>O~kP{x$+H?Vw4HYp72+|6t4KS(e$jwx5Up&Y${?j6%7Hn*G@%j~pg zC7c5E$wfCFBJ^y_BTP=ulra}bapJE##t}`ZdxQn-*~jpMbnYjt$@VI+{S3PLt7VQa z0NJMdH#Br$=cFZ6cP=Rtk%u(gOzj2Fu$LZh5LP1orD6yeP6i`h8L8a>kmSt)QxU1v z!)2&|?))lcXXwLoD8aBmfqML)sH37lnT2c<;AnBlFQ^3pDInU<#TjCDOj0nPg;6Oz z^r;)s2y+Mcb9}%%ci&BcN!S>5&+ncxB_|rDc|wV zg2%UrKNUR@A`XPr^2J<1la{=gg%&RLnao(|+k%+B6*a=BBPbm12FJXB1eI7buFqfj zcrP-8sQE+mu19G5cVg^>&2}@wZj&O`cOM^ap-~Hqo&34>GF>1q?$N)w$+Cg%;>C<1 zB)8T_YcnwmL%3dn#!8m>*`PEG^M$R*-ocKr0M_N6J&KfWt{mj+wlu#gT*DC1q~}{Wb2#{gqOjTVD$_}8|JS(w7_gT+ud{>o1qs$9>7l2hLoRV zkEdGB#sNBlEA+O)7L$SYH;V((uhULz=$@rHQ4HIcM0Cv@VjSyt0_k04JZi*Nknr-H zGVAIM*XB6I9}m4^!LU@m&dcdy2YUidbMcf(#0IaoK+74WN{(C|KCq);RLZDlOV`pQ ziE>gqv?1uJ0X9xqUTa-XR=P8f0qwegp_7vr=df)U%z{TEt$fEY!Z{Z8Vd!}Z-GIk~CVvFx$3m z+r~7f?XI?MW7_U%bK16T+qP}n*uMAf#_q;$#EGiTk%EP*|2ms6WZkbgbCa`J${e zc-l_%m7{}TH|ap?l}_{Fwht!xe^d9swH%mY z6)W;D^Jkqz5|mv;^1J-RO6uz0H*&|Kml0H5bMVV9;2MAOw*)_Vyt0dnhX3tX;8j`W zR#|1fR4_SKFfsc`{Rtz@>e0JD|*{x7*|5lX}B|8$OO_w!95Yd?wq@9JUgZ7Ir# zG2AHp6`Zp3&9VQFF71$|<~N&2Q1ulUZ3C6QHz7*-G*FbW*Cla|cTk1oC^%hfI5p4` z(!t{UvTbps)fYxT8CQ2MmiWoMC-W5!Ug|;a037SG2C*tu9WW({mNIdQYL`3wt|{yg zSR6Sk0=pC%W_bXz<}#aBOnrE_kRP9%JubE7SKe9pEWDiaAV=apCDbGhHk89Ao7klE zvqK&hSm{3gDFp(F;#$od>j!y*v8lV#gM-*K(3ywwl2&9St3t}ZGD(0vM$NPlBC<4M z*Y!+HFm^4A2nM&ro=K$yl26VhkWboyHuj}NCbFj15hSeLF@BN{-xU}m%>}%`neUK@ zyfx^lEG%ajI4W(Yc#kEJU>hiY6u#da;V!iM z)8JzsEf3%5>LjY&rfIPDB&4O_CN7=3engScpjHJ@T~hPkXO5cwJ?wx&x^$4rq3Xw} z5Ns>7^~rf`KKWei#sbfc;eokT1}W4C+lt_{(5QNn^69Q3vD%!~$KS8wRSTZCWo5>T zm!3lGYI>Y|JYfH}UCU!>_Zu5?$3#%WxrdKXpzn6Ca#r!}78Qk3t{BUHeYp*%)~xn; zXm-25g$nL76W5XW`oP?loWWtE+^BdP*qSSv)6-fSSCZ3x%nWrscU8?d+1E+D-u}QI z8(dT9R)gV(*rpO(vX@v4xkmk)MC2xz8CP4+<56^J@SdZ#?v}T$Q@BfGO7`GX5)s0t z%VeB_OF|jRP3~)1<(hB&7ePMO<{FN*eeSQ}TZV3dZ}>Aa@A!_%&wxb~=+LS=e}_iK zRSU-5Ze}J=6bN(+R;~@K+vr&*FiK~{LtNzmO&(G-e-_Kc#0n*C3&0nB1rwTh1YAA) zD!&&O^&-_eI}9Hh+|h~%v=ko@5O$ht5u=H%Zh%MxQ#q)xrY4>b3v8BSNw>}L0{{FQ z1A46IU5TYK6E9IU>Bm)Bd}DOQB0 zcyb-FbC`#r4c|ri(#1Z)4}_!Z5kF~>z(aZ2PyS}?Bn+omqeBPDYumDZsJWSd&6Fq8sVP;C=Yyf9MU-I8cV-VA?{%-FZ81qe z?t@q6wW>6dsc~`CnOpV^z*iTnFe#!!1?r$pRLj4wC)iC3`o(Z1JqMRontnvp1vh^v zx)VynF%gqWTMy?fL%QeTCtM8{mF6Y^f>_$e!^LmYy>CL%u*Wt_x^tjR9C7sSW_9?r zCBD@!i$o9-WeKm}Vn;vJTO(1oxh)e-Ca!;OXtOdH16IFx{31U;ODA(5@pT$^Jff=6 zP^C3Y=$4mLXe@@dW(JW8Op@>6x{NKTe`WdQkQosEitY8c9Vd@N*K?RP%$y5Qg~Dzy za2aG(OGU{+W07fL!$?3bJ6XB!%Bff}Le6;V|pu~U+-%YWLoY>##WB!zlwPO&S zEW_pD3abImPB8P`I27eiAefsWnWi_&LycedvFzbHL)Y+rOQ?+UXtOyl$lCJw&h-55 zeERa-|7^bdu9EBK+oUhXNyD6caZKv2IvBdZos1{ty@;v}c25?eA2lK8tkA6&_cn)V zcOAp9U?Rj>L9j>NyTaQ@zGTQqa0==n0|em+5P=dx?`1|>T5Q@AVa-7Dn)*KY$=(29 zbjQykQ=Em~uZ1`QYhdbdvKon((B>BbxpPpqc6K$&+7(Bs6)7tBGSM1XZDHkU9sJ3r zCymuI4X=T^$m_A}_rtwiA6$1ZsFUWck*fs;Vs^K&Tg=brN5Drqzv(AapQ@(4*NJ6=s$)6dz-rbh#T8O4Zrx0=`cRiEZ^ycD8Mge|Pkt_g z+q3JE@;D!m_cv2B*NwQ+ZbjuqSUQiXvIHFIZXc~mN4I9e*q*F;b>T@6=gt?Ukgx(Z zWr5vmgDd&w&c%#Mn%V&C(Q6XSrQcA{1DGS6gj+p0zS_#f=(E<%0ir4}9UHqrTMD}7 z_~tp&v8T%rxzI_>h31Wm);5D+<>r;-Gg1-5Z=RMrtH5<$tLKUE<)yY2)KKH5^w8u# z)n@~WgT!|q)qkt#WZB+y3$QEjaizRpXZ?q;_had_UWMq*s+a_Rsx#yMxw&|D;?KS~ z00%%SS5UY~-CSCp03A|<|H$3+XhhLmXid-DvWTbI?~qoy#shCQ(m+$DVZiz6%&_Dp4*NJgWv_{P0MJ|n}m7EVdS!ZQ5rpK=#} zM+vJlvqJykBmgY{vJYYoZf@B+{8EI!2RH?Ru!Rd4J>&94!CUPI^o~CxUJG?>lWGVUGOj z-&QMSDy(c-`pXQWJo$Q>e{O*Lnhq@u7s%uEd{qBw?1~wvn$S2kNK|vr$3WTYX0vej%sjG zq@`-N?GLVn0$osVLf&M}x9K)n;3-Rkwf4XF}hWmLP zb$IQ>+!akf=U5Sy1oU(}yr;H^Z}jvCGiFED?rgSdMJ$`y;*4s3%!R{ut6Xp&En)(n zb8yo&pZ{$MWw-x#=4sYcO))6`jQ94*IFA|o;b0FjE<$rkT)xiVTWs#olsN4i};XUbCW=bAwz zmJ&N@2|uURm|HY7L3B)`4*yS72BC}+#FVZXxIotg)6dvd**%+=oSW~WK2G|X=ASr2 z_+NJpSuWgeNH!-Y;?vp$H?P@0Yr+lbzfKsa5eMw;VHttDRKvMnTav;bBXnzDE#;Cb zAQI8|Cg0riGFY`&=1qwAR0DDa@#7|gM%I8RP-VC%j}0TR&qSo{Xw->uaKI>~f#XE- zcnuQ=VZ>|gE5-1zbIe`u3cc)wXg%3i*9~`!woCjQYZps#Q``rwQ!RTsgynG8Z!=m#r%}YVq;vOHlqM9ZF3_k>bj6@SE{s zgD32{jRfN}$RHbhy45D2+|hhSpv1o|te-Y^A^w>dcxiRj%RMVRuOvB^q#4*un*2+0 zWFlf8VzX$JO6ZN5E?2DwW`cF1TkDH)Qhq5TwZw<48`kacKFzOqRaeDew3F-VG^PYf&(%=3($`vRAo;bM6ZMa#?A`gAdLa zqm*$xyXtZp`5CTZ(tO%fNBtWZJUy%OrH%OHsd?*h!Zy~;6t;`J1AV%XPD8EM$1VDj z1abFOuJ7R#mr@YaOcP(xzJU61&+FIT<}ei}7CHVd3iXD*7iE-V z7}w7u&k(s%OYch;)-j6YhJHsgsWwR_Ze;w{AQPb(uJODe8kp?yUsY_~l@!TOpVr&#}-1845H-*l}15-NaK$Lhvn-Mwh z>FzYZP!xt)hTFZGmOJe!r1IQ)AcMy$onUQp7-F8Usgys&W}q1(Nk=+7y)Jry?8j5u zi8#i z@v_U+Z<1wipoouxj9%q%h?)Z#wN6LVNaJeI9S~BoPPHk05nCx*_>mMGkfULC@0L(m z*MF8d78#}|75>Yh7DC}`dzni8?$K`vBboX}l;QFXEs)51m;X)*#8Gk`9rJznSl<18 zy}y6$E3>+P`QCGg%$F|$Hckzd$~sA)WZnlW9?dh&vicWCm%XOxzES0Iu<+fC`aWWu ztZnOFBsJ%gBPzEUZ;#;jT*s+!YaRQ#{%q6_MGSTu(iT;Yk)#RKRh1;urWzPyn+2X| z+bwG>CB44tDFYk?m3F&dWkhF|JkSm1Ep{yJNI+#Jxnj+Xb`Tg*(9d%}UX8^9mm(>*pQ92>=Q;CW3K7PpNug7Sbr=cO=?bMd zd-I<{V_#e z_q4q4n;cuZ)yJ|t<#w&wHYEx-|ED7+nNm`Wi3XXCAh_{BpI@|R?}t_po#guj$6fU^EHZ~)JT@!9TV1scDOueS z8JOU^AlMX0P01h&Fcztn^pm9gLg9$M6~JA^vgBT>^})#_{#%M#Wt)wU97 z$XQEdVjk_ZT?kmcPP}ESLB+ypl4>);A}4Db%z2X|=o1l8Ihz)&wsPLnz^5bMO+%lI zTJ0V=*yLcRBVe10mE{`kk$9RMSJ#Aw-SpCccKDDLb4`zr>}+Z`asLAaH^9E#!-d+e zlWMnGEMEqdb9|;{>SxDLzBG!?S1mr!vcJByUoWaf{}Of$Wsgtob)vAWBvpf8C^7~i zZMQ%x)2r8as%&5o#HGE(nnj`tmN!FC6KU)5XLY~aj$}=NXI4%6vi>203ufYs1+9%j zWMrN|v6f2LT_`ndo$WVSc%zjUQ36dy(yAYLFfKyS#f^z@X-;5jHinO7+J59`9oY}x zZ|jL<*B;r$9v+kxH3|r+RS-OrC_-)je_EtP5aoxqY!yXW?8|DE*1>obP(XQRrEoJG_~#tB0`Z9Zfkb~ zOEJXREvOLafT+>(Tii_(pGr11zN~pm){Lal8>24Jwh*B!7ovr`Sn0QJ>hYi_vV63Q!9vYtCEls416r*;k41AwSybN3~icoU<&UnwW|v|C{i~P z!7ubywsyl>rkCu>U)#M|=Jf#b9m3x?p);KsG;cM$NrP2;x?xmF+;aYw6q7Plv>Bl( z7B1oF-0{)OYonMiS(U>UBfsdiV#ArmNJr0(Om^E&hv7Sv6{yt3mh618b9CDh*}1uW z9KG6%b|hJL6Xc?bN-cvjffI%u#S_U~#GGtxonL5w z&8orwc!8Z!4h!OEBLmEe4*=o&I7Lo!0*09qj4|`Wt2vT)Nym z4eq1eST(l}4rFFYmBV`*IrnQ!a9jRUBDh+j2gI$>)asDv0o#%@EGm`ZagjxnGGO#ryGg&Zwh!8T z?s7CdN%8zgrqKnPeQzTkBU=@EPGg(46@8Pu_7im?H#`WaK$#8G|nWMJNbCxci8C36Xz2CfOyP_h)o+tQkpjjkW**RciccdO+A;i_v_9z~uv#e!eAf?r(2wwh8Z zu@U!f$Aa44?;!E{N`S}ST2-X2i~;<%C3*MBP&pRIP(>eQqn(D1`N@X4b&u(H?ti5d zBTzh}S8k{&BANfxSlY9w{&X3e46-PH-Vc&1&Gdb>KNGH(ES!8O(1Uc;p1tWs)r!zU zELT+MFsufcE;l!f_5S^3)wKg2W8#M_3RP0mmK96jOrOPSW-121{6H-9@NfC3OQ$j#K@=DUGL>z1WhJ&a zQ(>0hYBRN>H;B)Y%7si!hK;_8nMH56hlI=yY{k?}(vgD@u@xsdzmr3Xt=M83@C-!z zexq<-GK-*qZSilX2URgvaVfy95E*B8aa4)ZAKHr&MeCj?~b4=>3p$@Fi53wPxO4@zTY>d8C3(P@J+*>rFd8cI$D>v z5dxsjj2kU=CXM>p|1iM$3QW(yTXlisIW~~Vy}c&(_SksZ5dZx+WA)#+8rHVJ@tqx( zoAv)@y~F{9f#W@P|JUx8r&pHepABjkEPn+IFRzj{A0@`kTEILhrz6938F+7RBy6_~ zA!877WW}2lcZQI*)4m}0Py2hNj+3|#@f@GiV|vY7Ke(zYFq{sx3a)#^_C)r@Go}1vL(XCa z;>_>RZykNtn8z(aT`{Evl62D=%rY2HBM&(ZbfU+ zuGZ`ttZYsNJ5L%cx;FXB_(Gc-8S;NY;5xTMEK-GHh9SK}`nd5lXve-_ofu{L6kB?P zU0KVf2A}&?W$BY-c1%Bik zF3wk>G{NgWGH%Ou!$hZvAvzvHy&&}eaKIF_f1%~1i)n|d_aza=eGP6YdYNDCsJ1@5 z0{oJpZ-4%^u79evMhM{JInmjFuR%k)=EDx%QJGn@{)YozMH|F;oR(ui4jJhu-38s9 z2yuD|Dk|msfZMLb%_doJhAhL zG_fecJW;y+ubARMIb38Al1wObuS1MF={x&eQ8S?=$%0te1D4lQkaa54(+=(c893*N zYC-Yf<)xVB#wn2`GBaYxMjJ?4HxBl-Bk{9srC1uXX|hS0_E-JuJ+v)bP=f&=ew1e) zr-+D{E-xXYMO*37L5~*eK+v*+9fHR55zn5c5(qHI-*@3k4*=Lzx!ileP3?XUZCbHS)6yHZfwj8gUoHj;Q|X~?i9!KH3WlgQ zn^`znfs&C|WNwcDE@D*lN%-`FZ@59f_5taNjQqs1eUEUJL z$r?7(fP%LiJ<6L>j7U4%~QeJDKs?&0nICy9ZRPvVrejjqk;w1 z@|CcNJL zFWK8QkMLil_y5FjW&cOx4rg-@6o&r&vh1h-Nw;7A--Pe4_s1~KACx!ue<<(&8wvK_ zN$sfwFb{r@GUTH9C>2aVDicels>xz|7gLIo>RqEJzW1IN5oTDOv!_l4k!^-;%KVG6 zLEMssMd5qe|JbCmJZ<7rvluLqu){akz{n`&ZmlEgZ`oaRivKtH^Bat+XhJ6DSp@+d zQ*(cYgZl#QGHb6eS+1jNaxZQ!MF`tJcBMVCZ+^;%?znm>*cyEcM8@63u^JuXT53pj+k8&V|NJfJHGVGnD0`dJ9`WDgTmU@&Qx0yU;pW*OwA*!*|bfwPHwlJ zV_EFq^6pYp9Yg!@Fc5us=`XLgUnm`=#fZf97Nn`#b}Cx6&ggVNpa(5oPD;#d0p3UCeWup-&(NKZ|q<~^bX;CKwu+pi;F5@ z#v)*N7#Xce<_{|SAX#RYg^vP5x4RNYB1_Fx zpS)rja-1KXel96eXWEl8_htQ4jU}n2A&bYRjGHBO;2uDZ$=$vCM+8<-W0qoX(%ZsS zq?xD#2iPUCV9Q3^{zr0jB5fef&!Dmr`TV4#rBDlfgwvCrwx;I^3ROdc^oK)rTRe6U zb2hJQt8LR=JSxk-i9u;3wdp5$I15zlYAO?VyENwo?v-4$a~+Nua+C;O5M(IKQvXD5 z(ypuUA;8cJHP5|oKLRONZ*Kfu;ODUwM>EqvB{2w)74kkDe3)4j&rWz2j_40WjG2QV zX(Dm)fvA3N26dO>38fZjblsQ=uyyTZ^@`76Oitq|=!Vv?q4N2oooef8To=ov-!IPs z4i`yEe_+VGjJPZ9h1iEnF|QmTl z*HJr4+*^ZX5FwGFl{-lKl?PaEyuVP{oCk>5?F-`gh`>@<#>|m(d3YHj(rc+GyKHWq zSOdm7I)9MeQh&kP_BWv-mX)An%>r5?rCa{Mtx{HzyhD=@A~NQ|Xa@a{!ii+_)CHvk4L9ENmZ$1Ozrcb)rlp zl{;_k)mMZ)^WkekM?AUf3WT70(Z~*!-V+Sunl`oiyUDXrc{t2pNO-NwwsVU!rYX{K zWY?s6o(?=>LhUk~O!@J7foZ2Cws z#hVOVq(rav!I;{8GkzbUC;bkt7vx4=+?E8Tp#0Fwq>}9HqieC+Pa>1gwOtFc>x}MP z(KV<3fD}>xCpc@~H-+Hh>fk$jY$%Vip_uh)4*%MH0Q;V{x9TW`JLn~px}HwQ!n>$+ zP7cz~84Kb#g&=A=(HtId_alJzFeQph`Fm@QJ~ud?nx)j?{z;WN|NAr>vrdX~Ao>8~MGShQ^N+Jbk7j)bkTWYSlZc@vGPY z{{|%%HZ)mL0v#B5JP)l!Gr+%unI|H}UYy0m7&v(|7Xp~h{fwu1BdJWz@xlCtSwYY* zLd5h1-z9e6;5T907k&kxIrqY#qK5U(I-vFz(DRae$Y9LZ-3X2Z7zl*pCsN#ML_rf| zuuxP|xDJC!Jsh(YQ8+$dMM~-|Z8G;py}m|Lk4hA(CymPf(U7dPlxqW>D6a&CcOa#J zAOyX>K*{@;93*aKT*iTV=}SJw)&u>P9QG+Zd|XtTM%bq#Yn<(kfz7dh5$8P?iQ&gf zpeHk@H}f@a<4E8!wPQz(dcu9td}YdO!NJrO%m$=k5JneE z>-aD<E= z)ib@1aE@xkBeFp6MJW4h){O*9FLk-kqiuuct$1p%kb$9Qf|ZqV(R1F_$#dO>uogY) zWN^cq`x-)v4%2&QOp~RBt5fABE_AtjAr2|PWk$7rg{X}NUKv?xv6JU( zvrWp~kEICVAnr^lPJbv+1F&<1i{%e_sI?>FW`yB)LId&KZ;L#(vZamT0+NnwSVT$U zjHi-4(E8zEJK@8s3M;MacHP>Nl}n!bGv^_ZT9vGs5hgv%EHXUaWN&p8s|lLq^Tc-d>`0&k1tQc3CX2BGClg8P$)4;%@*Y6MlY={Z6p4DRGP+he;zb_G4`kws zL6GV}Jr81&`Ulx!e&%}+*W+XK-IH@{E3e6vgHbJ+xf%_5pr@rZG^qEDSc8aZY>9lw zfUog05hxyJs>0QBq^X$@0lmWsT%&nhguZz)E{@DP2-~!WbiyUIwuv>YYuSS>71%+6 z+ohRbBS}TXfPDTzM~0sb&edB-(%i6if*WIMbRM!}X_cE{&@}hr z6FQT0@k8ADbQ1rdwLfbXn_p!W+w<&y6z+4Y$Upq*A7uB}4}gnp`IF!0=ld_G`(G6I z=Q;O3&~Hhd(f*s%PU69LV%B>&X_rLJ(|B&DR=c~V2 zfP*YI;b4ojKMZs4x6Kf(2HUuaevEktl-?#Zz+AECO@IuL4U9ATvL^ED9ZDl19#-8E zT^Xo?c%=NfdQ%R2`GY=0(%wgeIdZ1>*>HoMi)B_ysqbmFGqWIsF$c;T_Aq8SU@EQg6!HKAgMPCt8? zfFy~)Yde<^metTCgw8Q`U|chf=;PNq@CVyyE6Z9O4{1Zw1R}=P6ffPU`v$bG$_lR6 z!gpk7)(XT)Yd?oi15BGEd@vD!^35y=e9M1a=Pu6?mDdM`aP#G6-=0) zbQ}A&k(ht1!kR@N@rmz%RM|G^Xr_{kM~V4hL9(Wh1cLKkg{T2S-%*+d!^rwLrhYDq ze4lhul zU?1wuMZ~$7nzMU+eLCe<+ayeD8sdUa8>jkB4~Fb;c(b~YF})q~wT*u0AS;-(1_!ui zl-_wJJnIrwQ+hG0dzLV(rQ~x^o31&XHo5X1RZ6plX5IuUE1w#KY2JRH(4BsIpswb^-{jH|(h`xL)RI%tw~;$k3?kk6oezhf;vT;XmtN&;w-O!egNh3e+@3v1&!qIcu>&|^X9^mMfq?^ zZ>x=1maJ7H|B?Uz(aE$^5HvbNnP*1cGw*8 zn|ue2>><3HMdt3MjA34-L4nF{*)V;nz8ZtdQDfAoD$q>+4Nbv@smNU9DHt_9=v&L) zX%LGr1gk0LRB9<%Wp8afyATwHt1DS+kVk<8(N2}3m;KaCxt-+;MCd?w4Xdm*`GRW# zYxkOeBanopFD#z45-n7Xcq7V7u^Az&EJ9xiW#XEQ9<|5$zJo~3lGv{3D}+3Dz}9t; z-|o>8`&GLp8;VDjF0l1TobX!fh)vn$v_LhUvdt@noS#bfcR9KT82kNQIbGzOx6QKm z5l4?2=o>e7Qt3P#B6LoyD~Pf2-n`?4y&S9&D24nm1^3oLHduu)%}~9G&&^7s_NV{I ze*LZ9?oLaqK~DTsfWBF&!UqI#c7~M*cZ?26)b_L)xh1@`oynTZiJIPX1a9#O7X;#YjK3 zrRQuvHWB~&4KFGW&f!U{W*5?{?-mmJw_0%c#IecTRsIleV*}K;t8nou#mqc6g9Q_p zL4YYO22uhMA~PI+`ddk}TaY|p6GJQBpy}~1bzix2u^=KVRXWZrM6v>9<>9J^*dmUh z0=c^=B&kT7VntP#ryAAIB%D<0`y;!XE|wu%I2ASU1XTTL?sT!uN*GZC)iTEoSWqj+ zi639OFEbjlpFo${J>!?YsV${CxZI7ZtW}eBI4z+2l3@vGQZ8|9>c>I7snQV^Q&AoJcsj_&V8RRA*KJu6x=t;oeE_NF*XI@P<*Zr= zk>X2xmr$%SoNh4qMh*s;v)`SSF4Kb|<{d_WxRd>gqsFZVkR6eAU8^an=BeDsVN42_FX+l;;{Q|(Le!O4OFO0>8!UIAJJYsc_!S~j;xbu0`R>wJtb4tFN?*b3k{|@ z+Fm?qF|qx5@2}RivLu=S$9!&?d{d}ka?plG0b#MExlMth5W)5&IG-Zk3VxI&@9DEV zPKf-Wrou?b?p53TTksWcMz0u8EvFX{3G^O`@YOOk!c|@jsxuCVPiQtm@8q1d&RlZ) zp;>o))CE0e@^l*3nJ(P6MxexqAFI5QLOPj+tgiXtd}$hhTE-@ma5;E2t)>k=4k?(W z_3p$O>0?ZYs#cAm@RtVEAX@IuWNA=haMZ+WU4O}2-%w4(?EfInRa84<5t5#hN>0{G+}0oed1#^wlFukF0DzX}MKE>OkzH$4>ib^Qq>jxB_r zD;+s)%$yAA)R<19QLVkb=B6AX`8Rn`G-V}u)nI3mLwt}`VT1UMFPpA51XLmU;>TGZ z`ZONDn+IqhN0r(PfuM`Hd9KUVVj5Me!6l+S1#q*m$`WU7b)$8h%~E7V3RCRg9b?p> zq_k?)jHQtKxuPUo&HG4i&ZEVUIq{BF_RV67tQ z6ADUIAr=d;yudu3enxVJDhztCC)Bh5r_xv%0mL-B+pLr0IEKL}x?zPCApsxlX16R-{u9~~>hCwP6~)`lKb~~h4VcVC#-O~8 zCAfRhtp;Brlt*@TZGZuuxHy>c?N!d+`0ZXd3cFKwQUx%_f|J~<0#d)((<4R-_!(MP zfRb)pvJ5T78x;R?yR{$LdM1ksE!^JxRV#MXzf&7@Uz3SGEK+y?NXQDfvkF(M?@esm z;mI6Zi2y}MfZAo=ipv2lGtJ{hRpZ@Km5rTPZ4Zn)ZVgLal4)J9OEmcL3b~Zy_UlnX ztpn-rHa9j4GgNXnnBya6PYlw;)|)Ip=KY zy|RZU*4QFQMGaqspJ%jjpgnEyXSJ3ctJi69iKK2pMYp70zR{VVaUJeXLgtN@GsEAy z_q1k?%>;ZWPm}Yn^=9|QftCt#OJ0oxcdP_(xsW0!-RZ;+gqg}XyZD`?QT?h**Aff)#K_5EUPS8& zr%qniQpmukY45k$jCl0ZO~~TN)!;r*TNz5zaT}s>NF^s?d}n?*}16FT()ceO1?Rp=NbE9ig6=-sPkw=y-?0P?uX@6t(=m#`9d6AJ?s zDaod@)Tm(`tFzjfI*eCDUO>)ohkzezt_z$@%qFO9s7nTCzti8i)Z?7#MdE6Y;5f>^ z(h!s2n3KCIaX2C?ap5=#H*A?weG;?LiWb7@W%G)=?jOvT^rYDS&=t9kJ?qOp-hjZ32dvEoddiYiIiOXY|>OnJ}1E zT1y`ML)OoJv|o~VXVP_)UT)#>g)N0#AMJU~kw|IaacQ7Y%L-g3X?{+<=h5QrZ#Le~ zyMu%F;`;B8uV>2aqZ`8RpU4B{d(3ur)_;UL9@nb{bi3ZNvcDcO%{i7|s}$awL6s%!qHZzSvEGy%TDKdRA6h1y`aZ(1JGnfPywKe*QF z(1}OepO6;7%A8?!Sh1z|VX$nws(P49QpFzklBL^N1mp%{VTgoKlc)-%6hiCxqc*fO zjFq&QAV||>38Q&hScL=;{9%qTF8*2Iv-Z*OMg4vHRD5|F16m-@(LvP$pWE==zMEG{ zELl;CHhKz((;BKmUuDrO^{2zQUJ(2oC0Lrb@wAt>>-?VT{MP*$X}bN=di7QNQ98NG zx(4DbGghu252t_C5uJQ3DOM1am2&T>S3=iv01xg3BKMRP(}hz*RyPC)sA1S{mpE^0 zW1&_$97+jMDNY&!=5pOPXJWnPx7~>jYWS5~bQHT`Wbu=Ib6d7mVLpQS1Zg4n7W`cI-^l|hw25YJjbe* zZl<<7@y3@W)c#C?ZuZ)?>#+$EqA$V|vgv!BMJhN>HknZr{9T#BDrZ3}${@mJgI`_p zSRu^QiPGeUEZR@A!EXYdi1-Q|PjyrF7ppXaN=8(%{+r%-aMf;6g(Yg+1DG}90u)_! zp;=CjW0eqrUngm=t-6`)#_?Ts!#ap>jcR^Rm-AMUq*{8=>q!-DjpAha+#KjH#}^NY zT4I5QE**EcBk)c{xIY?l4r<523K^Rm_n2%^iEKf}f(`t$C)f;zZhkn~Z#c7iVLkSx z;XBN<)yJIp1nT|;CWxj#W@GWY%q(chy3xqwvI)K%fJA{KtRr2v%~A?ySwbYXfxt9n zX==MhI4lQ**_W%{$!Hv7ONySZi4^h4$~q-g!cE{skEDKjEb3j~s?Qd6Nn%w{zlucC zIts7^iukb2Wc6Zl=FMO!)xm)9LLqGGEht(MjYV zB#brwcI*b;@Y4HkHKM(HCB9Eqzanq_em-T@pQydI$imaTz|Iaa7o6I^Cqsvrg1@vF2oWMFuVyAQC{&-AxCN9|Y)Ep);V`K6tPIa1c7EQX;{+j03O zX_uTKya458FKaiH1d!-UlCI2@5>o#`$pN!@>(qg#pBth{S*c7rllDjq%#JL7ExD^J zHZE!MRsV)RS-d)J=zYKBQ~HrMy#$3Z_nr2)2@E4 zj-b6iR*8=+SGtK=C4%DfRj0r7T<@l3Nsue|cV(Up{J;7HQK|zgZ{_;1C06h-T67wD zyxP%!G0%C1Sk|grS^UG>yofSHKMVDHX>kG;`e*^yhiqXHwrWopvSpS`QTV&C7#PH| z`F6BN{zpmoPB)%w&ttdYQZZ4M=?-AdIev1lMDb|hcsdw8GN?FJ}bUWAC` zZmT$V^LanfsF;|nKZew@58*?+7CCZ*?PM$-88*^lWnHDA^VkD4uYoSOv z5Kgz}o8t&yvJwF?{Vz>~ToCxD&%gl?;suxg1B5_(zh1xm3-%ozN$dN^ZQ1L)e)$*d zdoy~a?etyWe%-#qb@WU1Jz|?xEX(AkysYGM5O8W|cxWqumrUlGy>fR7fhe?$jG9xx zY;;d9Fe-;Vj5o-P7Hg^M;C$@NN&mIBgeal|nA<5n|6>ECkr)l`p%tWg?9_ zq-S_s$?Hm&XRzAFmqrFE!yr7(mV9;bGGtq}cES_BY=y&9bSa@LVZ$~HG#;vW?&AQM zxx;j6cs{NPj*Gz^$z4d#f#~M6Vg`sC{BYYT;%aD&W1|U-Jv2r{C#f|LKx-<$VP}Nh zFhTg(;ATR*EB81!hAwoWr3c$2cjH?N>A&ZGJScf~7Bm4oFu=oX zscCkczu`;vhRK{meLuDwD?sg56FXLk1~t->}j>0XD*|8P+_@QO}VTHCSA^&F-X4qZ+bp$a|r-R_`)UBOa4 zNN3qyh7hJ!bSW&9VIO){KN%Qee^$_B@SuSigz`-We-jxRg4#Dh4h1Vtg| z7(3Q9i6MIITXN5f0-5|JRBdUwRDd$*^J{v;+MGBi_H}xXyx{~(H;fByq|HRvGY*s~ z+3-8vGoPMkv(b!7NHOz%4y~(u@pMiuTJ_>g&#M0guU5Z+AKtP0R#u_XtuPzDE!^V$ zMRrZN;G1(%O*jVNsxq%=K5Xx%LDyAaMB}Q=%U*a`*M$`}8ik!(Lmq{cptH8!?`Dg{ z3g72;dn7Ap;70=>dY)yn5u?DRoq)pr3q#DZ`_w>>jYZYlUk23*b727jX=EIOvtaQ3 zW1Tlu04#@A25xLEZ(W4|Og0}i+=Rt~oGZF0umtQ?sOVxh7|RFaG{p)@169zi2v)I; zym98NrXEAY)KYT6sA9p`n{fsLu}7m7<+{CoWuC>toL2@RTsmB7qx^Zra02qHC%y6k zubaGK75UMHS^Wry^2eLD#_~tDDGOS&0hn8C6QLB$c6ee+4nO&gjmjFH*SNH}VL2bF zEj2v1__UwMaSPJzwq%&NfSVN`3)zT`6_IAwC>nbe|2}$Ax?GW?BU`JFQ4zWl?b$WP z)MKyoANI#HxeMG;@d*DDL*kUkio9hT=;6cGEV5)IO$t-|pA0}c#+NP#6_W}UlL!~n z-zctomJQdkriBNw0=^r&VFC+awQFOV?1tv4BzbXE-LG9Y)bTQHmmF9(TPY z-G27rhhKlLCLLDbHd!x%T>lvg(LIBm_|>^7&HcwYc`YkbZ0rUxTGg1H1tJBxSfPy; z2|oKzxMPQb62D@CRXppBZp^yfK}o#lHgvN-b9e0uJ2Bh&>AsimfS{1-=KPyy1Or5J zNQ!_|IV$oQEu>)N^4k~TXa|7tguwVVD&DxdC9JhAs;&9%(9Q}o1GZT(aQ65KAQ0g0 zP!hj=aYp!@&F#P7(XbH!szJf1R|v=Js8|wi zh;Tf=6SDrD-OiDY+81j{=#AvI5IB?*!W{10<#%k!hAS<#hxF_#%Z%J~Dm0fY3YlHA z+?3bEGGq1&m*2h!?|q{hp@A9_F0|q>v&l<(0=a?n(e4H19bm@g;sO&PF5RQ6b1v=i0xs+*MbqjGNu%*wr5ZPp1a~q2F)7_ zAyEM()Byy+6oLv1M38aQMVpJqbnAH`6K{ePs^`oXjU_pf5D4D+(e28jyS_pIFq?s zbhphl9jjLdXEnktiLH@aq6NvDrf!8G4lZvK1%wdp5wZ{;U@WJ)YptQ-e-QA@q=dJu zGNrP9u%10JBKCxN1dYS^$J){fFb7)jQ8g3wx9!~??jl}TOw_z`t_=c!(=fe_z%AUJ z=m{FmH=je zEfLbde>eneV4LPZC<;zpoA%AtG3raS#tND+G{!Z9c}{-U5mAhoDrl+JTJS&|!xLrx zFgJ@Zzy33#?MOr?gJuopJ*S2_j$wL(f{npa?z?K+%*ZI>9^#q#k`+hIsD(#S-i$KYsfw6beYb}n9hxW-8 z38IAdTfNhxHqYIkMemsrd%xe(F9HI#J03{F?YC}#=j8H z?CYfGC*3{-;IHzFopcA^x&HW zJQuDNTzD+m#?7*W_fSm+!1%`0X1Pn3VJB`s1HHu*mdk}gQAN?3t;~{2kO6Zn5j0JB z+{Gv{m};0v(1;Af@_EvhFyq`2*ui#S;6(Tmqg0YqNn$j8w=vEzdVU}d%akd2JsR`v zw*}3vZ)ue)sNg_rzTkR@XDCbgf{!>pu9MUSf~Wp6L^N%Zft(@58vQnh%W|YkERG0&B=iK!wD1l2@`UjVXR} z+8?*Aqz@2h7SlCx!AwPQz>y=Ys$_*%W51he0gqwH z9EFqrVl_P_-zc0|cP}_k>xj0UK-$;GZ7ph4xaZ{LyeQY+cRkHBg)($eE_?IQ>GO+9 zVij;8y5H^}^wxvkdeB?D?O$1M^(32n4$(SUQQ360`++S`Y<( zcT2Z(fw=%&tgIFMgZ=7P6%B^e`>ibzq)LGma(^!D*^las)uilnc*KDS^#h@P7cTd!yOIj6%fF_)7>}y=o81!4{jcUb5kUhW&zegvnTk(BMiJ|(}{WiTGb|SOzP!;0!u~YA~(JI=z^|BL5?ystL zzfGyKok+4*i#x6AcE2V2`pNXF+=*1l^y=OHHtj@UOP4&crB?f%K$0X?2A@i^POcO_ zk*rr${N9zrcc@MisL3S309)d{@AoI!=sqQ^1>4lhap`~ zIHjoDQWK1Z-KVFxFGe`(h^<;JI%y7#6`SmB6(Wv$>5L^YEdTctl^54gS9CW zDF#Yu_1pawvPgx?WTCuQ2{TmjGM#3mGG;;r%znF%&KIeW*>C9;Gbd?M{py;L3Yz_P zkNZ2V!e+mvR@|I4_+E9+kqVsCl<07^&Pf$H`|Vzn9k1BgZ^;!rCrwPZ+UICR&&k$> zNcGQgFxPRC3DrRN)6Jdgpp(dkD~YC73*DhQh3A{`-Dh7;w^rQ8+7c>s+|A+N+5iCy!MtzRT&6#hk~lfxNF(jH zGM_qw?TZeOxr3K=6GAcZ8y}rHhid$q7ffwc4e`DyBsYlWi=ojy$Z{Z#-oO1%#Y*vfjHrXGa3~(Vt#t1SIJD&7B4$!56yN#fg?YpA7Pu4fZ!9M&TeA&CJ{{x; zPDw;41GxkXfJvyiVwEOoqg65~Zdg@AV8%-De+B~pum=uC1B?hYn7|>U8Lnu|pxw}| z#k6Te5^bw44cr_nUfXcCOl~%f;Pv(iq)+ojqgBr*IlE!S6UA3ET4ifqv#f3^_Jo#v z1_KnJ^v*YVN~A{uCkTgycGuO$f>J}$1kAWavOx|XUR`|*E~;_<0#h>)daXI2U06N! zTr4rXHndF~k`WU*){4Yyh-(>9H4E@YS@#R6<(#~TnTR!?K`F{b$@=Z&3?3Z1$RMm1o&@QbruX!2*`ZYDM+6 z1ynLxvz4s$KTlL9OS6_BX`H$xiBNt^w9BhAiTMgN1+9|s{O8KppMb(0$-6r=E3L*Q8vnqg?IB;c&b7dm;c ziJ)20PVa(2MF6uR6nDV7_5_wS6(|c}uoAYx-axV@ASEUz89z>f@&1#GA0x4NN>cHJ zbm0kh@U%4Hi7CQU(qkv|H7)gGV#4pE^fk@6_Yt45K=<`QL(8A!AFgPLq$(Q5ISlE z7%FA(G1#acC{#?zh(kv007AvYi3nWOh=dfAw*pX6BS26wzA^$6l?DP8A-)R{l?DJ6 z<1QXX&=l~e*peZ|#{hnM4A7@X0DPJV_TXt@t}%e8DM%9O z;7%_0ev*!~KVYYOgE}4btb?9)(6dtenh2HjI50^QAd)7doTtMhr3W`BK_hiRj}oXx zV37s@j}nN6Adv>ajuL2&z#%;LOli;(Sv}9rY59L0U$~RA4){=#+Cp)WWj`zX~sc^x3l+PM0<-tHHj{z9;*@6X4!U9bN z2|DcYU)LVr7ZA`S5FiWhlcKOD0RVZ>J}Kg56#Qo#)+d4dF!0Yfq)!6L&z3c$mWxdS z`nd@T9`;bRcz-2RsVBvkRw_Omjc5JCi4N8r)7Y z)XqdaDiVX)@$eTgO-_Q zOGtyznFOEnNOp%wkU96&d?u~VRG1tCfRoUTM2MVS@SBt&M&WV#z&B|w!VomhAm~lH zJ+}vo^B{3*-_rE`gJh=x+)M_y=|I<{d6|A;V4K9lmkMZe4=|hfwR^~p!MrSquhEYFW24BT8#&4J+{Y=>C z{f2x4bD1&M0bFd|5gAKfvTF>@c{Rx;!|*(Za-%S#O#f)2DKMHgjil+OmJSN7AVRF2 z4+^lRA}<)>QI+m~C<;fTD~`YzDlPP3C~{5lf0~4L2$tkGOz0yuCtouY9UCFKln_m& zYASMC<>YI3=B#OFD{6XYb?GE^Ps>Sd66`l(R#t4u?+}edJts3Ol#m(TZYClmKK_=8 z%*pS_i$>Mb3&}yfvQg}QhFsT6jJAM$3#!PcBX&nMy?G`#Pd3|G2A_3y)=#k*fb)`8 zHeF{SZ=85KLp+T(3PZRaL^UAD;OOv2(|w?14WKM14h|)bZoP(^c0;!|4-@^|pTywV zPJ;a~VcK$O_L<(adapCs1uxtY`~VyILR?mIr4@u2Ujr~Su=apdgXh5KY^tUeKrJc$ zPjl5oNLta%!G+Aqf(kYt=;v$73w>EbFCt|7eOyyTmhis*)NaQ$FO3~9QnPBq1uZac zUw84H%o%p>l7Z~>yf;TtfwSKc=qMLlt#KE*d33jUGzM(hRKRN8+r9)$1Y@~N?XU2fYmgRs@4vmVRt1(iJO8zrtg!Dmd9MI-prRwGa4KJf_b@AgJ-|I$>w@2vWH{C(tW{}1_eG|o#t9sLZS!+C#{PwgD-NB+tq&s=}6emWY;9);u#R-X|b z4K!s`m`hYh%g4|(#H9fBSZE~)Mr0+W2u)9p`XtD?&lXLvmyw(GVL|CKrhMxYZ-Z!y zEosEHkhj9gE};F&YUrkoT`;~p49CrgyH+SHo2vZ(+57kI$ZaEG9Nxe6DR87cM^aYZ zl4i!2=t-QFN3x^GbI~)B?cF!Yj?pB#8xcv+0N9##ocFW;4yphU>}Hc-OEb1NL!aYO zlVA~-LZR*@3{RxVJ;ku%S<$b<3MdE}HN^&)1JIR$K3tWC-I!#(zRMyw3Or?LaCJv3 z!@2(Mc@Iz=tV=~Ur^U?0VlIGT4g7DE5(%gMJ_xW@Zt)|$TfOgU58O__Z|B+C<5Buh zb>U3XqRMC&d%3pD--BEl<@z(s?Prk7&#%_q=RvMMJwm4IZ^vF7K$bO=Q(KNVD>)X{FGUgm=xU%={gxWuS+6FV^tp>xU znc?c~7vMaH0h5GgNrgTe_}!s%8^i=*LP)MK`iP}R8%AOHj~=KNf=wV|vm6wn?p3{} z4KA_w@bWoHEN0o!`ca^4rDbWB6WtdnvR+5U#)0Xvt}lHfDU9eA0vqHaac_^yC0dv-yoA1(A`F~tEFqP z=Yri>Rgp58Ey2|cIi^QJFi{}x46$6+FFBiXQb`CUf9{@`Ue|W7IPI{t!(UCqvDQEW z?Isv#qLi*FnzkU;+xM-R)`;w*#^gp*!wT(p&uf%TvoTw(sc!1dILmK@s}h908=kY$ zsO*DTUi4LA8scP|QKhe?n6O(O7jM`YYU6F6#KQc24_Q$sQU3nKru(on6yt0)6*8y# zjF=Nn=WlVIZY6a8H%k7>gUA>oEDhj7Y&w9u-rBOw88w7dR*2u7`=HBIKIn6+O5 zol*PJ8U{|gQa+ds70z|Zjnw@I?*M+prc;*aFG%IH)Wb|KR@mqHR(87(D#y zCZuZ?h=Qi>uyo^q;UN?=A<*YBx$Ml~iS!zCPS7lC08uu5XRxr5SsSTjv0ibrEBmH=3~XxnbV!*s?Co zZKK&RFYQK<9(i0q5Qg&nAD3n(pYQ@ZXOC7+B{IR0hm|O&b(RgbkT>J7`8RL7Nr3sa&(6t2zm9RzvLwzdat(>?_B2Fdd85YTtNkUly=h0mMBWxi9v*7P{6K_Wcri^e>eC? ziDWa_W4L>^++h(sQXAK(MJX~dTi%pL-hD0#r6o{+tr;eSM-%`AqoRelH3PMwi$T`^ zxwyxadGO6nZl@HfA~YA4GeSQh*XwQg9x!;{^rT8?4CqDphPTCOL8g$9*7hEHIwsd5 z?Lbb?3?eaFE%Xak-Kwy*|CFJ-Vz(NosPYMup!73Sg~5c}h~E;eH{dtm*EtnAFX`H`6t-bapv`0NPLfyhyL5$b#g5fCFXBCKROh}j1lb0KV- z;~+Y_!Ej|{#N#X;^ZY(?6TF|S1jF+Y^hIe8&O{Jr zM}3SO1Q8e((PVhWfqHqq=}6PrbW?rVc*ij>+Om-KiH&u{;jr!$)Pe7Wd|@a8BU^8% zlP`{Fz16U`7OZ%;HqUX`nGknX>DJWO`sYO=a?5ku`rQUCM2GNy$Ce`${IGq!tmrV* z5DV&oce37CDML)_I-o|dg`zRW<{}LOoB+N|NOfr}o++MKVx*U|DG&@@`v+OB1W1dt% zg}~DAgTdTy3q>_oQ*I{sj~C*V(9Uk~!)B(NYbW5iRJEm%)wL1b>ndKpOc%skf}p-x z%`|PQ65LkMRL;O9$qMl9oSS80LNk{`bo1GCyVlnC-2SXJ2#pSO?NK<``3(F*QKMkC z;ZIBo=cii(U1`_>SCNb z$5R|$vtRRb9#r`+jDSjG@U(oIy&84nMD*$FbgiA#-|w$!%|EX}lq zN;!hEaeS#G9KQJYW@>~)pi>1+0=+x(#SKbTkMoFJi`47CNzZW)_8Ue1y4$1|f87O( zju&WbowGXLqpOCU+ZH90W)Xo)DpKUowxr69`B|9<2)TefkTWnw$+a2jHpU_1&Z&YJ z5j5$EBA_p0a*l|vz!KM)2cT!2H?EnZ37cvDJ%;@|Z-N|SF$@?>h_20P0ybtN&wBLh zaB}low&2;3b8U5ok_nqrC@%>qx5Is5r@RAA%~=yh@qwIUx2b9_(}~?6(6GF1jlKrSmXvIkcY~1+&oAQ``QNs58Dk%exP}GkYjU9@6-4CqGuBX)AVq za!`-<5Ih4Mk=U%3^2Eb1cY$Si>=_irbp-_Eh!pG|PQ}jDCmSZsCRz^<(<8$-&`L3v zoqjXXQ)XeEB=_{-DH)NILxbf7ZX;O4kTtQ%Y`Vm7tfFgHL_y|y0KdXKGzGgrfZKdX zt_gO2OKqt?tO_W62dP^Xn30P^e^QWJLZf3L(#s>n$Luo z6{d1rIhd7UPp?2bakedVuiMBn+u#0={&n-22(}D=(1ynioG}~~s7>c2^Ax77gP}GU zFkabDql_(B<~M@HXc8cK*CsX?c4daCxF`_Cy0+OgqqB{BrB}mYX7(1G9ENU!@U5;b z0H4@Q2heG&6Wv?Ux(j&%bVtlF)Lm5Ce(eZiiD&jeG`Coa4LcQ)sAyT!$r+xF27Wn5 z4Lsefjc9HVHxUu2zZv9Ti*3<-^R~eN)ot*6vnmR`u0AN9J6!rE(sT8;Zts*tcMQ&7 zSS?hP4N7ILX|LW7w8wYq@83&)hzc))YAgtI!kumMV;l1U{uKUWt-<4xxm9UNp z8_&R`zJgl2%}ld%p>#oWw!2wigjqG1hda?}9c@XXV0Mc1$S{<_2fHMOUH@jYM~0o; zJ;Ja4WOFbCU+rK<8@;*GZJL{H_w$;5Do&ZcF19sKF7P#@cAsvxdKkLTr!HM=vA^%N zSGXNlJqQgu)Q}4|LOyWpFVQT^knni19K=s8YWbT3QcSzHWqRh6aH@A0zzcCr^)` z9G@PTF+VvpqYpImPe!MQq$6ug1EL)nQw`nxRbi8J+zXjnUu(OF8^M~9`I^-{cjql^ zzhKAS3m`XOQsA2WE*FyhZZpz*I2(26n^fODB)H3OY2?&_tC&Zgu{5_T zEvieFF{3&@FN6tdXg(-zO~ZhzK|KCEl8f0p4zN7Y2)=CsZrQz`N>Aup}cbJJ0Y z5wZ5|JGLPRrw7$G*LH3m?yrK%Ahvpg9-P}>ESOwyc7J>?q?zK8p`IheG<6KA(vJ7K zGR@t-zIc5`&ePPAfJ(7xmEmSnV?s;*9g_+U);n%Ew2G&HYTtxC^CC+0tBaVM8(Wh9 ze$F%&!)N3MSH(z#8s!nE!tTl+hkcp|k+BwR-%J(SJs3Op@em)d#?JnVxAB7=ySt9Z z049j)xx*v3*&Ed^TP9}8GiN&m%O_|UptLrezKzcvHGi7kwvjlf?_G0L>szM-Jr;;! zJ(FM&(To)-nUyM2R%T+^rfKNoJmT)Qu1!G-)!xo@3RzNIV zic%@s^2}Im9V4?#?Pl0I<|yc6;4(xB6xOwQ(5Y<&xVb?t?x_gh7c&8$yQX>`C6}3o zwlmHGh@U1#Z18$Fo1da5QQU;#*A35u2b2+;EJ(6{wlRZIuh5BulA@$DK+~wPt-e$T zGoi?t+if5r1rW6A@`!YfpL3z$JPxMHxFBE<-=bx4 ze8}j8>CMtHFUaZm^knO4-hAG#F)7?8L3NR2j5sF1;rQ0QFmloBB8yWOzO=Dw=B1I7 zDz&WG5#G9&T(gM4+=D626eQ!W3QwaBn~~PgqOnRu-=v)1@||L zc8#su*rMUkc6Z4Ew%k`l3ZW0TUOqd_%Xej5Xd|RCG}OL~8S`c-uAYmIF@I^@8WhiY zMrF3_l3;IeBp?T}V!@>Vtpr(6i4wK1RHn$kAAEQI=IyKVmzRed&LF&)8*QCwBkXzb znbif_jJhie=lX3{0BDmNhoN+NWyI}lN!U9u04%oMr#)h*JB3=G8anfMvZbv67RCBR zaXqf&cq_jd&G4-9Iw5D%2G{XAzTmk_*Zkp_mu66*S*0|nkV9=w8i*fm*LIpALLD|V zwi?O0J|^w9E=8;IxsR`*_v$jEO7rB)OeA+^?2)SHwl^CiEy(%zH{^n=yZ)+WSgov? zhljcnFZ=rn*#no;%=^!=ccoC>MkO~l+t$SMh4Ahb!{JWMaG}=NCRI~R0Pa-X_N4b} zPB*r9w!3Lvv(lBrtZ91(Ogqy{QIUI!)>5D;V{*&OGjds|3O(TT%4fP^+McPZwE4xY zNfcJi=7lb1E-wYSM5S;~*xW9Ar=RT}k==JwW&SDjRPBz*RbFO1;o9&d#gs{j*fL@E zg-)1!8Zsj91t~hekIEFoCZ__EWU@t2g~;yZV0Fzg-3c)fc_~HCgA7x!NxDikMg=5- z8M8|&AZs}4UvX#}+-NW#od#xewIJx#ln4yNIIZ* z$0=JJtCXG|K^G8Hx&u|4?o$SRab}l ziw{cRNt9$lJQsC!5kF7v4G>i!5h%I3a0EU`Zkcj**EvzXz9q+#_~1OJKZ$}|etBcN zb@&TSS|{b{3m_l)Iql@IJEC#vPnBebFNtDweCt)_#@r_tR8!<}fC6>d+5CZM*p~?; zn1NRUCglPAL;_@g)>mV@iEF`2j%5GY^zb>}hg!sEdr#MR+(_=S6YAx=@rU3mA3EoEyy#4z(cHzR zHCSa6%^JZWH*;zTDaor$^RlO=9H6{GFo-eoRd{Fud8-JyVCYzsp1GV7y%-4S+6wF? zE$GaE0_sX~{0T_j5AgsMl7)YbE-26FglAkY4S#SrcHAK*I)G_-Ff|&?@_3GCP1{Kh z%(G+Aq8^TcX7=(uP;_U7VRA2SWQrchzx1EQj^cJU`1Z}!gU;%9`zK!OXSHeFdRD`O z8zvV#VLbwaHNm~V<9d5!N`I@!M6BP$pcB1*#hr&BzCn^H>%$RdUF#e)Vu4lfk#kFn z0Jd4#mbA zBAHlZdaIZeTxEwLkF=}9|kFhoHkv&!}?s;?=)xorg6VddIZGO0({UQ zm)}%KgPXF6OH3y)3CERUa*Ut;wM=f`K?j|E!#YdKwN33CHf@_(d)r%ny9o|*V6@V6 zj5Pwyt7QjTry5f-{_=Aho0+xCW2Aj{e;vM}_4SBeqxCiDr0LBGIXoqwxy)XTM|#s5 z3ao}llytnFq^SUZBnd0teM$xBOw*hfzZz=L&tp24Wo!PC7wP6%Ur}j7+a?2P?^z>^ zw=s8xyE*Pb6wV6Wv_ZG-t<~wzm+HrCgkK+(X+8hH9>Z}{Dc7waV((2U=PYr9RC9fu zMPM-|-v_T7`2gJCuTt)hIyWCMopC(g_IyZ9mrDWh>Nb0KFDr)B%IO^-nu|)BGtFe3 zD=ZO3VQVP8E?IG-X>!+T75T^?{O0+C2N--E+F%I1jlHcM#c%`tlDqL2w%ej};Y(V^ zX_8#)6<)yK#w2~{%vy>PQul700!%{DXYLcwn+?jCg2~M{;kZH_h zYD;v8f+RMZ6ddY7uA*@r2iK#MO0-M#;1i;roSd9svck_k`-})lC`nnu^VNo(fDytc zr>A4`-{&u1fcs;q6(&2zubKu8z#S>+%=Le7Ucai-J~iJ2snJho!$r8eo1Z>=HYOKb zLhv!SnOU4irgIK1geDYH-~pS|E!)m97Ft7!JPZinv$?j(F%0%*Jkc11g``vTB#yO%sewGb{0Uwc!-!U>(UrSMyb*^=EhwX%E6K`TCYFt!Ie?UK^Uj1ZaFG1@Sj?iX; zsI!Qdl*_J!+r;{Efa?cFkTeh0gr(%UCo|4Txs>AXfCAlyXzqeJT6xE4Ccodd;YeD}$Yo`*F)2*M8Xs^A+M!RjfhA9CO_YG^E$iQR>p72Y%lW zwqVm2+O{z(<`<>ml&6@k>@tBHrs*?N3iG~p!py0>Gcuy3$YY2vQ9kSx3&$+bx|Gvp z7`N5i*ZuK$-$rgqqBNCu&zt*?S^elGEfv-pF-$B}^AV85rj8n+cBXz6RflX3Ep9$) z0i3+&SZ?Xqer`|Y*IS;-c(t6(wxnUk!oxT`a3jDz>XD4sdpMZ!8ge{eO*@ky2lLt_ za(2Uq43(pG5EK{zamb0>@8*oxBcIE7ZFxH56?;bG6?anO)o0OXwc2LQ~luiMHCON2$)#r}FsqsyiNC)e*JQ-N`gs=FGj|f*u;VHEMPi(`$4N z7+AfS+#BI=x;1_8rNUC8c$_9dadPn72i!RaqN_qPIi(3Z3^fd_oU@$Cj)cz68PdhP z&1sR^G^z=cKuFj-&7@h2=Qmd*m3+aZA_re~1*zLaJR2?lQR)f!QoN%wGky%{n# zG*CdL&raie)La)LW!Kdt<7$30Sn1#PGCE&*k-aZ*Eb-Qc7Tv#Mh2p@MnA64ZPFz6s zF0%}M^Rv2P1jO`Z%+?q;k6zXN|E@p8)9{Msjcfn0^JvN_m@qJr`ZqHq9?pccOUPMsN`ySI|r4bX*lAB`=)d1K4=UetAl zEE*&^>C1{$U+y4s2iErPcthd{&$X>{_A97Ry4oY)YmDd)WNc(7I0?2{gofI0+;zfO zGX=m8;LVN(;Sf(hAn5VAH~ovNcOqCrY$hxw_PMMD?6vTNu?)Q`QOf zqfzanQSG;3RJ%f>nmI|K9xK#73h0eXIMuDC8)~<>s3{$?x2s`a0Vm$a$q2h?>s1VR zdzVJMyQUBsWB~zKJpxS2nD^@t5=?lF#=*b>S&AOD9$vugK(!~VG;`!jEf+2t3OLJ> zCag2>R(<({HA1}{KT+nY+0&TTn^S_iOz}B|Kff~bwjq~R+r`PJ3i`cMYn&ZxN;|&0X_aPkQH7mw8s&l@by(2U}0P1%)W==#wn-?uvgRQ zRg4rw@Y+rs!D|~cVh{fj@)%LuyEY#lc};B7eAr+uVs>Fa^Rdcc#6XQ=L7Hqv1lSn! zVPG7LF&;&j4+G93$~YTiJ`DJaC^8Ynfi$>`2(Z6t^I>pkURz7zx+yVY5<>kp%rhp3 zu{Zz?AMWpu$NT8`Q40)}o{l~ztVl#>xvcuSg+5B9fvu`lQK9iP zcl{k?mc;(`qrd=y@A4FVwIx$jvqC=OksYv4k{HbsIS7hmJm-)+0Bc1ur4>2Ao8zRc zVrYhKowHoX<&g(tUT?s)EjE|Wt}iI2RY}PToh{!Z&*f*XFPOc)nu}7K%Rqe^6zTBE z)}q`(NMOo@cUiF@3o2Frh{;dVr`@S>+*MMonJmu8{~Y}FKYkt^{^{W0FDIkl|Ls2x{yK&~ zes}n%!=K%c|2RB6IQYvqFTcLMzWf_M{P{0MmEYm7pAY`RF8>w@ zJrZ(+Q-21z>LP%+3EF1A)Q6NOVxCKX52!wb#qLes+U&u5=dfe_S3aC~N-rQVnO*S6 z5JuO!8MvTXUJ6O&lB8BOwj7ZEB1nMo;G}=hzm&^|L^0+pw zE{`<17(kv&w^yAZ(4dg{B65GA7R^+*!kd<5#uG?=50WY@vqzg-$m#oz=T%NBWsqDH zwoNBgyJLI@?_Jh@NREO<)+HDVX;?yQzFe z^tH`c@GO2ex&+pK5vsyEqJ5C<^Q+`_w&Za74>#xW7FTQAH*X$qL1yT{DQ@F%CQCw{ zAD5^8&QN^ol{NO*OO}bv+`^->#bY-RV;~S@Wd7%rJ);rMZY@5g|+@bKL{n)KJ_x%o1SNs=j1>! zMlKynoN2}Jyo6$jnAC{{vz=~7^ zejVr6S1Od|ZRJ?}Lg(N!QOv@8TlEe#$3X!lj2AquXod#?c77ws=Qmdfme1yTbkD%D zi)VUGYg{M!s)Oq0U8dlm(N@og+IT4YOP7#0&-z0)TugcdYm1R>7y!dO_cdV+GYLv@ zv$U$KEcN;rp@43kDBR!1BN1z>8#!Q;+#bWfFKYa`WqFxV9q-Gr`+cA_53H|dPtzhD z(afOT^>@$vJO%ttZMb6H)^(p-{K{_z*7|>#dKK4H30}vjD5a^pbVVZezaDVuN8Mt}#i_sr~Y6oBZU``xq8bp)` zv2TQa-M&oQ57#2SDOobM)p&kD!I-c@%bpBd*CNIGskl|3&yxM!c~96f)|Lt;RI{Sj zVcA8)7DC(7tWY!?=Hvjhg|7Ux76RxF(85lb=LKQ!xPnY5IJdAg6rIgIgJM2uFu^6h z=|)sxQRsJt(7*Gj@0c9m)G z;IXWIVYlR}FE@-`6iLkr!NT?=w0Q*_P`0#QL#QpVcAbJHOerdtSjF1bJjTIHtL`ZU zmM^CT)(Mjg>%dnDtP~{^DehR|LlewtaNETM66Y0wE8{#^!F5B}GR$=-cTQ8lk#D>N z(5KCCt3juR!{!>6Wnvf-Z}IwT;d7dzmAQMb+9~AO#)F3puv6qr)0ApD$TRyT^_8=% z#|unY;0Y5Kv*{%PQE~_?2__8I8RiIbDd{nJB_b`Y=#UMpGSpMU9A*A%NGw@O(h9io znwa+41fw;xhPxXyqqlY7e^Ptd!d$fRn*GL01CSM(OXl(#7zDQyT@{Gf%_;9!OdFa# zV_MbDnRuQV!f3e{tGR*04wj)8Dz(arcEJD_Q3-o4nbWs#@Iy>=SP$-{NaO5zE2Z1& zm+RmQ4DL~&-oge^W``W0=+$brWKI{`Ynp5Bb>u6}K$k}FxzTBiNhHFf&|L#9Z87nx z?lLs$CfY2tlKIEKYe~KJ+wh)25#_1e#ke6sXXJMc2FEhPUZTfTu zF$Qb0@4u25kPvwrdCrE-fF^+f?A)w4fuHYHh_=4BWo03%h?C{B5gQZ?GGF3 zsp4E1^jfdNOgOD0iSXzc>eB(9wBQdG*LsB-onK$U%T6ww!4G%ZM;nRVHDQJv)ESdt zqQh?tcG1JDxre`jx*gW==8LgQX1){+5=J_PGJ&*MS|>d{=Q16YRO%(_XpVgEqXCCu zlaVhC_6g}LB@|wb^@gc)7Bg#R^}Y$PdeP&oSNVO7GA2gTU5!zOr8k_$hL+HcKMml#q%z>ITY2`!sCPQjf(-A6m1f)?SU4%h!p4SEagZbJK;hQzI z;YCRyijfW0_r@E`cRLSa)G5#+j|%^eFWI)$*E4}Oc5ob(47!oC{44h zuGMW3Kmf;SZAl>`8b`u|=zFUHEi-CWRMV^e2SKYTDuTO zQXL|JW^Re6=-gGF1wq+n6Z}fVc{EOFa(7QmTPLMkvdut2P|B}UYey$`s#># zhyd=$?Dcz=W#->5iru67?if9v6&T&ml~YaH;F^O}in5GllnkyPu8tnuK;(ica0YTg zKV9V+!fVC~CaDI)r_JEWr-ZI`wXqepo`?_)(8%nTbReY;mfb=Cb)vxlw|OI%3lc*e zl5cGZcz?e5xah8TneRL zIk215AZ`e;3I;dKkCOODNxW@%A0_d&>t8_<4`|rdL-pKQQ@I!ndg~2LUI}d-6@as* zWS9<=tVwAUXy-j$jti!3J}PGuc;mkNwWK{s$ivHuWx>XCRKaD;+M?H5;E`JUYry;a z%6bTx=MZr`h=}=_9g`d8YUYH4ZaRTQ!!{H(!lvSbjbG&q77DUX4k7JdBYO1U=k7F@?A*_#YOQI}R!C3K?Q-XK0&MOt1JgQ&mXa;FsN&|qhA~tcISi$(tUl*6U)j~UDue5dOyi|t zbSb8~Qq5c|2{<%7qKVtD{rliJp|_E3SN%0XgjA5-CpfRdvno24m$-z$W@ZiMj2#I4 z$We_9m5M&U2|AK-RY#I|4=M=3DF`*>b%2_ZSS^qz!mtONSKS4w|K8ZXpJzrC97g;D zLR|ONdvx(Uue8~8vE-JJE6nQv0;<(hP3!CeOsY=5tMD4&IYCyD5$A8(fEy_olP&fMUPHK8yw-VHAVr{d_IqX!MAR1*te%Tfq~n%7GaM>7PKney z1?vXp#a2QHuPZaqI~N1si9B6UoPq< z?-IsR+xg!fxf#?P6Vt?HN^0PRy`QZmfJxRn^a3Z$7b7p5W_<@_{;dK3&{XlPbqojuHT{^}y0^M8nlcy8Cd zZ4d+ae3(8D11NthOx(Q;#fouVL2NvVt8bvn;fb35+-@LYySfh$6hS#P7 zi?}vWAuX25+aYSATZT`80xW<8aX|4;w)GMLk{SUH8IQ$1Jk@Y&UN0LSl`}bmoTW)rQO5cjct+v1C0=i%tJzNH)K`|V+1eq^ zuSrV1S;j&b&e#-u zE*h-qk&%;rtoVXv45RF6;VY4f=^FnTPc5+YxM2yrmU#D$Eq9Mr=~6Vr-K%1^&Pv^& zL7s;LL&h#Vi%hCdZ2a&l3p|XqeV=mELjxnM_3(K{(a1mC0=){MrF>)5JlzCvY8MWh z&tc6p8U^x!=2J)n6&D&jh#(;RzG_A8YN?S0nc`hCu}0d;h-578;u~lAJ1~BWDfud{ zBx3-P=Y~VK>BtJ92``eYO3^wC;L%3=ex`IQ1g>9onCoIkysa@-d(f7p0D=^}A8its zvtZEZBk4s9YcPV<>1Yt~t==ZnjR_%|#Z8l@(DW6bNJgH|X;H8&NNS7pkN_P{c)`?k)jMbElWDsKC_{OilU zlqpb}Z1w%Rf}JG;Fg17xLoHHh+l{oF3(u0P+-q8SF=bNX^iG(4p%X5jlBx(|r?K$l zT-=jXkb4GBJ%$?rFMSnLeI^(^1h^$4FQv%2^Eh`n@!({(S=CuysJX&fRhZ?itG0ag zoM?^09P)uV2E=Zst^qeT3SDB^-6P3!Ao#^x-7oq=f&DcBK2yut3Z{9p?Aq0viZozsz z$emfOj$TcV{mJVS(6M(cv58B{teWwSX{J7CZTY%PcBLR;cK1>SRplRgL~K{?{kO>m z+_si_Cn+mg(UTiX6y&QKPjNyXJomOH)-PZ7c;8j$YMdB>3*B5~sUqy1mbCNZiO6%q z$a;8FLW^$F6(u@67Bi6khM587iu}hS)n-8;fgI$ zss&WV_GvAF7~7qtnn@#q;{2T;o4sp9#x@K1uNLX=gxXiYU$s>D#?f?l){e9@<^IQN z{=e;N{_ne#`V^Ai#+Bf)ZC5lJ_NHaB0!_tcZN>%-hTXIFG<9j=+y`t1yAJ9m7u*F! z5?K|+=0%HQ&8Vh|={|K_lRvB9G1Md6BlZ#Ks#!{C56Q53T*>GQ%jOjgC{rQ*#JJKu z-SpQv1;Mw?97~q;WD<_Te%qsOzrDH`I!)#s#|XmT&8dp8v_c6J{$mx2V301~PmYE4 zuu=BzqFKUfmFWdncX1`H)?RCFt*@V75_>mNa%tBS_9+TCgB5l5^#|66nI)_?PNZDj zJ)}(5_NvEKdBIh2sLQN$;@eVGBHejsfAo(-gb57 zT5YFDwf!r(^nQ0%;#IydAa zo66W%j&hB0XX&749Z27cvhoRH&`Esj-6PmiDrF_Ev$aZ*KgPj|=UhUYw^GQ;Fr zKEs%6*R2v4(su+*@h7|FKuG9OLJN{Hm!!*5m?cUDJu=&eB75Y~)!$`0h;`Y=_Q8=F zs+X=WYGYN8Sn~Dr%Q5-ZiZb?CMyh7UZ*Uq~e8`E7+PV+W5X8vy-DkjxtiNt^_$4N+ zTc6M`nIJ}O%~NsxhLszgBvv>nY`miX<=Wg3ibGjYstHA6l2jS(vKyiHcT6rWuisog zKfk@aI3r)%FYu6g9+O*9tBX4X9v`S+i*xwC9U&1Ww5V$mLKc5okgI}gUopCy_e(NS zSXXQV)oQC}TpuB)haWMI8(--F3Zbxub*!UJAHuTva-#7-8 z5MED1gv7#gwru-&ygvp{(*5ziW5hCU56e!V_H3#<6V^g%BHoyg*DfTdn`7hCFpj5@ zQME1y+46-x+5&p3Y7%zV7FL?^h0TljU|n?Go#-VFHm4H<-@JHuKX5k==!GqpW&4nb zJjco|bDuseE?K0f91j~qKV|J*`hMz)6?LW?x9kdibRIgwone&~ zX)PtC}>}p=pEK7Ub&Y z`OQ_+F0!Tnbc6$Sr+~c4F0$z`h0#0?ubRwhd0y%H1y_*JFrGnKdozf^z^c2}8bP?3 z=uSkfVLboy`8A=HnLW*WbH2s7tGJ%tU}V7^$Q$33Ai_`G^$k-u8*R_sJiuS`jK|WM7;`mjbWL{<-R@R#%jW zqF_m10ou4F`7xgC@gIv7O(_ob|5Y@@>3j7UYQE<5$M>%Bn(Ju246nStq*6WJUbL_y z(~=g-tXtDwvTu!?`{Y0;Wv6}b(PLn;stDN??B^{m#|s|=)77O%HUa`x$7{4~d%r$m z|F7X0dBGL9=JeHehsIpl605+uT^pg3mv3pB$}>EJruj?7`V@mV;@+bRmWHePeXg{~?#tO@MG7$kJ@>gMf>^Di%7z`UV%ONT~M&n;KJ zjo)MZuHCf1dY7$;HQE&`=DLEs`s$`(savziZPuWyTIwDuIu+B6Gw`1Dok7;jhLCC| z1q!Xn@%z-xbqtvNLgpwla-5Am%h7N{R6k?!VCTB18SQ6W#bk_G#kyYJv!Tr;N^(bKDotv9BS`d-K(NjjRZta#AaXRAS^o28Lo*WSB0Z7L~hqog4thGf{U1bVT8h(y!Om5F5f zp0RFj^5o=7(T2v{AF z|9kWLRb6(_KJ5f-^XD2I@zXgb7lHd-sOzJ8-dh)<5Sq~G6fw}%R^9J24;XD2$fgv1`jNdUbRZzyeJC?*{5td9DmOr6|=@ovc#xBJ= zlMp?wF*2e)Y|}zyH?u3jU~7UnM{=YEJ)0rI$k+JhwTFt!U=zsHgokFLn8B*`*hfU@ zY{XI@#k(wfEH?3#E|7@5q!9)4n;uf`y)f4fp%YPQ=fQx_d%_T^4Y~HiCt{jWwMjp>4m;7By*N#FkU9aR9-LUfqm7yBsI@vgoU(^ZMx1vfA=TBa1? zus%7Jcg!U~qgm`KU7N}CxgfF7$^v~_4Gjx}Ama;IPDa5PRBfWMgyr~N7?>+IgV_cg z$oe!LJZyU;#vj7=)!_%k&`L~0>M(WMlvl68^_PZKUy3hmKg`iDa&#Zq9T2afPJxkN zV_XOE8iLx0+^a4%l@A4KaPpA@6p|Pk4Z@FOw{5N50mJT73pZOwBK||FC^-e_ z`SsO6Z9?$o27N-%;y0^NxI&FWSe*8v9@ck5*q>;LetY3*t!rPIqq4S8MIRgCf@)#a z%Jtz}Cvc92=zKhY(7Z>14B+=Tq_1AVq>xLsXc5}Xf1Ye_aH*}`zMq>?$y>0my~Twj@$xwh=( zz2sUm%%I3*u85cpEdxp#R>j@L>40*3cx_!YbLxijpsBqMg8Wfu2_kkjRQMr*$ClTi z8DhV{wfjKRGQ29N;W7PG4rY`G75gL)u3_k|hiPP5G%-%QGH8{$G%-hx?HMXub!lRp zc4ZjMM=(FG!HhCT4g%SyiGj5m1hHQe6KYomf$q@6MB6miVMf_F2WzCdH8CWK;IG5$ zUrQ4cus811Y-nYMD>}j`9H*M8hPh^weP)&cwR7F& z(?(f-x%TSGc+PEtB|}b`8fa%YKmg;Utd1%?0(@XHi4ud9cC!u`B}W-9@F#O53w)@KRb*=W-}W$S;DsIuIl?79BU(oLq2T4F z`(gXKKKknvTEhec0z!fz_aA8EZYTcrR!-T}zh6Z98*Xm-wU|%_07uu{fjVYeb*){! zY#*jnch?rQUH!FbmVXIfHB7S+3H76++HcrV?Z%cH3|0&L&xZ6h!b=VP&mw`wdZ~el zI~w&rda3naAHCE*dZ~T%QX2yEqnFx8FSUGfug|-%7waCHQ z9E!E0+W#g$HCyKSJV``V=v#5eA{SEku2dQH|GbW1cLjBb*=(rtPrae%cizUUJ;gcu7zSN z96q4S$PNitmCcpVmhA7=9vw^Yas0PIZyH`hFvWfd!#YY!Zu5h^4?4x(m0SX{->^g! z={Ab1H5fI^1m>`46-!zn7>Mqr8Be)hdXF$$)}7-18n!U!s$O$K%TfxO%$W*$-e2jj zzHFKiAAp=yGhU!j0FVurm@SDEn(Al_S|4JFRqm7KBasl1Wz%vADYS&`PB0HV*a-2e zC6T2r{qpB0M*dCgZZ~HPB!tw0Wbu9j=5(5dy=r{o$ulw+l~m)4VKyZ#$SJ&uDkUdh zYmzalG&wyXIWH>1x0?{gN!W5jL7j?<My(J-P%OB)cIRGw@b>qiSL2$ z11mI^Vw2_|E~%t``V*1oR2`xbhR~$v6tej%&ABLPR?kA<`|?oa)U2RIr|q0H>KDE8X&#%O16Y zD3j%5l!}fiZ;V@KV}nj|+I!B*NnEzEeK|>+H0%vcg(6>OBDo_M44C#`qVTbtq>ocZ z?qdiM zRAhH=;3=4hEVJ3%#FRW|<=lfDT$$jJ$NyogPnAN%7s%N+t()5l?%=Kp5JyfrlfHh4 zY5XP1W;}NBtq(R$k6*-Vzfr|23;=4D;j*B+#npgxk*g_66)8)JSTHGh$`tYRsYb$1 zkOj{^#O!{oB=(!HBsNH1+y{ZNK_KDI8iAx~&U@mce-$J$q7Inht2RD$hw8QxnM!EJ zu3kq;WwvcoFuSoggBA%#dc8wx(waA--<8NJbKkM<)U^qc2{l*%p(I?1{%txbgXuaK`YIwK5z9H(5Ff62|w z3$UbAMSn?N8~ASNua782qVVv&iiB=ZafaX>!i&@lfvHCRINPGvS)Kau8+10BFmgNR z$=!8eJQ32|D}r0mN}K`jMd6tp*7Xp@LGX?{u^eM|V`mATQKdw}X`h1--~wp5>SHX0 zW9;Fh17;_FV8}I)YP|7jAAIJQ&2QLG}FVSJvzKISbeTJCTbuvy1K6 zPFrxbUhaNR@}TCQt^e@etxcA3-1yud*qd8)Stt61pU!~THg(I2VIA*T^AgaOQj}HJ z<%G6YTJZt)2mJm+%uw4@&DjqFbK0Z3qB38#M03T|&gq01ljv$wfL15qmBdz$k*q2z zIhCuO6X|$z^69f@y_I%WtLgNUh5kxAEzwl{cF2fIJ42$Uwv3i~+)_Ke)`gY`^sCMY zbQfFRGoMj$=L2K0H%6QH$B}o#4P(q7HF|tN%y<|L-U%}%QhYrIymz@a#fSGqes|Nq zW>om&R3+KA7Rk^GQ2i0zk&)W*K^;+1*^d>AJ;3cYF77%y+Im1H%FY<;4RO;EU?24` z#_K&C$#@Mpm@(QpW?uVpMK)ucBOneri{ZSDfceNLGF}ggVjdQ|JR}GpE&w1pI(bMk z&CZzQ^*G}Qh%J%Gz0t)HV7($>P)u<&p^J+x=#LtXh&*_-V1l?v(}D4&b>wI_cQd^F z!4PHoAVtQ0{Z6ZT#^sIbWiPBhW}Q-93qu3nvvf@2@U<fL|3GS&cS5-RqkbBdWi> zWgYI1w$qO5H&XxpU$O}IL#%kJkz3O#pLquX0+9%nk-KUT~^*&cNy+GA4Gf;?WA4 zKL}~V^7S!E(rA4uKccM!;B7HK$Q`Wg`b3mbvttidt4Hv24J+&B4jPdu6?v?&dR0ePVenB(-j0a_}Nq~Yv!>b zLdl#8r@5p$JQN8FOMggm>lQS05&YX zmV8oaA=Pop7A!kfd^VyonRCq&T}gIKOFl|Ou`p;O3N_BtJww7qv`9zT^(KG5`Lv)5 z$}_{+zF~%l(w5_-Fwwat4W_Fe~JJMm>ic>jb z{(Jy8u6o8(R%T*p_VW6^?N&&4DWFYXILuz(i08hB3800S-Oe*6bq<6^TEtuL;6}4s z;~URiXF`4g319HRx&lm(=a?t%*HYw6&sn98R=O)2Q|utO5yn1FBcn>+N(w%=qPXRe zY}EQ|jxItLB|Bu(id1FV>BNIJ=5UQF<+{Dmd);A<0X^!-^U_O3bEZ^BxNc+6e{Kqs z_EqOmX;`6@Y05L@9Mm@s+N1Bj!b#G8E;o(1cO;Jbea#B%?;JI#*K4n>V(~avPiy`u9gGL*R;t3bIQXgmZaq4AIsr2;9L}1+>5oy$`*+Qg-#* z=Om*l5)0ly(=f2&(ebnGEZ@+Zo5uO=JG1qtb%!9;JS~C@5cTR$nAzKs+45K0^`e`X zTBoP2&2SD|ADPcT7B@y#m3A3d8Z>uzY}vAe8@|2{0za6ql_@W2rP`)u1xGzua^^l- zED23??Onl0RisR2kT(#I%eF(-YFa^0f~#9HX*L~8$HdwJGNzda?mee`vkjBkuB4aS zv1f%SMw-c-7a;WkkG9HewT!Nv{UQf?&bYM2nn_M|V(rmT0ZGWi$7Il|;-S200HJ;4 z;W%4awD-YyA~%z6Ii|;5P&jMnbm3Ho%Fq{A&=?f2k2msm@-)jr~#O!Q*3mJu=sF~GXgmPFDXt{p8cn{_XVHC!d`@ z{nY&Yx05F)Pfwox8##IO(Y9Qb(p3K2$%DVOI=J7+MTeUZaYCfe2D2cc@&UnHK z#m>liNs~DnJsF?0H7f4Z8TomKcwO2V0hA#(VX?nTX03`Shh=k?dKr6r>| zxo%`{?*nK5-KovSXJqkYhnA)Pd3rK_I)1vdre(<(P0_q2uqf(}6~p|^v`EQu@}IHf8B4{cQAU^7(Z1 z?Dx+;8BKow`*d{j`%l@FK4s5NPe0wcW6OIXQ+2lE^F0`LePsKvV|KP5>HnOLKOdir zPIhw2Z3$U;k>!+UXXGbZ%oS(z|D2iM&`s-5;2+hEWmYA3oc(9QRU#T~rN&2f+nfqH zo=VQroEHBnSvse>@rr3MmB9;K3YF2tcuv!w=A12By7XU~&z4ezU*Xw*Y9WkIHKQac0*HxCG4=gy9?UC~= z6ZeF1D>9?NZ^V&*;Jz;X3;#5-xgrO5pBtoJX6*0?0t`q^hRXt*!+(iq^x8GoR6X)2GH1hWu)k6cx=EOLWe5F zE-fhY_8AO&B&H)JayF6z9OE0!f)B2=PUM>=Dt2C$=Q09bEh{p|DKpPZbWnKs9q=CJr9SYT^trj-`pLFyK1$19u2>5l33 zbC?1`$(+#?V&Gh@4yW#|bqYJKjUB27YDSM?*=@x>CXgymgzhk4BNyq8xevE*T52BQ zvIL#{vyl8JQD~Z7i}bwG0up68108fYRDdi?wzCJHFzsv(QnrfVV8X2Dgpi!Rt8aX= z<1CoZufIJbyPuxy`a3UKE(~ejHMgu!mIQ1-bYSEM!wV!jBkWz7QC^rar(DSjIO9o` z&X^vnk|jUba3{&ktCCGSJw-KDcj{PH#VFv1j(z5ZQJGGTcS@07_)mQapF&I}B;?xg7w1m9VrF3vrs3OK<>Jt#byR^e4fIM%ORCvyIc!wk|MgzTyG+njp}kyW83S{< z`^fR0`@l|p^TysXYmB_&8S7=^E2|Pd17Q9QE7kksku3&JgX$TolB6JWjzvoBOKXK9r&c|_QFHYU4D3wgIYj>jd);>QiCbw@&gPOgx^$bUy2 z@9gdE?A0FzS0L|&SU23=+3^XFfg8GA=Ye*D`U@n5XJanh3$`&PJ(jE#%7|t7lKbI> z4=+}jmz#{&*Z9N&(sX7ctJ6Ba4A^x*$gU+?*z7aA$JLzLzYIfw4ohd`YWhm(YcxLW z;ECZPL$jriK?=E~Rz_^kh9=c9M>#DjfU%N;q~R(Yy~F`|5b4N>fMs}alVo;m;k9FgNR80GI1)$rn6hGj?fC zTWbAI?ID}cl7gV(T}@IcZ26oKIe+m2r`(7%*XYcL&nzXc3PT}nZVs~!$fn}P@P$9@ z4#)M$X}N>@=DGXr847Y~c+0w>@?NlJi#a%@NY&0B`3?h2sBG*2?!18{oX9(d-$Ms8Q%FoL(TOw2MjEq`13DL3C@c2c| zRht9sTq!;)2qo8&3qZV#D&_p>!AQoZL@~XyN6OVEXFEHoxGxMhaY5C5BB)H&)z&9c zNMDjlW+<#5n?Kz_@!9zEPe7#`b6BkR4XNV7(hXKDzLFwG8fu{hG7hw9+3_(uvTaX> zyRzPw?K^YB-h@8GmN6aoHnLSx-{?^o}jh zkP5!NV@tr0Ymt)kT9h()AkyH5MPqqefVuaUDR?0 zZG4)xeE0HQX;_VrNI4k^ec7=TkCFAI$cd=5av>j<8zToV1WmuB87&e>g9&dR0*5E0 zE9JvA0tiwO`S-0PeRW;GjKL#;zy=QeF6#hPnZklV3r4tZa+B?xMx~e>%_^RaP1xNn_t7-+h88og06_lx^Aj(#U55<0L8|cfv(wK{ z$*ph^MYcq%A%*WO>3Z%?!G>m_Pt+%CSkcfOU^fxN>`b9%E=`dsrKQ<>S|q|nw)5G>6P7_%?cTKupr*yEC$DmU7o%(5_BOGoQhyV20h&y+m_})ree8 zVfl^-byHxUljmDv`8g zw|yN^if$kku|=8kZnD+YIM!}|EXW6LBH^lk^}rrQQ)BkYmp zUVythdqD|;Qlu!y&xO+G8K;W*8aj@C)q?lFLQW}Y9555SJR`fO<0s>%<7bX#H7#Mz zYob3QyZI8nXOO^1jm1ndrCK#Md*C1%1n__UG^fHkVM31q>k zjiNWZ$u{s@1AOC#u?<4iBonjaCnrx%j!&K)pFBC{x#4>tB1Mg~80k41xo^^vk9ZNf zx|yCH@7ewt=E^ir%%?|UI--Sp6*{rnvoli6c<~ONS;jP3Avdkm#*(?NmO-2BNFOfE6Kvg4nQXSApBjm32XO z2iMr?pdrCmfYNrrzq80Y!McGpE?WSWo~vvmSqgaqS6krzs}vj6ov``?Sx=mqx8Jva zdTlDZdlc|kmP)kt&XSAZw`;!A)g2^swdg+z)0;HcailXZ#QN3VbBt!&lJ7Jb-917w zo^$Oq-KB-*BX`Gi*!>;MSt&9xTaug7$hG9T zD3q3FylP7&vpK!Y|3=z^9w`8A&I9hGn zt;oYZ0>!#2xb~cC-8-u^p#{0Ir=x$_9PdpASJkvLXSRePFqnjv_g&&ZDzU7Gor(R?DZ-~ayD@i!xAdS>QQX?TOmncegw zGP0EbR zJI+=CnbjTHQXPM^^3%x}{yQ^Lhig|^$E;B$GuQ6)$!E~=^bEun$Im&+)||A_J)7(} zy6u;@7H~ zl;>)guv^#U8M#VEW-|t#tIbm7B57x8tt)ZB>(%*hP{4mFQs&vDH;ks=ORm}L0^~)- ze`4l{`7QxiXwMGA661nm`!~@< zE)jWIfpyUG<;QM9R#nmgukN(Hp8d8rnhZGHtU31Bms(ZdO>yCgb2{j)!Zc?nfY!-(Lb_-3svRh1Hf<*E4|l*Uk9~$eclPk#YpT?} zkSRnIiegsU-{#w^-ey6;CD0|B_hBE55&T(`64x2t+KI4(+ptL(aNn?{?d8bsGS{o% zNzl7V@U;EvfuS&vJ8!TRsn1J%vfr;mZ_c19~R(!z>38WnEADU zx+T`Ee$e2vC$#v9@+1>g3VKIS>hR+4EOA_*8u3C4BdMqn06spnz4le$WL1pSeAjUF zHbH1$K-^cBDnPE8*Xwm@J?0>=Ra2<)sGp_?VtWu&dcpHnsGiIC+n zD;7q2sj`-dFt2{;a~YCCm~T`$<~fqgn$jE_JtDhyK5T#Shco%vo8$WTjz5!GvEWjm zAi1ED8*&>mloJLhLPXKROYZF%K$!L0u<#xOkf@`0RfgeTsX4p=de;EMwK3&u6Q=`^!UGet}|6lcF)MJtz~4t zZa;qJ`+wHa_uV7gqo-q=vF#@3xSajuu5l7!x?dZIB()Vu>|Y}y~%k(qD6 zoE!9i`{wnF%eUumUTxzr>VbTJ`Q_WIi_2HHSGWKD_V)ERm#^M_b@k%%j2thhG!*OD z5|iU~kJaWX9cyvNilBR!Uthg`bw)f^*gbrqbHvkbJu=4>XbRrfo?wsBkzE^@t)~(mz84OkrmWj$@XUEy|&1ZHO&NjZ= zN*@~)6GKW#)3jCS#vFa%z83fv_bZkBcaCjF4VDJYMzrL|i_`Jx?~nIbu~<-v9NuVg zI!dfR=Nnd}Rtl&YWg}M*sw_U%m`TWZJa&IN;r$PHZ25(|X?>f(ZJ@qK$RALQk?=Lt zp8fav%NJkle0WEL+eQ(wM&fNG(09$Gk~T>t#9_F6@it$rwfnn81#(@Z!;X`3YUK>1 zZ50x9ZUpv}IwDLbW3&UUAi%og2s-Z;iW?-0IGMxwF4(;rt&N2q(7zpPFRn8O+bOU! zqR8$){;>-=RhIik^kY87ALjYVmV~KMbqOw_5V#P95*Tu?t2yU1pXY??F`5e{$g3p z_k|Oe=J;ZTmP=>nbRaN+tU+3=8(|hktb3t0sygCotYo$GIeE~;J{kdk^7MGmcZn5? z6*6uY@VTRrYiqbd9pjggT!AbVn(3Wo)sU1{3N+s7GP|!7A+W$k1=H4`YaSLxehZ=^ z)W|l3bIg5m^jXa%goPW)vnMCDQN2#_ zvF9~FswIr6VMr&0Rw)OI08x6Srz@b54kZ4yMQK4MHBwqgHsVEwiHi4{vmVU2)84JmXQH?teJc5a$rbS9MDg+6 z=gP%uQp5HNWu{5lH*BhsmB? zmKfCCp;YeV;8OA;;U(<$l&$$!xE`3^B$B1-F+S2wm}~;sF2dAkV(Cj*Y+{YRKnrWx z8lAN4!MxD68qCS&?bQnHv=iECKeQ(KY9oI&xF@S~_jTLcsc=RjC!=YYayHJy{OTY3 zTqy1G4ete8`nXc^Sk0+q>9K!=`e~%SJ(Cb_zv%t9VFPyUzzti_b&3@W+=39v=_SP% ze9Dq#k}>jUA@0Wq4bTW zwI>sM$CA3&P8;i-Bd)2kshhKEW~7p(sK`BqkPxL&`vX-uGp@iFddD^l5G3U@$&>kL zQcWfqL#L*a7A&*R-HareNbc$s5 zXhAcclAm~q>DiAEs+qLV4>GJ8WkJ)a_R>Jk6OoBxOkVIibcMAs5^XtGAkfjyz;RAx zQYn!sC5qAC&HqxWDISo=Hcf{*J{>_H(0aJ8|HBA`X}Vf zM>JZuqef)PUK7wx@YDI41-BqchxJPcBWKZRBW!6Kxm{Uj=ygsF)&pSezE8Y!b{u*> zhe*+{to?QAT_BqP1v2==u54*Z1$yQ);eKVJZ)>sQm!#N80~EKwpmRy_3qVN zk8@RYP7VH%z43<4U|IvkAU@5QW*6ZKp+8CMJh$Tw&6os5_`#~P?BT=k$N>gVHT$O2A(Owq`!iJ64e=FJWFt?AYN==9`dzongFma=u&WGzAX`g79*>#t{H9$K0Z zIH)DfHv(~>o_0LPZ8*~#n>d3;*GFt}q$1te2GVUkd?an_ftO@ym9U6jW>jq+EH;78 zwzjF)e$$5#!rQm(T`Awb-O#A&L>!R3BvW>y{_&5i5*J=>1HDw>rO@6er|%5yx)$gs z`t0eG4GlXG-VG|pQVq@RV*>}jwHwsmSQ8QpmH}CLvWks`Fg?7{kO}47QM6{8sgSF5 zf{>L2CaWD+A_vv^8UE!87>A8)Ai>(Jn$i4>D9PTMzbwfCrCg#*n92rSb*_UBOdFjg z?tQxy4Y9q2<%TEeZ$`-P`eBacrT#5i*5!t0rH94#Mtflkb9O4eko=oVr_kHY1m3p@f{h<*Da7 z2`07*9^yA&QeKePayG8H!nf%Gcc8e{g+(+4=%`fBV#luYm|)pZJdV zNCLjy3Lfm+1=tUk>ndDI$E@w|H<83T4#AajWjO5%Gwnej_ZlM}uCdQ3;g`6qb*3Ap zDD_Dex>pn3T!jP+%B$D6muKV_W!D-Q$k4DZAlRa+y-q|z*5`iB@DYlfYbzgosWjrU zg>nSl@IEqyb&0X&mU_i&U4h#n?mQ7W8~J86IW}@llaT%UoAdAA{@YvHy$mKwqU_p{%hN)OAn{OCtWGSmJep>3&DdX=h5^~m(lR`f{wv>L>ii?y?1 z>1*WXu-{p1k}Vy{&tSOhLNOQq)!Oj=%wV<8G2=F-NGhIT?K;7CFMWo$UQFIf_j2n+ zeM<;kZoLqvI-F9LwyKE2fbht_oB{<|F^`3Och=Nv!Y{|cwat~Z@3^j;Z}<}XDNdUj z_Wu~Cc#1}$UZFvsksvqTeh}b<|AKuxKt4`w~D#l*#iqz z*X{&`RaQxV0mc!oM0c`k*48iHv#L;*mv;_K7=qL?$O^x@s*DKGCFR3jM)m{>V4AK* zZQBqXP;5wzqV#Rd?_qFdlH+BlLyqj&x2@`^(I>Pr)Oc$wNRyNZ_9^eynvq;}$4z21 z@{=sTCXH`!s+@F4OjKO|#&cI`I`iS=GUq{El*FJ{21i^K%twq#`B;H(5gjo7jSj2` zT?iQsYN@9B(lN)XI{s_o&4AytAKh^hD6E1Z4zACyXnHO)1297*B07*oMsTec(3r^x zmnv66ezLA$2_hCq40J*}0$LFqlX z!>*vm$NPKtH}oKd3Rwh445P=#=g-C8aflutJu$KRgx<;fy=CeQmhm67gR%5I0Jf5K z)MX!~{9FvN`0YIMX^_QCmQH?sf6Rv}VnlyQc1%0!k+^Ht*AnO)d-BV+YOv^VBUw2y z6z7Z#;&UO**q9_=i^Fr84*Zz>VWfBXDBU21ppk!Job#5@ z;oi>iyjGc^V{eV2aTI}23Xx|x1mchv7Sak3Os_*f>2W%W5D}CQ?mpmzg83F-&5chX z*343QvaK(Y;GIiGEk|Zdiv{8gLs6p4XIiAq^RG7E8E641H=+GJ2f4Q*be2SAU%!@=<)?>llK=FiUzUS(SBlH-c9 z#nMsU1pLC7BW3VlLOjOE2Y%v06z+j9w#ebO*Df zZiBQ@14L?ijkY$o)Qd60=Zr-ftP*O(ZaU`?L$9qlL5Q*FoL!UT{067w>aOthlEmS8 z7>mZoBz*lJY?Y2*3+lpF!{GJkj-~_ghYZ@1+Z?Cw&K#Sgu-;c&Ep|5I^I7KtP)Gc; zJ--Dhz|}9vX16I%{N)v0rab*iS?`h%2flX64rmlXf+c?Sq|Grq)vrvWz`R)%EGX-Nb=#N_ueenTQG!$_H)6=FQANNc&c&06Ji zNCzmwH#jnma5@8nS_@euHyUF^ueQ}l^nFgq3np{^(014UaHwzyrAnj3*Z&RG4 z6ny6VNak@?zj27haWM4b0S>J!#59KJLp#R@D8XnK}=J;BjFrtFjfk*B}I4a zbgwxA1z3aS%E(Wz6`7aPqNr#Ln$Dr1f+;ybdet5{gY}oe{iuTHdJ3Xh1Jg{k?rCvu z#mj@Mj0VeWv1)=O1HrJL21B*r1hTRVU1jC2yaEZ!M|u{3-wSejOG<(3NUV(C?Y0O* z={SyMs4L002(qkU9q{K&DrOVPq+f{Gq{?7u=kQQQe*{zoOBF>~gG>`@eAF3zh=xgr-G>!Dx8to^!kw);zYs6vW-^-a^pRXNS4hx_}-h$x;c zBA{iqRXs59F=7$M35@mDnjmL14w)PRFlCW=Zp$`w1OwA)v$j@^1565vB6XZ-C98S0 zB%z)HgJ$CWDb($-jY35B8N?wY@F9q>A4hj6h;*z_we19v)OK3F*@Si=!>u)jga3&} z<6ww}WFSslC2vLK8l%mvHPdsnygpok&2fc&Iq70(Vj6dqneb1iH60P4W$H>FDf50r$J`%aIHlm`Qp|PYi+XC? z#}u8Mp7q}x9Ifimo+^IPklsp@IcQQMhHibrnRc5^vCcmB_pF8d6gbCyi{St*GZOr5 zrDi;~@RV-o2}@2HPoV*vAp(#J86qoKTV5R4Cr~1P zl<6o^vGG>VN`lA*fkZh)vgh%gKGU>5*9rt67LuL_8G$!D1P$Hr8902~F|cGE@oGn& zyj6#79#YXiQE4=i~;ZD*MWsN)hT$a37Wa4B$Thq+kLv+@U) zp8VV55l(kC?>`CSV0EVj_h1{tOu|7FTKQ^hgcQKEmLU-T*9dR)d(!Fqb4t-#z#FD6wx?Go5e7A4mGaX4Ra#I>G{C<4aWla%{_V z`|{0&j4v?eHh!{GsmykdeK|!XTyrdiVKkUD!k&Q5vKXv>=A@~^FEERhV&5FA)m!jd zRlHWi0*ENRmRxog4?yXr6>|-Ymt4YX_3EWMNd068QL*$S{>usw0RW6bqoC-xFjt*Q zgYqV&BO$G_Q*d}2r}zR?OMq04{D2N6hY!M3nM+8IR(187#6 z!Xj5sskF2Sdwb2LU8|M;GUo_uV_eHGm=T$TVbIo@b6^&LM=HNvvl~WVKWrhyyj?+RH-K&YUi^N1cv@n6F<4l=}nKufaA_=^kr}v!Rcc zbx>+a-RvYb6hz zkM{OY4vyZQ@0`3n-A3JROuNjF!%O;kwcAzKquoI=UhQ^oNgUGKuGn_3*EfDz`~2$V zPbE0--tX;i>tz2rsT(?Yd-VQf|6E{ldJa6`X)fE@(Tw)6AZB1&5%Dc~8dJ3dmY|9BMkPa|Xk)pzUFD9vQtZZwF^3ka~sPIA> z+$o>MIw(1>BZnW7rkK?*tobQHGv7{K?oD&Z+6JCZ=+pC^!^7wDy1k9hl#YvgLMeY^ zECVtR;!<}Zm9m}KJE7rDDJy5)DE&eiM=Gbj%938puwPv{NeLCBC*ysI=G6-;!6;aM zSlPkrkGbq*E4x-Za53SlX)1XENmOa77TR+`4xYED3%-PxcOa!?8K~mW>a792jec7D zY27*jkMl2qRgnCTpNLh&X+R@%MQ~)&L%4D2+8L>C2>%7<(id=YOO`AGuJ9CfnBpd zt-D{#fKUflvOi*Yb%X{IYg;Il=2l1`I#&whTxD{9vgaV&(=^2akFq#4O2qf0=+Y0a zP4?(4RG{MUvQ@4oXbBy}DDauG89xX4O(iufqmoP8QefwG<5^>;`P39SBfS!FPC25+ zuwGKZqqhmg8bNi~boLboAi&x5FlK}>71wp%8 z7}jMx=vg7l3>A}k5eg(QThNkLsO0y6$*D?Rt#{2+`(_KlmWEg-riS}d!4NP;2C+J_ zTJXhI{@s{{xNFW9$OzDp2`zMAt<=_MG{Vx*b^5kVuAO`o1;L#0t{;b8ZW=MEfU{R} z;AKlYS63t!yhs@pw5$RxOa58Q4J$LDD8Y9V8g|9_^p|{v0HE#1oOJaYjkx}8jiJh< z>qihpjAJ-!!f}MtRhd}D6MOvHYboMzpItK(+Y+Z;C9Y)w5xb*t#7Pq2u4yStvb>Zv zuNZZ8u4aY3PNzg9fH#_7pSC2D^e5l9OLn~)+E*Z^0xufw(N(fB#nDN(e>Q{J8^XC9^1R5`5Ah8QVqA?UYB1K&fx zf(~8AAyE0ofuITEmBlGi=bMC1pk2wi4eZ!PGJ>An z1!-&S$9KpWlrAly9>)cmlFysPLXOH!FBi|dXj zS~DW|i#=nFP28fNe3KK#eOaMt6#>wk~nx$f=7XwHgC$_O8NQ zbu<@Ug8^Y^L>Q#pp{ZUh_m66&sO4}>L!|`q!D&r$v34h)TNhp(lYj%NjAVXda1jbp z!f{G`dACMmty_Ub2H~G5Re@Vp!QUvwzPcG3WbtH{me9{*4v|WQ$jesIEtcs@tb&?} zf)%T8$Yg)i;7OFSAzhU{gUpU%uiWCC%ad%lG)Zb^ik@^3SrKO!o|U7ey%pd#4|0H; zNe2edtaL~%t)el)uj*Mfsu~#k!z|FaikeCxYefpNp2A$&eG~lMs?bIEplgx2f=x_* zbP%tq%c^bkNrU_C(Gb9D{FL~=RQC^-8(WKT?yZ%NE(n`j{aA(YMXp_}HF+Ac=IwkP zugzLPidN-9dqQALef172$x6tm&b3~py}(kN4qZkxxZXQDJ;89(BgkI9Z+l0la5$-t zS~m&xvU`1m{^+{=&d~CCRdB+x0>DC zF_M;$PjCG+gmC&kC!mVF6HJ!1Uv9w@6QjL{6u@@g zD?1jtXKC%_Q6m`On{^$m?wZ8mHqwm4sg9Tj)E9FCQqMW&bvD7S}tLMN=7LP9P96$B_YV*lpoPU>|f(hXZHjX z0vYKM=?uc=!nP0vQiXFH;^3OW4X_-NC2a$t(;VZ^31wN#L38O~2hcMY1wC}YZGF$> zoxb_+b(T6pJcLklS^Qv5bASZ*Nyn;DWlb=WffX&A62TUjyCVEK@ncv6o%XR@8Rp|e z$85C(A^m1agYO#ffd7t?$;b_k?pDRHLAo}=z!pF{`{lDubIn<_AH>zp5`YyPkh+u8 z+DaT;1C^3V6e?DM7CCwy=Xb?4|FC%eTu(s}EHk61bmM0IYdr_+AH6@@Kkf0)e3CZS z*4EaxUc7++*VfjG|G(UN`Ra%D7cXC}Z*Hxvt*!sCwz09czVQQE`*PjRo-yNo`or4H zZ52EBojmJ3^cHhzt@YfB=?!Pc2ZmGh`1l-Rf0}Tgf|e*-$L)?_Rm2(!c!UO+YdY5L zX7ZAqF~*UwijGaffrt3qgL-{L8yhq0CxgXaX|Qx#M-J3L>4*tuFD7Z(>DR1qsw zEV>;g*5o!?v);Uwd7ad&tL%5j%ADE({>fvQ2fn=4>>}@Z;3wxX=I0PNSk1`m|ACX| zx`fPXdr9Jc#@E3V|NZZ}2pgKh={WAGpQWYN|62$v7 z)6ywT#I1kFP>}j;*n?ib0d>ik>zF}$$*fu?vFO9e;W7jJR5iZ$_g$3w@c>su_Lp;x zbTDJFn9Vy;R|fd+z@IYizxXD|3%B;jhZ8V%z9EcoiqnaUC z+UkNK?}&!@n5Nt-Z7hfmq0tkpRLarO`@Q}1iK@AklKD` zhEY!mOm}Wx4yhmh>_>ha;IwvbWQ^?tjz<0+;*c^KUEy0aBJr48&KNd8ba1Q{6gNJJ z1V!p~wCtlJAAxnSTtm=NA;((F?RoChx(Oy9*4q}d`aCzQr~4-#4|W|BJ5Bq|jpt_m z`MsX-$Qnt#!^PZ_%@s{S zL-S0J6xx)@JWB*v{@K~=p+h<#adv%V*f`)T7{>`(SIU3zSxKexpn@0dbQB2|Qob&b z;FJ-@aU5WqL0FpiqaY##o#}0a{%$Sur3G#D^z0yHH_7y>q3c-v#$&!0M_dPfRTqMk?Ns{CYU_O&M z9kySi9vG>b_bH_uUMtXDNxlrdQ68s{j~$bh>;4}7o01rLt5ySQ*Vwth&_gHVbD!Y| zk5=V>AN@!)N#YQH)-7dSAu;jfX=TyB5Kk*Edm0USpMCJa;is@4Fg`n`S zJNa`|S7kgU@u0S*_{EbbEAlKuBICtNRf-VJh*g~@*3ez!yH)f|8kJ8lZuudT)#3Xm zfzLI*LywQYb!=h8F-dm4KhHQ<9^%!bu6KkTnnhLCYjo(df8sk`$CC;gZ$%cF%bfm8$mgog1B%7$#vE;|sJ&TU7431&yuxP0vt7DNzA8ct@+AG1G#Rup zo+0&mA%C6aQBJor>jKd8SZaYG@j0Zov5<+f2;8j4hAMUL-#`O&N#Z_^Zx9=T@jFLd zJif|kPd(~+)yibuMg_%;T1-j4%;-8KDe5M`w5vSIJ+M{IfiPsIj_ROi4oq51kHIht zF#60IXcq*QHSZpqXT_ps#9ezuW*c_wm2nz*E9z7Z#%YAQ?D`7*pAJIZuCf>DDz|C0 zwWdCd{Lk=GzsVi^Y8tYPzWIU9m$LKF%5vRbkhcSGAsv0B+=lx?iu6=##WTgOBWB47 zyHGisZ-bYr2k99tz$)FN@*|R8vsQHJ*5Iw|zm<*r3}viV@|D`Rju3R@=X#-GP1piYAU<~uuAI{!%fAXva znA^0^!sJ-&^6l5i^OPpW-c6zSvMf0>*S7X5vc`KWMG9j^1^+JKf^s6;>UJ58(`zW_ zB1ZM>Pd4&mr>ZJmHp23)9Fl^jSvoHjwd;OD>>%LQTmij6kB@!r2O+-N80hz6XtR3e zt$3*r=srHK>#lSkAN%@DvG8E?|wR7xclW{qaoZC|!Y9o~u{_IM= zCnwxzp_m2mDP;Wu0m+1alS4pI50yI9wzFFAWMRpbg{bylwlAGkBnOK_Fmy;S10DUF zrh|hpr=_f`ETfjY&geF^Dg+B|_OXk+jo6I~uc1%X;ZLPP;RZs`Ovuf1K>*{Oks~69FpGoh3EL-5#ZPefY zY;3HpuNUuswzd}be^2s&-tdNuwn43RMItPCiPs}BEWr?OYo@UOV`u+!qOXZy_1e{U1A- zQ-IC@H;$q^^!wP4WOi{sNdWI&=T|IYLwPP*0C5{#;=ms>41Q|1pP#hCBREni_P`fg zd-@ZGmX&*qve<*{>j@54dYywSluBy>3B*`N$Pg0nj__Q>NC?gb$SZ6s2R1YI=$6kh z{n3o4DpL8q&3GHVa2GuT+_zu1pU@0PGYS$&(V#-&nR_`Qa!E>JeucdMVBP;;+-$d(|H$i!>(y_w7Y< zug@^!GxQv$ylDWuE*GuTj)cHt=F!Ljsn`b6!%q6BWYkVY%mF(+Dycw-WeR-=9bnl% zWwDV|K(x^%cpphVr2cGCHd2n^E=6%H62Zy>_Gsm(heWrDD$vo0#wwUbHS+Si#C(XO zQI8EJnO6k$+;LHRpV-h+ntP=#X%n`VsQ}iw*tWkDddp=UD=J84tJ6QAR{&ybHURcTx(|^P)Tq zk;_s9d;sN$sBu%5hBfk)oJ8X?-ZYKHaql{jH%4_ehKG)7+VC*njV7Ccp#wZoi zB*&Bsu2|bEuuhC`GqY7uQC6$rqB2E_J{O*;cDG-n<%rVjae};?bq{$`UE(hhTYRpWWU_MS`9YHXq zNlHNKF}is;j?+s&s2NQ7oK?x4wam0w{ zvTTXZudjEBxxZe+(oZr>+8d^3hpG}4g9UolrV&$N3`jh%dcT5}86Mr>6ddJKjJ$um zM(e%x|Lm>_p}+HV;W{{7l$lgYvQTNR~MrNwc-W@+wU)o_tmJ1y)vi&v6ITllq2k)p9+ePciE}(kpgWvO1AVmyLFJi5 zKG8V^P$BeNKG09c+{mF?KPw%j=?cO`#*A=sgV8mY0K2PkhH< z+i$-{7oFVe?M_!&#C!tL_tIzBTScCce1EeFun|wHKdPt@qJSK_^J{!pSp)>^b0;Jr zEJ{=0%Eq8b6#9S;#D}OZHlTD6L8oL8v2(Q`%LO4Sd%J>>->M*vaY}-7Dt@&nPp`S( zqL}~3IK_V01_6~vFrcIMrDMz+3XAqd5wU&FNr+=k_}zJRg>ekGyyu!`h`K}nJjEel z?wM2h0APB>N;nq?x{K;alIL(vo{P=v4{(od)~v*eI=A>T^lvIxT}3Szj`Pci!je!I zajMA+^Z>5hu>HC@Lsvsco%Erwm(|o9#H7icuj{h$Jzup|Y-P&O%e}E+sOE!ln&Ozh z^Ao6VVN)uq&S4sJ63Y_<;sY1UDa4>B%6(9w20l-Tvf(v#%(w}5wAhF_Su8vOUdz1( zkM$gME18=3Zs%5;465y{95a=M;_|L4u9mF*~o#NAD2ljWzk6k#0^#gS@=w1!gt`$6*m}5_frYWE+YW$ zWxp$+8a+-W%&bH%2d~tX6EUva>&+Yp6KtEL5H(pY5ifqb@RTBb#>U#*ZL!wh*tVg8c@n1r?yp{Sr$D$ZZ{N` zb}#?MhW^IOt){{fH?MBOcR z2boa&oj3tmHW+f#Diwv1Kj73Q`a`b} zP(t@Y`)hZz0&^ih8m{r3We2TDP*uIj$WV3b6}!8tLM1t>$8&0uG-t#oCQVh~%H&Ct z2=vK=C^2m4sVu!IWa>m-7j(=fL`$7#xL!Sf|2tB^Q1>(HV;*Fsoxy56^qZS7lshti z>R^(Hw+eGpMhM3@HpPn#|F2x(GpYg5?C1s7*LznOk7;l*nXt=9X`C$MyBumd>$Xjj z$^nyBz~fSn>iQb03)0gxn_u+&Yl8reZ$!5(L+D)E#`(q3CGpw(w9Dv3m# zbYJWwa;yQplm{_Q@lGW6&fRfJRnCYK9tUra-k@`|k>Y$I;Ha{Zr>+YuaITON?PZ4Td=fzB~rd?D39sFa)P$LJOBzzsYgA zCdpaEKH`*I-IXyp{pZ2)`Pt#=`N#c}gE#-0dezsW5TqpGj<$DC4vx>JXtJ`wh}_^9 zGj^QPOEYM>m-Avxb&G@h9 zRSVq#`%y=)reHc})W1)~gIe$wjOc<9buGlFzkY(n`*T)GpB0f{Ef1!4O?(}j@47DqUA}zXB_Uzl$`c#Y;D7k{lz&iYv!h7zjAx4 z9ZNK|@xWBfkb$*eg%+$(c>z8pBV;Y>Z-@;NT+p;kP}ZZ?EKs4!x5EHgh&>JaQ`g}9 zm><*1%&bp_?>EZ$G_1FIFg`hUMqikHFD%VMWj5cIz9!>lmi2UOn?)5=yOlA{3dX8{ zUeWxZr#C~Rjj%E`wgh$u3(GmT=ltj;x-MV(D(u`DwkiW> zOTzch@g@G*53XvVhPK&GY?}p`GT#Y};)wtPcjY(EyMw1Vx z`zH;lPnxo^l#oB!|8IaRrZV4!qQ$DT)BGpCE0}6p#+u7^9uZfr7r|#fv<>8KaFx$B zzAL9#>5Umq|A}oT#LIHMcyk;2ESb!_lhsT$W4eX!amI9T3+JrmVxHE|Tn!g2h{Xwx zsP8xkV8NfbPN7P|EdYHuIdsEvGY!Y@jZSVt)(4mhAv56gOeG#I^}OBy9}-!;;3Ti>F&Jqxp2cFQ$J z>T)L3(HIB|HO)dz<5*N*$y=_%MD3&ht+>n8*wvWP`^I%n7N+yjJ6QlHFn`O}`F8YA zHfB#{{8rQAqpQJGzqF@b{qFvi&yyBG<|7MnkT#9U*SWD0>x4_k8E*==~We zC%(+AOr&LNYfssb&)cOiSm@>!y19jJZbIGMj%ZabiW^!UJ@n>Z@0;eJNevcjN)u;MO@WMcKkp6fGP@ zzaI_Pd|gE+S8+KA$Q%@04G?GYsGVHr)CO7;N(>?Zz4hdtp5G zS5{7afsh#0R$b+27!&Gx76C36nx2|9wFq!g8@FOUI-W%wj71!bx{WbUtxikOi%1zW z#7nb=VrJcr1J**bv(W4;G&@hA*|GNCT=Y6N>3 zTAPK|rnsJ-QfH%E{l+ym8qN9WYcw>Mwx(u`X4ce90Cyg$90UJp6gkz+%}_NWe)lmLmuX$eaUF{)97AuJjcYE7Z=Ae zs}x^@Q7w6HlHeWXzNE&bc3`JvV5ifzeDPUop=o)NS(;qSQai8<9m`)=$D$U-bQ%`J zz-RiEoYthbJM>fDJF+rH&#E11rxlq-8`7X^$W#m#QnG(LN%9e=Oh!s@Xh!Cu5t$Qu z6KhAZ*y(w-NMXbSIvV*IMD=sq6wRj^FO(LGM#YKE`2adLP~oSAfu9b{Ruz9&wQZN1 zzTwmleNIQApX7C0-A1Ws{QMV!16z+*F((3x0u4bDH{t3hI30 zr~Qar>hbk*d`@neCV~nuj^h9ulxzCcEBByTxX*lZU6b|%8+5=Y%a^<2we_iP4nrM9I)^9Jk(-Gif)apCxSYykAT7S+1@2wzDDhA~8LihLmAA=zdu0`!&oTh@lXEhKT(s2}`ON@qo z9AZILeWr8^=*NC(pe32_$^sKIYZju#(a!Jv(rH-cS0+Dr=8MXVt3S?XAv6mmdq4MO zl7ViwNObupT_Og_uf0HKL}bS0p~J=&R)>B)@)KAe^IRUKrtMWSN$EG{Y;&(GQw7ID z#(2urrJMfRi)%JK=5_EME9PK^V|Pm0TXp8nssFVBma9aEFA(Ti>myLLy0Iz>GkVGp zH}!a(?jD!8P$z1d*_?hk*x)oY*1PkalA106-)ly_)hv{w>bUzlPiL-)P;{CHp)a9H zn+UB6e>3!@%&4l7bI9cKj;lr>m%@0Z7;cH+6Ufj7BIc6J8|as#D<3V*%lx`B0isjr z4l25`KT7!B9!clhnL_IcP0K1Oi$W$eJfDzszNXyRj@q{_sJJ?^Ii%*AKBUXoHy z0~&3kv)$wBRtJSXO7crQ`Q|=Lg58j`Ldj zir^?LT}i`RIf0D(d<-*SKz)5f33n^?J^eN>;Qx9i6V>f~kMlP#0}4awxV1QYP#AHs~Z950N94hEw1TDJSk3rb3wd2JD$%LZq>4TLZOOd zKNfak5$(CH-dRzvSc+3DLUpGahd9M)HLLjc&H2gx(cb>a!O>f72;wm28FHR%_xsJO ztqbjTQ{8Zt89f+2$||KBO@p=O01|oj_a)T29_;QM9{#+u`_Bf0q!gA$LDx}P1^wjx$Ai;@_eTduZ>MX*5{cSeRaxijNB`T(ebb0= z8Bc9%49GsK@>>ARz^2MVtk%3JZv&6x8_{7!BbW1Eg-b96Qd^3TJm>bXuhd^Gg=MOiUa6)50k~CNUvJSK> zKd0Hv#wAJd75SW(^TeC1Jyqga;|+DYPP=YGyBXv4-FLmoisk9d`kvC9FCtesxCy~<(YsR9iJ#D`+Rrls-Iaq?O4PK-&LA9aL@8yny4U|PTcfyKkh);2Z15QD| zZ2#WwRN~nP*T1?VG2x(}(tmGvT8(leY)%sz(ZStmA{NXpjTujUqLf*cA7|+erx8ve z6OwAf{G0%))V)Ft$Ni0=GJ1tfAkx9*WRPN?V@bl)39|hf;olunvApx!EmZ(1S-Scu zyUP1=D15t}k)JplhPu@^hVoC{QTgkr?P*p7m)nbzScf%RhE>lAR4|{5W>VSuAsmma z!vubA=jgR#;rvuVz)L?Y=Amd8Rk}$mmn&Z_HdymawM4}M)pY`#qHo0m+HF?`6KOHD z)%9DNebujnXT^onx?^Qy%90^veycd^S11+=+p1Na@;&=xo3o1JDy;ji)OQF}x|Xdc zusJ0wP}cz3^vJepG$}do@6PZ1F2Tr4ZUV2c;%)m%Q-RA{pWVnOMqUWSk0X2fmz{{H z0fxG*HIys4ts&;2O<#vTtM2SG#&yDx`}_WnD5iWU1XyL+k)LqaXcX0%Rs$q{hetHM zD=L(*x?$2|Ho_qpkG7F4U80e7kQw;{ACeKV*R_77j1+2_U282HtkAuKiL2YDbtVk8 z<_pDvXflqNxVO2jdOz`@(PRbDWC78-e|C1oFVx4$j3}B7D5mDeG=q}0KFN{LXcEzE z4l%*3Sdr4d($cF9yW+N~Xx%^Kulkkx)({N1$}ppK|EzduPtn6x79M&iGQOe2Z0D>C zYDIw(6!EB|^c@XVA?wA{u;A)o?j5mb6dsEeJ77Y z@J=uNKxqS|M}uuu1Ru@)ces-OAh)($BPTS%C*ugS6$gYd!~5nmFvUTjy(V$EjjXpF zKOxG^c^g4(f6Rw8C4Ydbws-v#>k-<&S?`Q6_XYDSh$lqrvRs8r+`TN|<=BH46(q|y z8S@pPvR-6OIQWeh4tm>O;K(+cj&A6PE9MaLn&+gIT++nTH_OqfXluLUx)N@I{+Go~ zoMwJP-llY%ux<3o^L|51$ny}1LlOvThxibqfTkGj93P;8C|J1kL7%)ptDu>;s$F%M z_Zt+v!RaLw8elHILW~aaM?@HhGWV9nb@{fbdit`{vf_Ti25s{Oaz@an-wKg41kafFVRlLG!+;xecIP7w7;A%IVt_OtN~gJfKBq>*2c@C{I~UTZ9)H^;`vf0 zCes_307h3NQXxIw5XJApdr$^J2nW%KeRkZecQnNW1CsJ_;Z16U;&mpbn)$=!+d5w4 zXxum23Fm_(sEI5_+OcC2WCfMUvn`2~kX%-?+k1<(HE}P4hE~u6y4-q!C_*%j?$9kw zA&kNu9iuDpH+%($Gx#rgjfkK>%4NHbSqiQzn%jg{V?PEqTy44IH|(4*lT0SSMv7+^*mG+wP~ za`XI8yZ_tY{xt9Zt+mqq&-$yEi~au;PeG0^^5~OoYzf1E`0ZiM6Z+W*G$ z|Ha13^&mgYd=u>OSz2l1pd|^o%?bEP!up0C z*fUG)yO1p$(uFMTpzxK|tBqyndA*$AU_0+?mzz+3%qa`}h{OYHLNnL*BqD*YozC>n z{GG0P>CmO5SO!`7g)mOjJIjN?)GZf~Rhi|sj?l>G!SJy8l10}#bWGh=#b9UD?UbiJ z#{(6Hk*QzK0p}@r0@f*#H2qXPuvWEr@;63PbjNaPaQWZS@G!R^+qp-Sm>I{?13UO3 z4zAgFq*O!hEmxF-WhNaq9u?cG@q8{c=axis&FhFYy)!lby`O!C!D+y2kYv4;dOUOE zVqxXfGM^L@_#}q8YEL@R@INhLga2(Fc;#`9y zlIQ;3<@@zs8X{)ufRb01QV%XR=Xd^0xc`UP487ANvCwb}v;d`4b#r zpW&W9YAY*}m~lT=oi^39vQm;cPKEgH@Ci{|*hp z1d}}?@rg@4ZLd1=J0j|+o}$*Gx|OFZ;%2vs&T`q#D{ z6R56M9aH=l<}fGZ|MH1Hy6wyX>iNI*_06@7lKtPS^#%X;6pwU*(L1LypG<@E-CS?* z3)yA9i1eNB=w#RXuDbKN?9W4f!mIy6!?lJ0`Lb=y0^BvGF%l?3ny<+~F)vYr0YUQ& ze#7SY_FZ(CE+^_H8m%9|LX_o~<9F8NL=C5sYuce1`uR1SJb1S9z z5mr;BZ}Vs`7^j5a?b4Xz&-obV_J^s%dbYq}NEzRWh|jP!oz}}Q*>;i=3f+u+#`42m z`qU5=yRj|!)l0@vR7wE^pN_LH`7W#LL3~@}|ct99W?`*$=K}0Y8NRNT~p2cgg8zTd*Yjvn3nz(ARp^tKP;I-T*8J2Zf;WP#b zWrRziwmNg3EX@4@dVKsZNzIxHOANh2w~F%MQzBl%C2!ectIX|AIO%tEQ;FC zUqDAAzu2;Rna=`wUy7F60+LwU`R!ZN;o{yw#k|Yq-BL%*Ar)cK+DCV=DlM}ck~>MW z!qAaP8C9j3lFyLyfJ~~0e(`NP6y2S*axUiw@0YW)R2RH&8n<#w7~AhN{L_GG*-U& zJ|888A(10jP!aJ_a>d$rzLa52KBYWsv-Pt9iDL3J)xAOrwOSNr;0o;&YqEl!Xw7Q1 zK2Y`y7!=Z?$vTDPXjAvzN|&aWRjY-Qi!uHe*4WPXnN9!O&K#iW{{Q7>(f|9!)*}A* z(>(X(_%CiHaBEfJH+1noXHD{Sb^tEn_0MJ&;Jm<}ewL~(@T=Ee>+Ad)5R+W)SA+SJ zT=h@ZLG%wSjoBaP@zAF0vzgk~k-2XqxGb8_}7J$^Z_98MO{2(5rm>J(8n`Ka?#a7DVx=Y^S z$ObeIX0J;m9@8*=rOU^Fjs#n?jpQA3z9pnuLOd0MdVsD{IzkG%VW$!ro<7B`bOvd% zd)f*~e#y4zNnTcvMy>6)){s>N1CBo#pvs& zz-6nY*sJID^9#rzTAcJ2%}?xkvHqg0oop8cpmye~z&gC4>r`nu0s+p2YMJPPVYz!Y z>o{(4i+*2-Q#4;nw*PGqGW=9@4Cl!hr+)z9KpwwEBDSwb8(So73Heb(Z&4UC;PRuf zVR$R4+sjQS#rm*!+_tDDZcB*!(X|X$ZcR#U>lSUDhMICZA6mK~n%}r=FdP5h&I`DK z|KAWielVI%eQ?=(w%JDA+3oqO7vJVN zw0OSGGney!q%4@G)BkO*Zx;Q(U#)K~^nXwCOlhE26o}Od5CU;PQ%qSeprd~A_*a1D z#05-(x?u?&r{__0x29%QG~0mVFrg&YVLqlb)tn4z z5_6p1_~tm(zw;-l2{O+Df`9G<Jss=knfkDkkOOwg#mCANu^I+Z1zo9OHN4Yt0-6AICzLtD zH34T8727m+?DOH-UDCc0UBL-lu&Em5S{~NaP$U=>2$pX`PFqpL9UNJ0M+Su=FbJ-~ zx`VC?@Xb_$OF2=6xyoB#i(db(^GH{#ux^iff1e}ovLNPIsvv|z$~Z$=#e(Z!u9UG36hCe6*s^cXkn<$F!xDQkcco?eY;VqzON;CN zX{}tW<3 zt^OCae)|R(|8G2hSIKCtb`D8qj*SXdx=kK2g~gE93>bL(72u|}6>J-LYa&c-Yrgv| zHD)b<%ZLWodq<}y#^NvQ^>jvmh4C(du|y;%Mo=6*AWr`umSN*qcFx+IW;JXBzbaW` zqrx7c&H<-p@zoiHPiVH-ID=rWx&N8tH1;ivi=vVEbf$)lSCv6Tz{<7|j-zRoJ|__g z2;7MQePiVq1TCyFTg;}Dvz&G`T9R9rWn@Ytyp2-qhYibY!F+zHXF~ojpYI*nd9BQy||74fo9a{tWY5{m&m_zW_b=t`hzi%F4Q+^iTUtPXBe_srEX6 zCj0-FFN^knFV{9+Ea?AJJP!N+^wJM{2}|~MqORVqpZJ#~BAj5>+c`c^be;8n@fq^u zLg?SDLv(`vvEU-*5|NCpS4z*7uaO-L`FhhH3$sx9l61~+5YSO#Le=*CC>i>NfGQwu z;P5!5S0uvHY6m?JX>g5GorQHZ9mkxEu>SqLJ$O~a0>6!l;Geq$cs-LJ7~V;eoph9m z5`L2S;&;}vn2T2Za(1K@JaL*qTs8>e<-zf8{>AaZo;6J4c!zypSe@tTSRDP&PsH1u`0hCz_=hAO zf3E&MPLc?ZaLoPaZA!-p%N2b$W*mykF2Fsi;T4w98=78{5cy$9;sN4Aj3AudKmh8Q z@g9+Q8?ARTx%Bfk+IsnN^JNF2D+aATZKFbVeIG}6CzSFxB*N^DaXiw)`W-Mclb-)K z!QAt|ZLDn+^M7uvZLBTM|EG8y=l@K}I`Qw-iNU<&Ch%6OTm+9@6zzKz4f8|9Q~&rT zIGp3Pf(_rkVwm-gp`ocO68jPP1E;#B?8TIq8GaC8#@^8om+YRLea(tzN_3D=>kOU> z(PITmfLW$|W}K!F?%dKo+l?~vM;&8${+I~ zO;zl_l9hm{_+6arU-CNtzLY|}q;T##|Kg_E{^Lb&m`Ak-YW8>?t*!_LH*U;cO(J4MA!*EF_f3_Ci8IE6Zh%>+_l1N~on`Kp-zV{>zTA^$zeQy?@r zzLAjvWGcww8DIr;5uc|E^=^GW=#4&Z+kQgc_hG{%`%&tD^qr<;KGQ<4K-O3$a|v3hsv^5}O+y zxf53MMZ`hy_Raa}{_cm9gR_5~@9e!hI66PxIX(UL{mI_>`J02o{fVkH6y7^Hg)E2% zM+avIJBO~`!lh$4mw(C<_AiEJ)iqt zSw8=^DBxfFnV9~!3HV!h8tDJ#%k`rD_r@as+Y>zn{?8H5_a0JgQ_4;3iMdDk{RS@V zzeL#H2?O=ofh+9BR_yfZ6;|Zr3Y5pT`GxVH0@Di<)7M);%V3V?EV!Z+!z}^vs>e)EiAL`JGta2K+{JZuy@Gh8ekzWQ2uV;gN3aa%JuvIHJ zV1J#;xFb^maUB%EIRz77kCmg{!LdTvdNI2JO0ktQnV-VW@$URIW$ft*qD{{nUwWd5 z(uSPO5=+{$5|#{qi$iIai5CH)r4xVAv+Fg*EVE(>mco4BrN+^3B*2G==I5htv`8q^)DY# zy}41DK>eiLbm_wvi0D3j2={LyX!}!zX`l4`=RU_*}CQ_MZ_&P;n2`C987^^zSkY}G1U#m(eYHuPDwSDCIBKHXhlCm?kp2^6tMGjk}XJ>8?K!3M}XvDB=vd zAt6pDM#MDi0M>|$Wt6}C?btxfX2vj^359#60Cf8~vCM>;M!yh+PVgfEkKBPH#M#|^6*lA zr6t^K$J#2#R);rjm7{8FKUaiG{dtWP!u>Q*k$4RM4y?n+NXZyR}+_=={u3m@Ui zgV1;tegP01;?SFkqt`=|j^iF1Zli}T0QoP0DDuw4zrSEV;zJMJD{3=Nqt_l}Yv}iz z$FlDyq(77(ItoHSL;U*L^6da~)P+>7IPIpGB{XJOyh#L$gt}d>6l?#vCVr#@GeP&B z-H+4g5pDeA@9XFR`M1~TdH??+^vl`VasOT&{u__aS5#}CkoQcq=%LrIk+-q7<{{|< z_?;8TKlw8~{cj%%u!;V^STFj2yjp*;u>X6K#}FIxaSAYikzqa+FNdLDsw-)xlPx9QCqtewA?@AAW zr*sFHnu2^M1pn#i*3|ode(`@cH`a>xf18^N|DUIM+TQ=Q^a4Mo;Y8hA_+1)v{F!U>yWGpETy*oHYsttT;9fG0B58$`*=r6Wdg({9 zz_Ilm02SZXOnkAZhn7PUaO88Z8pl}lA(xH739a!f;<&&X-NncdIXzq%qZ;mW01 z|Eh2>(@td*w!vwHQ`-*8dNFYij5U_SnYv(&ulKijU?!B&zGIP`-~nMgy+aR3nSE6( zZ8@Wo8wxiKo- zu#{_=JD05CN$Glu#WBnE=pEr3oGzrZZ{TUg|MkQl40H+OFPEveDKI2dxP=8zLAwiW8jiIJM2_-m15s7iH z)7v{eKjk#Voh7tOM+3uuTtJ$1L- z>5&loeOW%G|L(m1^=SX(^t&Kxt@i)P{?6XJ{oW{?u8rFLzrMA;xmmFPS%0;)xv>9y zl4l9Mm6MEq!O;kTMSZ99BRYr~_oGN=0Jz1M$T(LBk|5LEp--yrZ_CP1Q8NKF9rRZ^ zouwu87ISoh6N(PvE86K?TwDY+W;DVbai$=_k|93~k*bLVAZ9@t5I!7V_6Y5Z@?E(w zt-9kR^f?xAJDu}WjL|3aO=2a0X)!OP0fQg#&$%enUqM$i)w~%BX)p$(70`*FLl@Lg z=oEo!h|VY?@`Fs0Al^z+26+S}`wM&$x)|Mc)r*Vm@)&3^St&gldK6^$mX^?mm{cJ% z)}Q)Pj)l(_$PgzHy%T+NprEQ`#bt|Uko`f9Oo~VJ1~a5P{7>VcA&Mk4#xZBeXN(5K z=bEf%Lj$7=%`kg}da_^1AoXEo`7zS|EJ(=^;$ZSojBnA%|2Iw1jnq1HIy>rxY(Tvh zzv2N#%MrQ8=w`jQ(c47bf1sO<-db;MC70X6=K_@!Bf^j$cStOH;&XBtVRV^d|5{+7 z;KdjNf+Ig3`w{X3keLAeC3Hs73jrQ2@5CY6?5%I~)>p*%5oYjGiAb5;X#aSPHbk+t z48ltRq0{*n9iyRtBfA}jsN21wX#hX(=r~0%VPhDuY<7G(s46@Fy|M-#V98E|Sz}wW zv3d+Qd+RoWuVkG!uwP>3dvPZxnu>vx73CgX1r#o9$h=t-Z4 z&O^8TGfCNL%3C!%59mUBs$Mkr|7bkA#HrX7F}ON4mA_bT1X?v-=%Oiw|3%i$F%3~@ z%Ayg8$!I)6Sw8+EUNMQL!K@muT&n+zD!ly9fY&&7V)g~_%2dl2b~^>UvQlp7v*DGU zm!~}SIUd|qfD-#l7e!2!t%Hs(?vcmu66|dw?}Wl({sGt+4?Wi53wTB32FIAOe&^Tn?HriTSMV|63$=+^?w^u%i#wk7XLo_r#ul7Fiyl6p6J4}b z52x+m;|1VVP?}dGmR}GB{d)yoo-u>=w$Y1M8>>jZ0ecPe>dO8tmWtd#DWTAWcEqeg z?E!%{mR_M_RRzf?rh?O8j0|Fw(2&`P&9Z}vXMW9q9f+dHsB)X2qYIh*zDH~a`s zHE?C+3?rj4Zo;U*vQL2*_Xkb29?<(6oTemHOthBW0083t0NoBLF#GbvC(P!+lSI?Y z<%@S?#?d7fTpsY97b~I@)17;EC)lvD>w0k6&_~M@Xt^J))RmtDUWrl2H%_`Js+>?7 z`f+h^bwv4biW!b;2tpHH>O!h|+gf<3$ognG@MAH5`f5I0vGMx!+f*Z_=v*!YcpaUS z27E?#S2e54U+{EXduFx4OPrjwFdl5#RO1ApVk+@6fvzV*E{B&mG}_|@A%ky0_|zy8 zhA>394GmsDt<64Y;w&!I@Y}jw(P`fmgC(K-M(rb zl@*w6p;1G?1V2>E2e-pZ>OyMSj@>cibfmQ=jnLQ_ zcRF6zY129JfOe$;sgHD>S~lVVU4VD$xY4tEYoLTLc`|_^)V0n0uIZUpJ`2zcpw&QdtQ*C16idB z`fT&4@oI7QXnb;K&kY#vAU`dhKQq#Jjn}t!_Gr8kpAQ>&R5M;dfD?{Gd5vF#SAPa& zsg2iJ9bcc}1&lnssz*!Ubqw|e6C;gC3`{k?!Ra0JL79E2JBl9q!0^>LlC~lG6Nv}t zQy^Eex)GDtK|8;mqMgH^O@q5M<|&OLoMyMOS%|kTBLik#_4>E0D~|oH<|!cXo2=iz z+30Qc2V)ZAzUq13+S~mlg~v({o#^|l;(T%{Z^dYg5lzvErdW0v#}NLeH!r%$Yl%Q^ zO3n^X^CMnSelB>a|Eo2I8D3IDC<^t^yPbatmfc*TiKEbxIn+HOL;rY<)_dze32Z&D z0b8Z>RUXLAx})9W5B+y|MAJLtZ)}3g^&>JOxdU)Ux@jBuHqgx@8k+l8F)j%W6^9IZ z;8OXS@UpCSo7UHvDcT0R8P}IKT5fSEx1+6{jncjWuUWhL-xf8_BpV-`d{8I{UktgpQ#bD2jwIC>GFoJZS;>iFX>uy_)J zoJWW5ZQ^xS9b5%NK$jnQrZSHZpso~B$jNllkh*FgFHzk49x0O*;OIt$pR)}*)oVz_0LS8Cq642j~(j`oNQcNls z>_l(_!?7h2fcrp2`I#sfj&E8XE9zjy@eN6-l*(`Xlt^WN;xi@{ecBhTsY^wdUJ_DI(17(*e1%hS z4D|;%#;G`+ZS|#}kp9hjZ~aw&3CA}#ekz;o-mG^6nqui<0>>gpA?7}bSP$(Mj(a_H zdK|9>3@OtkwNOD#t)vTEN#M^11Y;JNM)8oTntXX8olx zBk`cihq%j=sCzYzL2_7GX-jWZ=LPEOM*5J%*LBw<|Hc7#nA0%PJ?Dt@rZI2JbXsyk zqay;nZJRqV5P|&;tU5F0XVT>YULUQn1JmH8WScL9SG^K2hu2#dUL_fN7QEzE z-ql%ATG&m>m@>+fPY;|)t779di`}HwsDAD zUOL!!0j(*gQVN~XctD!&RU}@=vZx};5%mRC_9Ge(q{`Jt!~L4jCWbK zs;tT-vdoicWjel1-uXm06|1<#olhArU3rd3Wp{U+T#?#am1?|9WoP-BSX|>seXNqy zRi8tyc~q5=PI1TPj#txwJ)k{PRH=R{ZC~e#R|5m~V6$3=V^bB2-Oh7~F$H-4p|4y*o_cAU~=2Y>BM!&iB}8b!&xs%a;Z0K6#&OHY%@@E!>f%MfyS$) zmF8UVI&SjUQSI1<1exte=Ded#R197ddM4)ZipUiX?t%#aLTRPojFbvQ6-7f)R-5&l zavcREN%1MC3Hr1zEg)+(Z`^0stgkmU?j|(MvcUFz&i!E69r|$?;k0Y8?BW|7^ZrtZ zuShH^F%B0jT|W-HNs1Y#iLS*~^Z?Cd0V3^O>MmXM0BK7e*F}q~{KfBM|E~Vx#fd_t zmune?dN0=pba72?$si?R9}ZGkdop}#yjzR->-+`xw6= z5yZI3jokw}6)Y|=LyrB0J{%qV_lJGRAAYp+ZvWJ&d4%9K409ogDLoNrk`;_w5=BbO zjK+WpaAeXzUHYGfV~C`}m66vqzGITXLzkG}VjSCYl^=(Fnj#&=_m=RXt-Gcv8jT}P zk_f{A1$u0$9Bt%ObAtzpfeOcy%-IB-+m(;pEeSDV*iVC@l3oM^IC1= zvx_oTpr4x>w-)5gg^`>EGyfL~qijKd$DUld2@c2=!QpCo*_J0$cA*PhKqMBWMKxw! zny?;vFXX~o!layGzKF@b9g<*}Yl$$Fj$;sApwUZ=#ter&biki8VVuCMY^@23O5;%W z7oc7^`=k$qf)&cCTzWQ=5ipG;hQS3QvzqC|nIJHilnoIzV2?DUjBjtQ zt*t@q89yA6xDPr#MyObgeXSbp%O*Ydz_M$SoIrux<_7{P#c{$A1xp5ChP8-(vj5-b zA5IQ|Jc_^H?VtVfey`%TFQeWr6i7_?4*Z$7$dYFgm@~m@6=J9K=2vt_&A2a!G?--= zi}RigG)owS-NPXwS19W#gf&UWc-8nG`|+KIDp~%}wyEM|gnJF0fZK@TEky3-p@4Pn z!l9+ZP_E%j6Ir1fYIn?83eEOM9jZC&EWA#4wT}A2iI+}_0BSTfE?O^bm;e9S`}gg* zZDd~@-+%KdaJn?Ib$mi;mvb0^eyK%LB?!F~JTaHmQ)cHIo;t9k zLET37(3Nxnj=&Eb(b*&rrr#jyEMQ|>j$J1NypS}-KOA4jNV}4*+MS6H#LnMkC^uf| zB_NNue^hWw7l|QnAk2_C>T6?$7K~xGiJo(rjNa*S=O3kElPGSIy-qb5` zQHOUbS}QcIHve3vZMoE&DL73Un`&2`&}GWkdgN}ZfO+)Qc)ds3w~pCcD=`pgi4aB} zk42h7+;pGPtuh0Mj;{L5l{G9L4cJ@~$<(%y=HSM@)v?SKL71ciHOmK$zw_caI##mq$Lxq-U zb{r>&Eoh1?MDNclfIqc#!o4Ke_oyz~sw11D$<2`MJGZT1=g&*o6y&(MYq)G#=zaZ8eNgF zK#}&lyi1v0Tbn+6e){U@=XT$+e;Sq z<6p|8>^JO>VOOqG^k*u!W-l9 zO$^aKi`mo~?fi}x`3tVMt5xpH*R}~SqN`gqU$LuI^sKR`*~A+y!3KeCy?mV=Z7ni4 z-Onn@x;3Ml?PnFq{%*D8M1wyI&>QvTiVY(7O@>Rw}Kv&lc( zzJ>(E1`DuzXY&?hr@nVrJ6lDE-i=n5yV1B`f~LmP6GcT^DR_&83bmprD&LU2sNCcl7kHH3+Nd%BhrBqDYp} zb}hPW!AO_=wSqSEde;kWoq^nR9HC%;AUp4StU0zGscVew;x0s@))`w!8Lk>(kFGVw z_Ih;H#}?^YHNrUM@M7~(9E&nj5iOMfQ%=X3#!;z6g#~0mu_@*xN?fqaJ5{)yXdjNQ zg_j6ibODoe)g6Kln-jEzE;Ph-MR)4Ly+i*Kk4=i2T!ix=F zln6r@uo0Btb`W+LZu>g%(>T3a2nCysj~9*-o<|XuqD**h&REU~gbrCm?;9q&or)LJ ziy%}?syiSYq-UVL7}0pijPz-@sQXz0QWZ$bVfF# zq!8#&ZO7g*Z2f_RAXnw?x4ZNol2NJUC)6`=kA%Uej*%sh#Wvr-eYooMjF_^5MIEys zm-+M6nEhrJoQUMiIL4c}4_lz))F#x9?z~Jv^^)YQm~n|{&s35tmg05oZqJJvT|Y>6 zl;=mqY!Rfg7QZp%txZQzNPyMSL9B~g+iLsva(9r5E;z%`gMC`2i!M0SPBdHu1`mN3 zW}u(`=U*0f{?eyGmp8$?$XiL5zd&wImkBw%hCD`|fu7)k6r&-<98V@>H1|O-jLK4j z!dv&a9VM({vd#rak1pytcNP<=8L%alOR#R3^f!Xq(%Znd1)Z@gQCuts3;d}9T{I{B zI&)Ysgz{-H=o@n7I$cY_0wHZUwu#RhSJ$FO>T5y;E}^OuC~zTFHg%J(5mj=a|8q-p zEdUB!K$oJEF6XrmgjKCX{=7yk}FyrbS=H5byGA6 zah0WlCeM8D>n<$3MF4Zi#47wN@VK$1hQ1e5#nhJ5yo9a}47fiw;9EyCx~~m>Ag7L- ziSf!Fy!~N6?q+x&$kVdW0-0uEYh2O2b}ZV(6g8M#H${tY?CLGLEK&sS80bH5g{~H} z>!NGf&D{^={BiX7VYGQ5#HDn#?(cTdwe05Z4R7r(qN|09+C|s0o4Yq;z;2D(h{1~u zPOs}8kPaTAIuUBnrTc5^{FJ4PN)}ZIT1$fXl7>OxrO5RBT_O)5l)Xtl!{q1$4q?xHJep3-@Axd!9$K!ZdsQN2u4?>rxFTaX zr^-}1Cnr@mnd3|u7t~!4_(0D0mSe1LLf7KRVjswfbyW1LUtBslAIz94c)X#U)=8I) zr>xuL^nskgH{WDq>P1TRo>-@As?-u(zm4cpse!ZVm|yKsP@`1D7tV@d&(IuQw_u>N zbS*O+zNliUcotwg?<yM<6I9)AOZPAk`Wt=g1Pw?Sqj&No9dzoXYpwV zWpFTFeOrSvo=up<0C1brRWLl6{hmuLt29yj{l0ot&PEKPBZxF1r+6g@;SmHWm=*(T z>Cg9W5E|QHqh$#z*s?9Ca<{>V0yY3xSenPA-u+dSO!0|oXmBwh`PzV z#!Rat@sZ_ZHh$(cXueNM=CVlG%X;&BAr&zh*Cf!9xk{+%>dk@+7`%>XXUoX6`A7_5 zRW~B@!GmkeO%oHoGX&IP(Pk5Arb*_iGl?Z+<{i+7t={ybu`dabvWm=Ay4(sf+swMP zW(tL8NTazw12!b{$?lV-Cj(2!RJ52dby6dCd2d>BHyr-!kxBFXq!3EPqU)yjQIepG zyO)fNIZK^UdgD0?P97_gw8=Dr=2=&iw+~fVfpX;TV_IW^HPxD)j%k{XXnX;_vdhW5 z#!6oX9QvV#h|)DrJ0U|?bk((%&@zqi1Ie5c*dWqCL=b5d!VAXowaHwiDRz*VF?A)1 z3zS+Thy-QgVV_rglag0{GVqm!2y{Ffi84!wD(HC3W0cNBmZImbJ&^I@^~!7V%?>i3 z8!FczQ?>b@2qJ7_S zfbRwiUlQ*7jw5{6m%>^m9Ur}_zC_%FU5z%g8Ks@er-OdL9eVx_^ttBl_<=k#ktD(E ziNq;)Sl-aXvB)xvt-6^cycYc(T&k=8-)Vl$RduncT38>*k$-RvMrHdI;R`Ttswa+q z?Ohi_R%$G~hHJ$RD@%78TegFB&#?~rxn=g9g?MtaKZoG@1>_^9w63E)zYn{54hmR) zqrIzUwzA^d>|0#3mIqo5|3HqshzXDcjK%=v zvz#hE;%S|mxE7C0LK6EaH8GVz!ob<)B6(o0s6hW*vO>Zc3e&{yMSBlPBAC=m$i*UP z#|9&4R%@==4?)oH_lZF+cjFE2l3M-?0=Q0Qcg;u9L%e}G5|=Cp&d<;1be0BQ=#XJR zOe`b)7a@t5QJxKnIaT4=Bw|=u6pI-oDTGjO%OV|;-ru%zBO7na;b8E$EzG_xt$nly zIiP~KdhNWG<>;*@bO;xG0@DCpx0!P010h-ymq=7ddfoKs;<2<|Rpa^jdA*m!n6!e4 zLAUs!yn>*LcH=qb*+5LP!tIsh{jjR4|&n&eHi10}6Xp zRxUFuYi%UeV{B5EvKYuIEm*QBagzYQ9~O2&En5B1{S2-B9)iCwZp+#P!lW~_IL~k; z$hnOWb{<)e?JBIaAHw{6CpfpYo$rwISn_j-6?5)lpPj?x5$K{h&$W2)ttbc$7M193 z!TL9$Fx)+8WO}*==kIWJB^H zuw4CpP;vO4cU`A947@K<6nVe;MDGzPQw)j&L@w}tZ{+ZcR$Qg5Hzd6?-EQZg)7$YA zl|0c&=qOJ1_8%V9KbpOxHza%R^+)(CE~OH)c3b=IVkLD30gBXC_ptquN_YXH&)okG zfiSC2rfgk`zd{C0A|l;2khpS@38kWzk8AQy*?35-(cf-Fv6%TlN&6=CBxCA084~;3 zYVXyX3hQ9#9s9$_R9x_iwD7l*#}^^q10OcZ-`n5a`)Zv!%p1!ro}IltIeq=|`J3;b z|8V982>cjZS;AX8IT6f*ZnPnzlz4c3j(W1-*(UTusYSDOnMVOs{?DM*VwG z9diz5R4P{Zz1tWrvt5#Jj?SJxI;buAXFhzEk#bF#Rgn=F1QEatv`hmb{0pYaA|wCv z?DZ=%gVH&yb?^ENx5@N0{f0{R=zy>+770smu5Pht5|Qs%QE;^#9FdG&k(?HE#uO{a zlu9yUEUSBomPHC&Bc@Wb8p6k9F3O4rlF_3B(^Ce8f&Es}RJt3^=)Yl$Vwo!D6?qAZ z1>ORZ;He3Du?Y1zIIh&S_frU6+$9a zRR#hN_Lu8~ATTeEPL2_L$oL8xJVD)!P_)o;G~57+r))-tV_qar$U_(WH zd=g&l4H91LS4$_bvjis+mrJ`$SNymAZ*|pGf0>1eU8Sq|+y1w@68(>@#&sO5P#Z<0 z4oMi`L}T9iSc>tDclmbo@-^jok@2NDDyST`4T}zPk(f*SRdRs8&_j}@KH@_I{iB8y zV>(%}LK0EpRbG)90Xv|^j6kb9{ybZP&>F#IWt`1k1~nCu`4nm4W$ivtM4lo#hh2P)qKq=a5-0$T+K2`n_;BcjL5yaJLBC0&AUGlgi^XilvIO;K zF0HsDGOs3*GjEi40AGO=EGc8Fb-O?(H84%xS3$ibJ!WN5pjW15GkGC$R-|(><3$1O zsDOApRi#4B!?HXXjOP4Dlud@@axb{xSu(7^M}iqsRBxMl@4`(F-MXCET`eSHtcGTr zYvJP#NpG(g*upNJ$cDHvBp}%RuI|Z`YR>nQsFvr zfh9%ZO{*O}XUoad?4V|Xu%v7K1Pj*>S-F0i*nr&&D8L0|N%d9_S!4BR*}&YPi^vbs zKm1O|0RZ|7Qh(Zh<^D!OnV?}}&cNDPz*#b?Z0 z!LSryX(v0d6|aCBGpgpffwB6vlnb(W=rmfxGng@dmzOc@KL3dR?u>~4h~#A)nemK3 z*jpbZO{-^T-mrL61%QNoPK9TFP`L65Z=2J_B?-{y8wm4+DUNpNBEEe~rsD^$MBMcdv7nJr!9dhh&%Z z9fP<$j1K;*p7J?M8of{&SIFhjC;aIm|qXxs1AAn!u@uXZ1P{Z;gE zhkUhr@by>Gf&Sz0>#w3i{l}xPzlt91K+>=GcD>Scoie5=OGcG34xc{x`$&lNAI3DU zhY(g3OSr17doMynW#-VSbm!VqVLM&4ME#YS&|GQNO&9vJ=>&A`8xFvi&$=;0qL?73 z<5J_nl{-wLzP?<0q}@B66od5W<6uo0O;}-f5dHaS z^|e*nj20J0=!ALVFPWG09cVT=Ov{PM%H=cPa0_M4X#NlMv65(0vVb+Q$SxTK+ff3| zuV4gFR&~*@VEgb4zKyNMt}Mq6dVA4cullZ13FBi=pX#rF((ONb$_iCW;Ee@PB}TvM zMQ9*)>uq3JT+DM2XEF1l9aW{$R@IB5s8{;{XYETr{)^4)-!AKd#m)AJ&K;tma5$E5@fC}ZhToePMyRM|`Y)+r0kkiq$sr89fk^c;)a5s8Savst|2vs{>h zUJ3nP32m?Vl9U@Q{}i<=SBN|Wg%z37_yT^HJQ=zn$0U8ixSARTLKKs?+@0g}iKt#1 zl}4+cuZsz?87|-2Q@x7YN|q&W3pV3fq7@bQ-ds42=R>lG+pXEt-s;gvFWK7}lafxD zFDm!pX3F_lnVTSPXU0Vgz&~7cDd#vQO+sXFjK)(_OvkhX@y?Kp*@y0EDdxH6(L?g! zzyJHct!f0wg+ub-op?90@5)?j`*3}!w&TvE^QV!>IBv*v4iM-2CaS*e)Tyn!E3fHb%Qyiv=t$ukj`GnSz< z!5R!aWA9WIWmhs4mU+d$L;EFkod{<|VU5E>cL*|O%G^1}R-3H_9Tlwv>cxuOL0EE^ z-Y*kQ3%738s)Sv#ROGCX1D)Y5*f&jk-qsti9R>duB@83De88@Or^lio|2}&8!rbBW zHc`_&;4A(>-{JuU6uRhe0zS46Cg626UuxIGkfxQiA2u~+{UAlINbiex%<)E;)1_Jv zP;b_w6NtJJL@Ji+RCs=}%w0BqSYxq=R*R1+IFZ7qnOo-6((bvGm?lBuC$bT)sG6i zD`D1{%2P5fGf=CdMp=rz)7sGc_vHNjd&fga&ontQx?7J#1(S zX8A&-ivtN7D!|f8i9Y~>m0y~mn_%+MADo2_9X1OgJg?0<1@)bH5eeW%hE&iD6k7(M z4M2?F1G@2`b|Aij;o7K#@P;13Dj7NX95Qle10vG^>^Y<0OQXZ+z6H@!vucnBn=PkYDQ@t8mxuKhzeS(N!Jvx>5MQYXGYIBSa+sojHSz zbyDZjlBaduD{HW{42qmb5IH{jj;V9dN~SbRQiuSc1zTB;$J}zanUD%bPNLWR_qcz`cVx@X@9iKs&WI=y1YPdVX!5XV678Uy;czhUF2UHs{;|D-sM|G{ zP9?MyX1yn2AB!rHV#)m*&oLhNkUBz($r%BV#E|r|3D4f)Rsnz7J8V%sTft!dhX@WZ zB!e&ZR^}-s3kx=3?}ntOiR%UK+K*!t|G%y1%kAc^p^GQd-4;sNWw7kxQ+2DUJK&Qw zl=sp8JjJ00+k;E#1a&tN;<8}roH!&KXHxeZ?s&$HO~cTtML_AM!Os=zN?0MUZ5gid zhe5yMlL;%fjkyyrd_6x~kl5jx4cfr%Wu*qMN$G@ac_8q%uZ(}VDHrcZZG&;#3*%ys z0FG-tGF*6D?Ppr5X#|KsJbo+muV1R^OTM=A7w@IM<@(hZZ{Opu`0k&zi}a$;-htMk*kvotlC=;s!wtQfGy$O@Cj@drtT8}2 z@pVprD_O%K$+db&{tkoxk7nzu573(9EKbXWS+>324Ds7VS~+}!^} zqS2^~gCO`4Jc)J>4$#TKzofQ&Jdr!NyJs-F+!e!CJDkK;ML|1LqM#E-jx)uIF^w77 zdU|%e?Ur=c;-}>4*)d59E$$Pz3sEptaCTYEAzRhYN57W^BmZJ^@*|jtPfWQUr+}Lx zz$hTGZEXlg=wU2*h*dd;5K^6Pd+i~s7YITOYxQ$cX13<8P6bs;a;vZ)MUA4PSn^1- zbuQeYN~;iJgo`7k3O*_o^OPVg&34gKvw6+tuH{zS$wb0V%2CSY6dQfY#>0jxM=vhJ zxM24BABfI+q%A-JIZ4Y&c$}FLZit%92KoEBU^Agu4X}l0lg{y5jz2gUrD9}n7Mwmm zdiL^pG)wwLnT0$H5lzt>)Eb&XTLy5mywR!}SV0hcGq3!Ey6{~RW3qwU&a`<&9K|ZY z{Q!Ri=`Jf-NG@$U#n!bNkWU?Z%!x*ENAucJ7H~=YcUq z9Z90~9yHtPN^KZe$sp9BX1U&`xS%v_%@v&opf%V~p)-m;y;hWNQLh9MBk%>LX$nb> zPozm5Shr>JZ&6xQXLI?6oNEOf;O;(tJU_<`O?lz?fJ893Rd7_%!fhU}Uz*{2>zlsX zqADR%`Zi~*kV8_@5Za~bFW#TLe)jhGZgJA6&!{oL)mf4ZM_*T3FPLW}pbAs1M&{`dBF zA2!zi!$*%F->?6>cM399($El&59ELPXSwMoiI0F~5tf@>ITJd@@yVvBc0p(ko^41PW_7w>Z-rhSl9ao zfA6Vz4k$ksfNZCk01J3R&rfL04LG$SwAyUQj-jM9pKJv~iDbFrCCUH(PmUg^Hl$ReXY^ks6pVd4y z9Z+1<@u(D?bd+ZflX*5-Jk1vOlHxEtjeO%m%rp&|xC$Rl8^hF7!hGv3EjH)z1uNQx z7i?TGIelw`nL(R+hqAYvN-c2ddK-OWQNEs)v)OzF%-3-e|NDOl@zce+IA04Pu0A*8 zzNP1y`~OA?;41siqr=wzzq@~MzyIIGbA$cgp||Pwy3-(w-nO@V`MA>TQ4oR&+PChw zeW~ML?&qxz!yb6eu>NWdXFzmk8IlL?5)d5Ej(O^C`oLw0W5c1&SS+$c>c-l3;Vq|U z#*eyo{8io3^j@MTt*5-@s~|cDUOPS&zu9R0!x5zOQ%8S-HCVx_^?&%NY5#fj@bG^9 z-^l|*`qU0-`(XLO`}c$!cLOUzN8>V0L8=3{&Ii^B7w-makY_!l+5yA|?*O^1ur@QH zz)6#8afincHh%}S5_e(sis2z=3^$!dqEw`-?NHQ+@oZvL8@P)qc&3aqmk;Gy-G?AP zim&fjMA}E>pL@t_&qnLNezbgB`v30XqqhG4=;8hPzl$dqNo7<-JlPj|>pB{eBT6Y< z<)ff~U*ev2`ux?i=cmW7zI%Ig`rX-(grV6Z!%1H5gy9v>5^)tu{yY16Z~w{eyT^x5 z8W~@{e)fE5&-(%Pqefqi!f%G;o6%@A3J9qI*<(UKW{bBCdofbnTj#s%<#gM0oR=u! z%*=}!n~7qM?_P3e>t(W$=dhjSP-pnu1KxNxTK^8_I%b=k0IypAyDji_!(_v`;|p2jUBS|~oIF}OQ(F-UpLGRcPI zD5vq1h5ONNSEB4f+A}_DH-LFU&U|##8g`E7Qti#YSj=W+#?^cdQL;(IN|$n`UsS0QddZW2?!HUn2w)ElmV;1992gXg zRtp2CE``_V9h5L3xB}k%4je$^F|m#xN3oM!Eoi6TQ!<+%pEl=j-a?BKmawE zOVkUo_})ZPa~VDogh{)2qSxp=W!rFv(a(dI3MJXH@Le;J!F>;t0ju;|LrAMX%zGEg z&3)Qi_+>wEn1bsU-&JtE$j+f6r0;cHP79VP+viHa{r-X{%*{dKycA7=r*4||dO-k_ zOk!9#a1k+Q1&Fzvr()hEMZo>}GyQ5@re{pKtGWPz+joFpv{Yi|pljrm7I6DNE`*fi z@6nIQN=SV&w@UblyDjA_RYzdQB@Y#kWKoAB9??ejh05dfMuDM zhgiV@AR@KZ*wz_ro(%AK%*3CRw4j+{Oh$n&+m>3h6Psv(ww*(=r#l|O?L0IA2nP(e zrP*XouBI#_evyD`f%fDi3i_n*aghp|z$;aVG-ZVxRCNye zwo>Se>OupTq<1RPlxLG4;4rwSM?PnTAHLQkmYO7V>P55=MkU)J4{G@zAo?n!7*y&C zF24b~g7w%%_DhMJibCnCxIjcEK4Y4vq>MZ`Wq1z{OLHh-a;9b83C#)5U?OUY@DTgV zv~NgkUOfP>9HxXw6Eeks>~JHG!R<2_-&J?nh{hK|wO4o@-~uq2Wwf^&bOm{blk=cY zUT_I$C0>ZnIOT*E6Tl^bRUErOpdC9y9}y++vhI+CA~%WCoJsX`o=A%!FosCzdX`^9EFmFz{p!WPO}F!L1wIJ7Tq@xrFWJJ_0zM^Oq z=*C|yYz|C6ERxtVQAQyzjo4DVpa*0bFi4zTVMV}@{OkvOjzz(Qgm}-t7-6kCGbKOw zstM1eOL57H5qt#?)E&|T;9vL*%n;ETfgAS8(>ll3Q$B>C7!mnN3j#)#urpr*yi+5o zhcT@8Xf*94oP6*2q@Zlg^PKMK?#!{w#&-ElRRcuE_3b2Q|h#$y`OMv1m0Jk2N zKhA4&muXRhkJ5?$OKy_BH4Bo z=mOb0g~gq&kXaR#7t#R*u`m}&=w|i6774G|J1w{}6{;xRVf=fRTKXN09&UgT*io1x7 zyw5Yz#bhNG^@G$(Fbw0H7iT19g~9YRGvR{GbxOZRcN;dD zJnO7neS~5O?rUczLXy-vB^p}DSuLFf(x@VAxOh*{bcbl=3s&fU$ZCy7O2&g~^N9j6AEZT4^X#@!CK>*!Z8GHQfLir{{>M3X8P$(yeC z_7aZEt+z?o$3by7P@-V?2tfy8$fh(Gu5c;wOJZQ$8}XyGf?0)L>i1DLsp`;*s;%14 zSgV>=HL4mKrmYnlyiTpED&DX4WNG89lG;_ewb&raA*$7Q6_RJ(g$El3N|OC(|8ca7 z0N(716*cmprnRU`SvFBqk2+)!cSPbVI%6+@g6k2BR-?P37A&m|a$yPrnQ!=viBeU9 zvfgHXC~6DhC$n`pe6Oz>`_?S>~A`)VSY=R2cfw8eVXUAnA!DmONB}nYgO!a z%bd$tr9MyT6H`xQ6Gt@7r%ikiFs`!Xq!3!?g}_8Z^5Dw{o0MVHE3b?pd4M>A_M0uw zc4$>#2WClUd4(4IXRInP@CB0}Q4cVt8sApaKoabphLjZ{yJPp|VAAGF?XchGnGdN=Z>>M-ohtL-OeG z@Zo`d2Z31Kt8r(VS0XzVq6%GS)|r{|*gbe=a*Ffb9J$mu`D**nty+gZr)_AVWe5-! zQ*m`t@JpVu341PMnqr(Fw{~NiQyael`!*>=ZtvqBy?6oL`bs3sihjByVPlb!Pr!h) zPV=><7NV+_i9|Om#Xy0BK>x0EB74MSpr`5sxOu&9i>SkQV<9jIy81!jaI`D|Z$!!p zgLZMNRqMf0A@Xo-x%;FB6ASaVv$KzP>6tWLz1dP^<3b8LJJiYVr`*U znKcpIA9Y<1pe_&nM{nh3MVDA z84V@NDH@4VW4HG_Tu00veni&015#-=RB*`vOqRW)u`;=ci@G`x1p%agl2fHvkx6?T z0-OMf(M&F3*&KfqjLb@fMq>6ZPD{xzSrlNwM>bP+&a<3)V_b%C&Cb)~bGG1_Nw%s1 z9@qDLBk=6_g3TMY1ABmn=gepYejtOsWsz8SL>kD>rmcoyOT5nvYCq_{PH)0epxwe< z#HP(N_Zt_4ekP*DJR?;k;c8 zX5EYWtTRn}BEyOVGwHk+IP(l}I|R^5QI=Zl3*7f6&<-5oQkT6Ra<)3SH-~8uhgVon zz9^__L(~cX0EtgBP)qQD3qQLUxcIXW*{@=RKN8AjB9qJ{twaX=ZG8an*HjezcRke3 zcOo%=xm&pk56%yM^HwB@lNd%IF}M%-hjqWSAIxu^-t&tzpKu6&D}|!?stOws zT6>)NQAuO=1w`9`utX*eSZ`N!4>pD>MdK-sSIO%PaTf_u1fmmu}nNSjFEU3BjfalE)659yW`Vw3; zHSg3#04Tqysm94cVh88D4kfyyvIPx0N)obV{D`)}XUX?NQUbX10DN=IL3Pb5sToMl zQYzqJG^#v#0*e4+1=Z(hCWo!W_ou6N6O79T%fA*6wYEKJ=29&k;3*~#3WvvITk@;Q zZtQPbm}ex^6c1m?j1?2Rwc5`1ifoqV{P4PW=PmTQ-zK6Ub2>}iZs!qDlW1?F+0_@T zb}SMcyfWIdH5^KNmDIW|tVzhW|8|0YB^}u2VNg7V(sP27rK=!cNbws{3E9vX&xy0) z9qzIO{eG3dI!n>nn~p4>(2eC&IpgiYEW7(*mepv5K@T-h;f#3T6YPwVL;MrU(s^-*Qw097Fr6=5yM7RhI z%abgvG}=~F$jWIUORNI~d1=lLJ8xrEZi@B7j3jEzj|t0=9qM@jPOLWDE8`B1k;mc8 z$vMFqVj?xqL728_1Ko(1l|w_v&f?1dUg)K}8^QnTpH8fE`(FM1E6+o{>Np7b64Mk7 zQ%)wUZL=Mlq0M$8k|UR?>jnxs%NP!TVtXz!JVn%H8`m4;$|hMgZV)ka^ec;1RC!ER zopU;ZvDI1P+(NMsZ6BHLCJ6F*+G%sOB4uFMjcPD@I#$DUp}30}a0TP%DGZh25@L{6-Gu??OU%(^UUy z???4;|LbXf(zDK)STDvg)E_kGs(DiCLcsuIu94InDNXoI+_I|hTYYlIT>NJ;VyUTPqCr<48`5NHsm=`)tnxr6FG42ZcxSx4`cB{&axRqFYp z&s7nD*9h8VihT@>{WC5}#xZLn#*Z(0#oIyDFZcfp$v?xY!y9+anL z6ugfZhkYj3d(A#s~l6_xRVfLyMCv&4whKAEv0@T7%kh4P80<1--m>cT_@Bo;YCI>{P-~l znzsnu0PAL>iwP_Vt4s!=yHM#)6bvxJ72fy@Lh{@Toe0(wB#)L_Jyhm;jPh?8Zb6Xg zOHP}Y8n&xIuFisk*K<8X?hwMA7I38!%<2ABPSWcU>oe@#+O%f;!De&Q#OT25oyONJ zBol_g_jRwcEFm91-orTkDW2=^|8J)(&9(Tb@)b}}%lH4i{f7rl{NF?U`F{VugXjJG z!I$Kc&xT+Q9P^Z^dCtC`>28UqY)HNweEb;bRKfFixdpoMFTKHBi2{=@vy+*k-~&-bnZ@MML->==&dTwazazb{DoisS{Wp^O)E>FnIy4WP zliy03nsDTK4vmO{pBR=7>6NZSH%O8Zi)kqtkz!U8b)e~E&L9kKVeYtC|1vJg7T!l7 z&t9GBv~WzAvv@lSs-r3_#JO8wTzb3!*l^{5GY3t)p>~~KuK2a>9B&`AA6@6#Gz$}~ z)%$?XV19f7Eg62j{s4P)x=z7TqEqZK%Wl!o-!@RA>vAz8d}Bi!9p5^b z^!g)QnX01`8xtNI;-y|S_dNch8Mr+>qXyf=Ff2?3#?+E$hie)F@tx!tJ@N9Y^{G|~DImzGbAW#OVX>?v}_ltaKH{+(ahaWR&( z`mz2!!UFJwu3Gk>{YKtpab11w?zpD9gHp`s-S^fXYS+J)W~^>v>-YY>?A6&Cx1(JF zty|Npi)vn7c4f8iG%qNu&Nsgm#f<8`uZc%WjY&Mz*wG^LnhsnBI)$KcnB) zFMxh9)_c+WkFab*;;l-v8DDqD+FP?5w(brwkGZ8`9LzBB`j0qpe3yP{$Qr!C5m+F%q1U4y-24IY;cwu z)NtN5JoFE=?uBm7cnn>~1!>@Ptkbx*O~^I!5mH-0hqy6XJaY`_$+C}8C$I_m_|Z|^ z9M%m=sYd+~@ocGfr^AEmHgHM{G{t4K6UM_z(FL4{Lb(X^dG*8oL@lw)8N;)Y5%Ykv zMJ&=GdGqwdAGew%$-3sd)#*y;tg=d9^UNn7obl$#?vuUs$*H#4`(5@={@h^yM}H#^ z_I*)QsMYcR9yRy>{e%1S|2ug)xH#PGG{=RtcXfPw(2f0l9@5ZK!PRQmc`LXryYE-o zzri_E+x9=>POPW#DH{Xmk@1~c(xSlmnpX{Koky51s|6US6SyjAeY?6=yS$A{mgsFc z3_?SF9e;Q2D!LA!Z!XUGrqa*7D*oSjZovNw89F$Ir2zp~@c-S%kDKvdAMM@yf8EW~ zc_3Q@7Vw;98<%dH*KK@OejR2NV(rdL6_T23PB&sLx3#m}p;~JD5t|Ro%ZAw1sX9-| z>%(TC8XA=}Eo0YT|K2UO712Of#Q)sgeb`+8hll(3>;Fz3e@W9kms(b9PIE5`pRaHl z8KR1VSd&-q>$B=!p*Qnx$|(MX++YrNG+(U(o_g<-$VnNTaI2XVn1 zeauy_Qz>^fYz(q^Q&9WXu59Q;hGy=)|{|zW~{-o@L}0y#W8HXC$FEqeRcHmx%)s6 z3gO#A%!b}ef_EE?DWvrt@dqrMio8$>?W)dBj-Gyk`Vauh@0{8kBM?EZ&NBUl<)Xro zW*@gxEMLH;Y+bwmG9+QBC+XMk-`A&hGo!C|RhWy-qMSDLwYSK<^dHEtf@h?+(_2Yd zgT-`$mNu)$LL&}G zwtxZ)z1AkcW!$L#FFe?{;n$>D^ZNxCA!IWVI(L4NK`E~Oj(i`8%u}wq$n$CWTI(*F zUjOBm%2TN0i|sX8>x-fAXP>(5y!)ejl}?b;Ks zjoY`l`q~84!?Crbl!~Bj^2KH}t=bZiCnsNjv1K=>?dG?NYA+RRVcQ!JQUQ%FBBM(2 z^+4omaPdSAAltxMx;Ck-C2=(CbHYogMeMKl_8$XK+unjiZs)2CJlB{8 z7wwtSAa2#6b+d@oU9?z?TS&>8J+LVUSz=jj(&Dh&Fm31?LLq+c*9ZXBww4Y&bKx4a ziK1GN?U}n>eOyAkm&(Vjsxh$|pw)GkP8Ct6u~0}28mqphyhM#yp`T#neB`|aM(i$% z7mVd?kY0l)>%4GOOVOpvuRGn{1q>Tw+FQ)%vRMV7Zsl8ffyuaIcj-l*Us^Xq#Mtq^ zQ;YATW6;b{FFje|uH$Q+UV+w%*_$er_txP>o%5$n#$q1isx&>++iVK$T1FahTdnj)_dT|X{vxNoK($$M-qo6G;rJ1x|P!l+9VKMcDej#mGIQuMJQT1$p$tBfj z;va5J-Qr?e(A4X!rbbaWSWbud@}vu;bSHqGA>k;lzJre8C=)=+Xfpa=Z# zuGr?6^*zwqfIb_*2`!*|dmSgU_L-oK0PYgF7~Ngom^Srws`4X{SBYwI$vdj7<+@I_ zUd-<*jUNcSqf$T5_3B&@$lIr2QLOJydKQ(p33Z?3AWLr73vFrP-Wit-kkZ|0ZIaeK z*|Je5ecq1muH%;)w(3|l+{>NXHV|pNfH8hsu60cW>e;9n%dfRG8?)94-fcE$WreHS zXCwJ6IpW)3LEYc!{(tAW{{0_}h2#P_Ex81=>i*x}-fr{$-@(Dd`};q4@w|U;4sUAS zuP)-2<^y3E2G)JcvKHf^bq@gXXMe80{wrA`M2Tb}2UxZK4<8;h*Z<>#{rmNQ7td-Z ztR~EZyZDRR+0AeL)`Zf}eypD#CLT`AJqp}4QQ(>; zsrn!SU>Vlc?~`XNn-iL*2G5O*TmbwIjJKr#Y^H$aUF+ecEv3?=v&!ho%5D1Y+C8Vw zexG3A5Sv3}&higO3H2VRp}4KaaPyChD@D4EoVLC@=;ynr=(To{?`e0#++f#!KpcMm z-ulw<_foGt2mCy(dC;B-pXA=DGGdDE`AY_+i;jB!66hjpqkb$22(x~upbm(K z)+})J?UQ@3w!hAE1O6`(d!W8T2VAB9?e4YkzxN*A+kfxm>Cpc`q{4x1>VWI=f8f@7 z6Q~!|#s+WjcgNK0`EG-y-v(E1Zx8<nS=wX0g|NM7v|8eX5_i*>%e*eFV=QHpBn_-53GO%zxmp26r zFH>}E4apZe^&5yRX``RkqF?)c_OEipOrq#J?$Z0VxmrohK%jg~B%58b;;ESBv|yz7 z53(2S9Y(w1Zm)|H2v%qz&E=5%`~XMk!7nwq&PE#cPO%I|)~2hV7p+q-6jj#&IMe9~ zxn#vi4q+eq`9UceytFw1L3KHN7dJj&9m3PJ#oLk+~m0d|6gwO@t)=Ue{cWcLG%3Q z;Njl=`Tw0fp8W57`1vv5R8g{RvgOBo=n7c2?SiG_g@P^Xue7x;!0$HM0wCC4ZySjD zqFJ3EeGW|5+uQbn!rDqjg&MfJ_{z_~1$e86H))1{>xgf1o$ct08~YW0;n|DUZfbMm zXmVF)^3tVFwZa#(Lh&(=HACQ&4BYE}E16Wf5!KCR2UgxPG}THlqtyGQW@ZA_W^qN8 zwdv=co;|%C(z~K6p7wsR*HbD779`rrtZNh5Ns%k%8Wa>F`&EqAu76}oYZGA#+MI-h zvYE&vTYsb~lb|l0=DF;ms4DjwG`V0ww@p-4@a9xGxR9I77FWm(>QA+}wJs3}m$A5H z#eB)4s+YVuWx!uWrf8ar1R%I$nzCYT8f_MyO}fZiRQ%?I8n@r|d#^sNT8`>n)Vex0 zC+}8R!S&bxpxUp`tc55Np7~p97b#fiHHhIeuJG{tCTq5rB>Op$rT$-g}6X2 zUmC=OwI_Bm<5Ewbf=xI?!CKZ~aCpD0+Ra;030ODj$f}fUP~hDT;_H*K)>3PfeGTG7 za>Jg{1#Dh#t|e5dSf*&)kfmGb(zg8_}WzI{)|PY3Qf-XBES-I8YNzbGA#DDQYd;uiu{r`r$kzW zqwAAkinvbQXs5eb<<8c(Y3(LD=q8hP(KPkTx(+3xpcBm?HxUF)uBCf-z2wa)yQC>k zK8Mh;qT*|`1lT=QipJB8)VOuJxmEbu^dUCp7poDK+xp3rWy->5 z4f4%H0B8IEqHX-&Zie^U$dF$d=5Na_=$6dxoo4iF`U$y{1wO_Tn3g5Kegt!~!va=2 z2*6w5%j#=hOL5*v3w@EU?}^mewd)>je{sJzEO@TZ|1Ao_>LcJ4{Qu$JL5u(I?%w5*$IaBFL9H)(^aPtYTeHMv$&wS!-}Zh>m5hJw>kt=N6rUrJcthD4_rAdr=m{0 zi>}m*kS^-i0};xq*MVH3zmSg~dw~a~9<~Eqw4pvW!9wZsqq4~}k<=n9+25UI*AqAT zR>5tDjl+7N>ah}wCG13jU#nj>1D#*kj7^GJf-vJUzgn;7SLSShzAOM~x5JPMntVf3 zn#HU*J~6Ai_O5%Pw(|9sAi{TLIs?`86i$QM)%ss8JdufI7W1SQ#caL8&7~I1-R!5u zlrN57Y;IWS{&^)b&j+QW-7ak_YggC$seAQ1KC+G3b3K5ZgL|jEKlpQF`H!NIeiQ%i z{YS0)pAQcY@8!R{c)D4r(Y&kyU7XovJ@ zlyaR2A6>CM?jowk3evY1APn6r>!0+wG5?<#G4a~`e{c8E!~GWi``*3%_fDRLx^OgW z>qGt?U_NVsH5LUEGK$4)(A*h}67d(YB(#Dyb#zyShJ*5OO|$nQ^nE3M+nP69P?{^N zTjOHVh80`$!LMQjO@RKk%4V+{aIUwEMqAMOtwL?s??C@e8=IDVAgbWA6*#o()SQdt zO{?<8%bV2iCSHSmqIu~BpK*WBY!lenC6^epT$9{tsDrDvUV9jW4x(YbPFqkzM=!NP zm@USRT>*W#4qdhgA4FpVvOL__PXH6^yszsx!!B;~>Vf5%V#Os*Dgq@uq$#yiTxhR@HCQUAJc37{6C4->)k7UaqR&OL|=r zrXsU5t|GyEIfS#@>y?cY`;@_U$g_!8L+evLK423uZk@6_0?ckqanVI1daqk67dCVsAsD^;n)d)igK?$xFpQk8WZ-7#XcV8t78!Lo08>h(+G!>SHiP)-Lu ztM&`8q%#}RqfOIUBPQR1y`;NimYC=pAn-0unZd&2#m@R!^Z+DC+U zWB<8<{ZC1E$uwLF2C?e=XSa#}w*PqdKK|p~Jn!51Z=HwHU4Eg>W1%(OH9L%fwYl`? zvkV$w1mBMyd`Eh{6?ebj&4j6TR+qYLiQK<}STpX>AgOI9czH^5ms zb%0g=|GO>xx5tkU?(zTc)-rKH1QQ8@CB9fzOMwlI>1^wJvoY^LR z>?-Lm;Y8qvYpt0cx;w96v6#(RmasxvX})^Xc@Vwq1lpvyF%e%!cobjwprF(Y`Dy#BVQ;EJJMiQ$-*=n_VVDN0$_QAJ;+L_Uu z&zS0T62Mf?9N1i!$r1V1=8S92#Z=}ARc3i(M*q!*{Ni3z`|CfO%74+6r87RsM8Vds zV}<;;d$@PlkpK1{-Q&OC&C@3*R4G4!N&X@OOUPokL`%O z&eAy%8RXO?k(?DI7a^m{RY z|JoPR$w2?d{*;&5pekrYP5BJoqvi(Tm{ANX_!#%m07SCqL4Hi&B!~ zXU}C2<%Q6Sb`bG|(E+9_#IJuwF1hLYKYf1m?B(-lmTXYRiuHfEf6!e2d-wX^9X);0 z9%S-8OK0S%o&!N}oJmE~R6^XzpF0xM3Cq+kTT`WSIUEcoTusXnID=Pi!W}bdI|_n+ zpM1v@Ic2$!T!~^%julGODvGIVk=&?SX9P zt?7=Am5p~P*J*w}DJX2Xi<%D!*ewpbU+n6(V7k>U>64dyQUI@yk|!!cdT$#(E1@t^@O*qmHZ{aJT>qC3+aUk6`S=DV(h9$c{=k*7Wn3j&z%PXVxw z|89p9RvP(+jkVNkxGv8o3)TY9R3Qd18Q#LW=*Lxgp_($BO5q5~3%M(AJ0foc46^1+ zj=5@w3dROAs+&5n`3IKBkh&;V zhEeGSiOWGoe@4CP&+;tQ|Gf8^NLa|;Y39y~0r1WBf!P$!d`x4j8l^mDnPfw9lxuFMrHZaZ*@YaE59Zhi`4;Z12#{mAN?D{s(!nq~cQIcn zt3glf2Q<&!&%Nkzv>PN$#s!C+bV!a+eZ`$c^OCB3Qk%uWRA@?o9SkzD8RhAaOgPPoa>T_yC;El1)v{LTul6c0?)*#&DnaK~-oW?h7+W1dhMT-wn(h#u}n z5AWIeALzLr|3~?A-3?$l|3BE@-)rLk9PI7ga()H!B-+}#NPmxPjk zAH94Ljzuw}O0fj&=Q_bN7N@jel9W3lJRlOg(W=Vh9jBUExcekIgN!6csWCVaxAf^=JI^;2o0fg-w3VH=U_&oii4Zb9Cah1rmVmXSCXqK zkEf)Rj4Z$)il8_+%_odQR+Inx|}ghlqL}sS3D| zwFPQJjK?}4L0|@~(r*nRT`)*}Pk^Zi*jxBzAHIlUqvE>?t{2%kjR@&`9hcLBWywgsNLrG*p9+DBN^DiD#Mrp%fIk{yEHzIw$s^*|-8O#qE!{)z;l z!71#>IasB6YYw5cQkD=kEkrp%E3Bk5X2Xq;QK{+~zJK%PIVA7VNuy7GJUTr-`sT&+Aubr(heM-U zx0zI(O?B(QkPMj0EQU|}A_i$)bn z@a!5x5{4?3Va)R>D?(Xv#pDhN!&G1l>K(#Vj4Q`l({mvuAEiuJDZy?uVq`4JEFn`? zbj#A+UC}Qko#<|bKn_R61Sh!}x}3#)JSURHWudu@u_)o@MD@%?i5io`ijZyvpjFxH zBWq#<&Q+kTaO*@Q+pYp#AbY2<21lb%n$afEE&9zXkuaxuc&4+hGMB1gbOw30 z1B+MtWN&x3RV-M%#TXAoD(jmll*xzgfCi_;=OYw&&WR{gM2^Q`=i70w(8xDpcCiwk zHLB3VW_BeXy*F|T{CiWBUFWsCP1V}{iIGy4G)?D~vn0s`7Hk@7g#nizYFC1!j9xOd zO;XMBVv)(1i&C1xj%%o+}MVS$i`5ejEd{eGe z%1r5woE>XdBrkc!^(=%gor{trf?Uz8)*3HcnHk%0-B@qRPkE*j(d5@sLW&u1Ll!eB zX)y;U4ReNugHsmiTyrz%p|PG-52`MI5V>M!+~U~u35oMk%MZIV`(nmsz!o1JyyOA4 z6S=zC6-|a&P)q%A|0NFsGZkuV-dtcuP4lV6v31k>E1cFoq_TPCz>aHExk6Y-A#C02 z>?lo-GsTKAg{fugYe8#uBZT*Ka?Q_q{;Z_wnbxQg^Ey z?}0JQngnyZE%Z(bHfDt@8TN9$*-`Qe<02aGKRvsKLEi=@B?7%`YHKU#lS~kX3367< zxEAGu%rB^8gAMxRsN%2PyR4ehYRwzjUkR91E=F)*H{E_8H(>aKw07U1>S#@kxthJO zPn!^IjyHJT-&zLJuPTr;`=;7wbCDRIZ;-ANJY}l!SRb6DzrwgBa#m0!iq3a%csHXw z8$9z*R0lNY(JblL(ZX=@H9*PC{#ii?I3%eNl{`Kw)zo!F^EQ1@hX63!4Qz)Ma>fs* zFF^V*Co?d>aw^I+(L?MuB3K4In;7QMw=2bz;<~xg*X)!uKqwCR%P*h_4rLDjAVeJb0Akq%sR$?ne&~qg@mnM&gpyXvd?Tm)_9~F}Ug8MpOrt zK!Lpr6vKY0P+5%V*MLdc+m+r3v{3(?MU)&>f7(r{(VflnFq?ae@Ed#EEvIR3 z$j(4^1Qn4$ye|fPBSh+PBhXAHbJ{9?Nwj32xA+2$W0otH)cRXibqvX_tJ+NVTGh0w z5k!|(t!CKQs8v0{b>KOnS>d;VnvNS zsA(n7d;UP5t-=)+zXx&8q?SpN;L1>WtB z7E42BSU!y`v|0$l>h;F}i~bmGMndqV95}dmUwP z(ugQ)3VSIu!_CHG*x|D5>`u5%@N6=uv9LkkR=hyg*V-ZAR>9mXk-&n{#ApE+ySCO} zZiaY+iU$@XV=S>JI>v$nHrvWGkIE*S!MOz9SYSOIAtUl8-D|T2Mh!)(!~6zY7|UWd zn6OOeVu_b5q&e4XZU11m+nSY$?9A-3iy;dM$bDc%gZ*VH(m&5$;r^V`OU@FxGW! z5jVB43p;fsOI3=sQDwmXr)3N@`f-+c{rrFb_x~~HPnMB6G*2!;HIKTr&OWhNn`qrL z0>hNKa-bbu)$cSH@j3)Fv|LBU_aYO8ek~Q9<pNqZ(wj%Otx z+Zy#x?^Rgwv|fP+f@vx@qCz|sLYfm~WcvU2fB&CKZpgq{naj#&7g?nzA}#{k>}#18 z+Mm=7 z2}`!^LVKRIh3t-vr-S3hBGU?(99)UwA{8`|15JYdPnhyCi|29527UcApHd?UjQ>CO z-gLW-8*3E(Ur&LLbdII8Sk&O5Ki>FTpJK_0R(sHul=SK4_LV^vNFuH&g`y<3<+ILf zoYy-~au+scR23)DRGe1*&=RXKY-|7<8+)X2Ns2Q8m^Fe|Adx;Jk=#OBk7A};E+DP> z6GCjj6*{=NL4~SZi@2fNfz4&*l3j(C_#V%3ffG`ag2}_azzMUdft1_`nl7Y(c^<}^<$x?>GuT_hO%wc{!0Z%%IQ>R#S3We8tk8pATXq8JwR_xjK%p8%M=5wI7*K% z@wgN@(o6BWQDW9cZ)};_0+^@ih%m!W)r;H|C-gPNSDxHTlGm>!werMO^6*-duu5&1 z6;E|nR@DsJ%95&ez*i%vS_0CA#Z>D6wN^^iZX@N*A}&_KVe!1=Eb(ZH=#by81NW`T z3VW7;XUZ?a%MpRqkp8VwZruEmY9i7@dqLoC@eM6|19^wJRL(3V~|^V07{Y=a-5ShUZ&ps5nH(Wx>MQ9*JJ<7+%+ zNGTw;Z{MYyQJECv_AR+0MIgITI?i+w$6E6%opO4Xp#rtI1?+{mvp8pAxD*9Q{->ES zaig^j9lSQgbx+`3@x4TNhsxN8lu7#rEZU(A>HDbVFQ}~fw6UYI!uHh3Vmmb$egXHu z;c}sbyQ@|~dA2OPgCUbK2%kNDdhmpA@=1DF`|fR)o@H675d<%PVWd#yf=1I6Fv7qQ zCvd!pS2QMU%1V-0*dADM#ngJlQDki5&i`?Kd2#aQI0%Y9hWJ?RwlN`*DE}XD1qa_S z;}a<5`Thhq)jrK4q(*?GqTFq4Ax>Cq2jGCUS&w`dAe6KG*fUkgS$^nEcOcBMA{{PB z9?c+oc5Lcp84{svQZgDD^BiINup=V&g7}*j9J2*soG^|_K?0L!2pFL@>{#Xss^x|r zXRJh0`5*8f(xN~PgHwqy7AgW!HZL+x)6mJ05dcBO(~~1p>5bS^(n9bt0}lnT7e->K zpsnsUzXW%A)h>MXt%IOdSYYgpA_u-b2pGHqhc(Ww!BrP_4dabz$6onL@m`#SfkfZy z4g|af;UmoP2zIqZk|B;+0rhv(jg(%Icp4h=CoQURA%J_ErDO;FoU!sE(k8aYgz*$V=YZ$uq$LxE8F1xJbz}N!Z8-KK5n`q+6`O03#mvgAz$4PV%Hl~vSho!* z>Zp+mc@VriHLrU9Kx!wNuMcmc`73L(p+xOupBCA`n(THRUKhq`?FfV&Yz1gGWgg6I z$}Eui_gaY0r)&cNx6vVEbd(~DMx2y`O~!CYA>;)cj7cQjOuPdhKHn6W*u@x2c@OeD<~%g&BT=#UJNHODoK&hRGvf9KEl!S9qe*|Ig>ArP)n#BSe1X`4W2>==VXwj z5mPsVGK)!J_GJeV(4+Uz+e}g}AqF$ll&B1Xw z7MJDfC^$)~>!uv{P&Xo1UF%~f&PKC45^VEwUCEmrza9kcLOv~M1{aDLGxiqlN|}&x zOA$sJ<$e)!6k4tj#*kb&MDUgGIv9ve)#>PvBVk0@CsyK;g(5m!)QJehN_g@AZ524V zjk7Gj9Y(iX<6CxnwH>|3oqv6}O|KI2&woaLN%^0AoBw@O(>T8&fnS_B*|TE$qFYQ- zOLppyLb9jYTm{%{NxM5$(|$cd&Qbgd3>+{ZdbEmy{E(`SAsvB>nmB`? zQ4)oGYRpH^74Qe~V#?%uB%dTHiOVD;qx{)DO?`uzrs* z=}H8$A7wPb*#vSUZg&5VR9Fa^#*UV32tu&qNh?r^KN$~AAzXzmz>ijUwe$P$02h@7 zo?g+2;!ZReCB`chW?6V{$pT%cKyNR65*~OmfX-T8QrQ_Z&rH=Ls7M z0iT5`3uPP&IpdEJA^{L`ZmU( zST+^$8cd7K#mb2}))>vAHe7a{Yl~3(>KOYV+sRUKj|VnaNO?t!I9Uvrw)wrV)C-Nv zrjbaKBrm6Es~nS55@V$qF&%}5>v3u{Hz1 z>M>VMqjWBNyGl!A_dwJ6J(v*si}V1mssZ3_^d>Z=363o_aY5kXqA;Hlaiiw9Yfk$B zqF+xBkx&(aH483FzOrE{fIvgpkhOXHXR<-D!|Sy;W)(&fU?DDpTNH_e;T@Q?L+pYQ z7bS^cIn8K6+38yCL?FikjK*|Ggg?`17S&2^QS04s2<~`-uJ-U=Fw}Z09jjYbW_#iE!*Bm0oQ}LLzI}Ie ze0lor?Bd0vEx!5&C1-a^)ae)-awk1XV>BW!Llf#`=r@+7IWEU9TAxFflL2@+v-i6n zLgo7XrKLpEY{72aTrAt(NKQ_@aq!A){iC5JNnjwX#N~vATFcAd$sb?9d6NvrnX+Ae zBw_45(r6EK+8SpDUuQV_5yzbOD`w3iLWuAA9y%$(RSItI!fY|2>7=xH7Q0Dwa;mrp zWl*8$xn5}&ADdY`KR)~QANEcMD8IE1h{M1 z1TkvWI|RL0yg|{{PPHB7$H&_W&t#}~5J7+W(rVm*j>gj3a;;w}qotaFz5VCmZnzun z_5O2jcUL)(K;Scr(6*#5hNF!`+!)#O6C-JnXhW&H1l$mxWCm% z&`fv;h&y!9k=DD+@?@Y4VuwTQrl5n4Q#L7xxknCSO48Etm{OtlRgh+IE4-puo2y`9 z0JUwR_nWBXMHUkg%7QVWAo}?6xR(B%h_<18$$Q{~VyI6Bm{Vr$?jH)`Z?z|y~BB`*?*CjZ`BNBD`Q<0!m&91bcuCJu? z1DSwe)j~Ng%1$<15K1e9=R)O`qw;H=JXqpWWd5v+QdVeSas-R~cn z9v>?&2TP5*nw-Ce#Jj~pX$kKgyj$~eVllYeO^v5E5-duqx@pOODp$(d1{&7Mg^BCD zEXtr-EtZ7XnvJpQa)@axgEhnJVOI2M6p=JUzc2|vDB?atC>VmHmVcRc8<&NvecLgT zRe;{=8P)xc^}b{O4b*&AMYmHcE!LKv?AdXzx4kAxJn~<;L#aPgYv5HN-5;dZlCpqa zaW3vAu2byA2rb!UbO0lD~qWsS}z25vQ26Sgq*v9V0qRq^Yi z8l97p>0`$a+{%ngk>o8uMuHL;3+WQb1Ed;%#Qwjw$xQA?~R zO$FsCZdGZa@UyfwA5_}=vb`)r;k2wKzrg8;pshic4scm}P*~Ma<;}K9#7~Ea{EoKD zX-?h^IrG&@aQ?*)3KFH)77-aZ#~^bN}~$~B+$OHsxc=b9qwT@5}KfzUTA-V~U0=vFp%#dbfo zwXxrwTVwA2y>F@h;?G_6Khnpn$YRo%4s34z$6Y`F|MR`45Ba|~^2qIh(+F*m-;HFi zj|WO#R2CDm?R>3O7|U`(0Jp{rxC=?`Tor5}1LsKnD~xe&6R{S$-lCMI5lKt*1f-fu zcg))XS~43C0svpp?1lamIH+o$wZa&pau(!@l51uulzCIq0u}1kb>m}tMlWmv#_A$C z=ltFp*u(o?#1GHP&l>4}pQaH_N7Z9s9{oSqJ8GVj8~p8ax8<>@G>5l^NQLR&O43HBJJ`} zfYiTY3~u15B|EB9R)q#$8CQNKBe#cB=&sLQ>A#L0G9wxAZ2Et&d+@ws|MhJ5f&bsg zW0Pu}=gd&$BbeE9Qm&0BcX#_@s(5>|ulXpb7(vveBhzM@dbA28?(yMWIkNqUaLnK$^(+RJ2|vp+ucw zN@X_qQ<;$&VEolob3j4JT~T*iRk{~7X-1;wym*GTO?DCL4)a&CTY{ zwp|=JIQD}v=#n)tC09mtb!IDZUv$};crQj7e<77ivEvs)7vBMUu92K~u#IS%t88w}YC6WXx87@IO(icOhQ$h#tV zVK3`&8B~Iu3N2<4le;wEj*BO)y1XQcM@~Xx60a_yNksm zW7=tlsG3H7t2sq9YV+|n_OJ`>?>4nxU+q{wUv|v4S@$z)ucBsVmvF5ZAA;$v2sTcZ1eW0AMIu#@@ zxw-htnzOg6OU#YtQ&Y!M=8mD1z5LwK%F%>Yi`DMz#<7W< zZC(GZS~s)K0Ta^b^Jg^4b5hJ1wJ7d4QyU1WalO=(_8ZKrTwHBac|B7ohgONW)Yy(+ z)NjfU)703IThMK$8ivX|Gq;;t@lU_syy5=4Y`BJDueRg7#_qJ`ytY=~b6!Jt*mPb? zvvysD1vRmzyxr+3i%s=axlM1!HO0NH-+Z$!#7=d$T2s_pj=cJBbL(68#ip+dBBS!s zjX`PSy<>tn4ZIy>2Z*e{c-COgi?H8d7**}YGm;9IAQQ$?%Ou6~hv(mhYerWsQad;k zjDNFZs|;<`3%x){{4M~bEcs{~wLDo{%UJt0%IaF4EZM3vOOo8NnW?RW6nw>4xDU;kwry5x*Pqy$ zxt@Qssgt&Q@qR1}S7qLFdeQRJy2UxK&aJ}AJOL{Vy-pqsvq(CgNVq8yR!swwoRtN^ z$%{%jr|ONSTd57`>*yFr9p1@{zy9^Ff31`hG^;bDF?rD?<)G`$fh^Fq%7LZDQcPog zn={yoWkyJ=C(gtaZdSWMfwI%1idkm+qV~SdOz_zVzl4 zF7XI``SRavjQ5{Dn^#y2vE|P#`4P&66r=QmN)PUxlm(lagx*-6C9W0f3+4As5J<|l=MYJXLG;hO<)Llj|5=8 z80P6rDaO-9DZw&w3R_Asr?Cea#+qdql|lMD>S~S-vRMJv=y-7t`mlK`!v*oqdS1)3 zcexIl)^`KrSh1?1LuA<_RlS$zcsJ{|D!FZ)ZWm%Ttw0{3p!Izm8v@tY{{Mz8e2Xh&gSOAIj`a>c&!Q#7XeUIbD=XCi;A=^HNFkPinEv{eW8}CLeY^AihkQ{wy;Ut0 zn799TpFj8Ge>^`pc-a4&cs_sj7qpX!j4z^2rvo8@bAGdVghYVghXeG_@!WO)r$YWA za)LMT0Q2HM?C8KLQ;jLZ&Pr)HPTEKBw z9oKmMe#0`&lc?SC8Haqn>PhU(i)l`DBgfFB{Be@1UwIatZ^%pe;R^OgdG1R8tw58F z7r;66|JjrM3jN>Rd&vK@k>~Rw5m6h?0gLX`*E5AJbA*;$FZ}ozWCh7sILMOj)gHvK z701Y_ZsXq0kou^!Un34h&4JQ@PMzD{dm@(7-wl#T+oED z5+}B9(fhF0{#*`0_9bcOn)(qZ`h~FPvx%McdR=`L1Q;lq+7UUdmz!9NA}ick9VC@c zcY;S6ot9<3@9<|Lyuu=^I@C1{4ryGH;!NbwcAA8+Q?pxiDqC$r#@#a#(E?&cE(@qv ze}z-fHIx*;SH%0juRP+;_kWgm=EZ=YC;#2uJ*en^o<7|FH}ZTo@qe`?ofZ4nd6%>N zSV{u6!k0M5eHzn}5*8kwp2&+n3xCFpU;JV^n0BxB`lQ5r-BWOo2fI}1BDHNU`*wib zg(C-7#R7aK-YHf*TE}%>28(yYvOgv_B}oB2k3R%%vhl}x7Ad=5z#1i@kc`02pZAX^ zj5sx|tKfnc!RBzk_q_xko_l=OO#f?Rz|YnH?RoOwgS~^@2m7CmJoiff*Bd8(O~=4m zPJz3Jioff4Ob~Z|L^OnPzne(??uyxmQ|P{*HPHVVmY?F8L;v@mRO~;VKG}QnK>s)K z{9)+7Tf^u9-FkltlafVZ(JO?1g;4Z)L9b{`MkMM9Nlk!I8;JzXgRCIZFA1DjSQvPI zN*(lAo9RDRZi|5?>3fB&l>6c^PAx=&#Dj zgTHV*@?`iJ5o7hG8I$(JvkIIV`mSbZ4v{9Myl49bDEGrFa8Nv)*lQ<5c0e&m&p~q*u*~4`D7*v|CX*#)49bAkl zlY0PR#yGx3qSY+ojTHn<7)?j$FwYN*Br8yX%P|LGj8k-e3~e>{HOcdsBqS|yEH9;Y z(Ki!TLUDm>um{zWG_^8t#2GG;!J7|t#M=qAGSb1Nhs_}q9MC5FRMCaNe~re3O<742 zwKyL54)xsi{I?uz65PNF%$5H=tJr@(dH#_9Ya`DhzFbYNATQN9P=6}l)m!VXN3;US z51rFPw|@bmQL9H)61Ky#ENFjH+WxtBPFJNGY6u~&`tGT;62>)`P5S2RN(sK~LEJe< z*nKbChi6UCUFpBFm6>%1oOl1*-LLrn?LXxI-OS_Be>I&A7N45*OG(n7;yQM(7XA(R zr}@zY$LD-Ax*pXue}xkoQzA6(UQC#}>ZV2&9Qkcp6TxjpQ&SUU!?9g3Q4hQ}Oo)Ws zzJD#?y?~6n`Bo)KsndMxZ5Ba5z82a>TWMCJEx46dN~f~i_BOJ@NUFEB@TiY7Y&J?T zPHb$!e0D6EDyb`s6_v`)~TJ>HNnsLETFCze@h+{pZgP9{m3{@+>I- z_3{wPuYRs)pFL2DrWLt_g%bzgfnQjQ(ML1Gpc6N)k8k)~3Cia6wMvY(y69|+A!QwL z+2#zu3e&dl9aNtm@;~40Srh%A=>s^2{y*8@_3wYrpFMm2K>s)KH2eQ0t2qB9clG>} zC&ztz|NS9c|B^qT-(ND{>CYnxa~=PZCa=FmaPw81#qQv4n0!ONh6}B|^}7L*J2>Fk zo^&&i@A=;?GSGYReM_p2Z?9-fYTe%Whda5`B=_mnmV8}@uH@@_b0wQ{c}niv-znLg zv(tmT=@0PSmH)pYMM(!Z&a((l%8U(gO#ExWJpIp8U;cBjx4-wG|Jlf6$$#eA^r`uE z;y$&u(Uu}3YAu{*(V z8i2%?f3i}9$-|EQnrD(#wv`grhZlA|Gw z2@Adt*>xU#ANKL5;QO#l^5Fab6|~W>xS-jDp_8Ly7KGBeJqT$;a95NovfsW%3b5M# zKRZ4=dUG5m(L#O9+5gX;Joo*74)*sS{Qo!dw9%=aWb`(R2s&0AU0{7tGmnN@fyTIq zu5m%&*6{9J3Is$UMk3UoqVM0H{7>|W6e)?>4!SOAS&|gd6#bNm{hr5@(THCRWNkFy z4A!8`3Kj+dkQrEnsGnseD+`=6gl$;gJHUR}l6g8uv>Z?RpjR-fx64=Wr5eLFih$){ zq(oVYFna$tE&JB(IO6baBwd`P6Gk~E=>5+mPDF9m>vs8p7_#xUqLwJZDISp`41#tW z{X|N1W)di#q{A%u;XgVZRFa!ArfJ!UC~X7A!3FUigW&R<5cFPutBkW7WdjC3;Ljy5 z)ZK>F!8_y&BgzI7a5(`_*Gq4_;#LSlY`4)#%1Ru^=p~0Ks0^CQ&+pHUUmqWyA78#b zd~^Jv76pwo%O01o2%m@?P9L_~>NibC+o(_C>^i)3a3BGgiw0S44kq}Be@W@=F;CL^ zQHycF1}R9AT@i+OA-*KdGUi?9SxVB9ACn~hQtIj5;{ZI zaLgUNF1g6?^HG6;yJ#9d6d-q+a@6Tah$@R(Ha~w%qTKuuwb4O%!&#^&;Y|>nm$)eT z=!Qj>pev~feG=}5yE}mDj~q}itHg#sdLs8@8uCV)0h5}#)fEOscPSIe($}B5DVr29 z&kE_~n9u@!RQkk^Xh=yMF@y($tl)b#p7P@0ok*_bdJM%Tc*WQIzSs!|d?&mdLv{&X zSVa7y>8J-Q1+rLsDdwcFCQMeD%_tYBC~1*)?-co~i!8_DhS5VmXRN%)UMi`TXtv#! zeoH{^g8*p4OIQT-Uuy3GQ9?h8H7*Y)nvNRC1x?E$>%z{x1k%wSnD#p5n258sBle7< zN&K)0(M5(BAwa_Qsl*S)EEmRNK(ZrJVj7bO2`W&s9dtz*Ee$Py%+UKQA@tz*`mhyt zt)JUFe32EClviK`Ip?3EYOGhK!fc#fi&Uv>mHoz7gr8GB_(wKD1DwkFLm!)(_^1`d zU@1)o0IZ;oAH7yThUmvBVx%nf*NPXLSSTMk{ngCnHH|rm%HwQ`Fyd8&I@0p-Rej5q z;nE-lVHjLw+MSH>okAGffj1;A=>V6K;uPff3FKATx}q3i^wG7H{0PSkxxq;ulWj5i z7=5(jf_#+PcM>5s8H^ET)-G8+o=ROHm4thWLb(pWA1>=!s4{L4>i-z^J5x(Vh;=&Jf%1$YN* z4?uDHC!83Ft;oV}@vdL@takq&&@TV4W6_uyeaw^p?LMu>|9G(f+sq?(W-oAESpIWw zcR#RljqU$g*89WbK8x=EYnn#cH8UgtSfsh3f8d$7|DPRH|YE8WhDhyDicdeK1 z++lpeUlQke%sE7wrNNcK{Xw|537Wg|{$K3qhiCTw-+%UO-;e+CY-MPGe(m*R!-9=!?#&^S`bDcreZ`# zgq2V(5Etzpy6r$55~bk~cN%>!ef(a6!anRIka>Ma-#;G*Ro^W1{zK5#X=8<7Rfj{= z5ka=-XbtXU zp%qSyP^gMigo^@CQ8q-MC2`diz97iBzV+#^occ^-BBT{|9aa`#g1QA)Fd?=?pu`Xr zM3?qx5UTTNYg^fN4FG$MU-sckRxH(gUBhmZwG)a^+d^E93zC)!=VgX6TUAVcaEkdY-2u`ursb+UQU_q#%-B(IQI| z4z0D_$5;wi%&wOrLoEpoNO}bgw%dF!T=n1|gnm6dJ30LE^>I&7q#!W+y$51G5MX*+ zNX2|Z$aj{3E|43%ha-r;GTt!iO&h(YtmJDh&y=X0LyjXDfTS`;9cs|T>uySB4Bh!o zE_@LM$nufk(7+4h$DnZGyA{Ao;{*WH3`1&L=J~&zz2=C)QbY!G%*NRyj`%E3_#E@Y z1B~HmItpbA0$AOO#`uxzH#{K15~jP zosr)sv>?pZC134_2T#LYP>A7vc10Z6>)c($wo&UY@U8R3hORS}S6_@<0-PrmAA-GI zX3fA1_qs##FULOLVjen`73G#XWjJb@eet#{Hhb2Tor91JoVobwq> zOHn#W`lJBb4PPR}gm}#*4R|mhc}XG%-^}#UL%X_bx!9eqvFQ0hv~p_G}5@~3dfZ5KhENlM%HLQ+F{Y5{ec=E)La}m&fBP?MBV?GV$h@&h~byQ8um$aWbuIlKRbwo zqfjg2upBP7hD!NWkXUhMQF02Z!>e6 zMJP)p7Q}H7HgZ~`7wa6h57)+>T6eUHmNYNK@ucxnX7Yb{E$ueKW`;;k%hzFt=JP=a zsqHQ1z0BaESZ1i;j1ajJd*ipPFAgQXBi#ikw@a-*df3Rbp99C+RROhBzg2EjvBoV< zr4{N=aS0nlo=wV{5v$pU1e>j{e6KtGQ9BG{5v({h3hOd+b-x_zf(^Id(=3%o5_-cg zwlp1Py&4-nZPz1C3Yw0(4hieFRmTnNejCYjny@w}0>FacNL~a`$!`J=OwH~_fDRIp?8<6F>iuXjHCn79g&pR zB9T?BgLBIF+WwPnTR{AYOx14bTKpcFga36N{X^X?GxfvWq)FK4gsz>eL=aK!+i zf0@hFTqhA&jquAZ86jy64A)nFq?4kzzxSU{Lv$q577C)lG#4T7##!CWI+tM4*NO61 z=lm|5)P|QbcWZf@3DL;0O{(;|1GW^Th*m!Z;V{T}{H3Xr3n?tHxAF$a z&nnSzCEcnt9MhdkR$(yCGA3olg6RL>|NVaq-;jbJmoj6XB}k>kB6{got$zM4$5Lj> z{^{q7i_?952#SL=w0Jw222`WzsK|1-a|q557X;>{5cxSnwDk&1#dgs7WH2BkBGI%mDHq$%gQCY3N7(H4rxP4NeU(pd&nYcQ3ENw5j0)M z0`pv0Kq`@jw1w5IM%}Rn?#>AYcf@$g`CBD4v_n0Ji{+49BYwMxa1q%Is<6WZGhLJw zbVO6L*M7_Tuu7#wm^Vxr!dIBau*|L~h6R0jStj|Vp{19G35Vmm)`csUy7C3(eZ-jV(4?0P{2*5oXw_da0Y@gubQ(%M)Em^7@qoSDwTQsYE4f zkyoh=v*M}limRGITUl7O4)|(hRZBp+u%v1opwO}=8lkfcjF5j3Za)YW_HPyX>gJbJ6OkU;3j)io6ZpY4`a3}rHUYAx{S@F#;u{rM z1%2Kat56svzwi<8GT_V-=G$VBrEEYm5CgRNQA`I!Gnx}dicqMZam+GA(?LNnKdT30 zoDK+63bSI8@;P&*Tl}bwX<5cZO6w#jJIaz4y`d@Pryp=S(`w=(ShPbK(lw8qf-j`Wgk{dvmR1FFaLu&XT<5ZFHIk&h#om@(2T3c@~(BUr^ zKfgOWx%kIF|0xm`3EKf-0&wni2Fyv(#}GE84LB3nk=Xhla8CtecD;fEDff2fCTN2Q zm$?#4DFEZJqg3SB3aa_Gf;KuIV<9dUWpgo5baG@Q0fC!?i&Lya#^@+TSR``-h2n5X z!F!Pn#w40>8U$IQSkP_<>Z8yUOL^0wdI@h3EOc6s=m>l|&UG^<;O{M8AK#F{L}Ypq zwM1LzQZjHsiiDX@kY5UygYhe1y6g|)<0mrhY3Uk-i1CUbq^_wwbdpv+3UeF3UD38U z**hG05P=eO?p6e0A$!45MC!HDoHq~hEIM?947brMdIQ81MEi`h)Ia_0*f_Te2Oz#! zG&4%L_w=>HBY1`BNnbU6k6wrncC4Af}KjtAqB!{qP`s5^x;gVlXE9OUm{_b~OmqTt``gX&OpL2w5nZ zhEd8wQ8#3h;gH@0ZRMV%n-T$mqO4?cLBsOyq1JxODMF%@?YeZp-h>d?S_wH3M&oI} zppjaQoF3Sv`I>fDWyX5iEELW>_cI?u58)(w_9O_(EGC87934bJ6VpR)Gf6=Nxi-7_ z_=d8QxzL{$Gy~!sW5ys>C7(BbJ(t{98|8ixA-Zlm`V-@Dgo_bKvVi;%zMBqu`a%6GzX;Dg@k#$Lzo|Ta;sm)>Tgb%%&V<(pIff|JW3rtzd87vqAkaTZ5CbPynr75zj?$^DjP{xiXmY8h2+(bcZM2SV zImJu|=-C1MOOtcpM^UTO@?!A`h+m2eG1ff{CviMQzfW*1)Mq%)kuWXzI}vR|`I7g* z$Hh>e3^2b=gSC_;ix>6_GB83R<%G)0nKHB`HQb!XPjSN8S(cN*b{L!t9TOXM6e*W< zA>c4FMX;*{(HI9_Lc0{QO`ODzNgt!|>pKQ0JT`t`WDaEXdj9_-7*FrT;*)G()R+;C zgl957jS2}5a5^uS1Wx&Ue8)QA_2IN7I$eCp)&J`(L~DlmPEv7UuuzXGqXaB)DLWV(x0spfT%xD}yJ>pYdJ zfL_^YThJ}~eUg==X4Sf3;gw)Uf~y0fR_j?5#g=*S&)QtiM!mg-n>LLW3aqlIe5`e9 z(K0jI?5xSFHl++g=Z@1Q3I1uSq_Ef#jxRg*YTmRO(qEs`%{!B~7Q&1big&xI{nSQ< zMTB)08u?FSTCjA1HFIJ7{8m65)U3r7dtR;(X%vw(M87ZzLnvGU z!B&{y$UTB8jmyH-zHL7{<>Xa8!MfkE-goT3zq4}e)K+vmHGY+7%R8YhlH%4W@o0M{ z?Da=%4S))U4T5H^8w<)6vAr2oFM!prjnc(A9pS!MYez1HbJCMBk_M;ABrd7Rvt>+fK?RqAv#I( z3Ha+Tkz(|-v{oHd+WWG-0(amvuI9gh7>8SfEFIu-Zo1W){H7*}-Vl-B(N;Ol$-5zE zrdkQk-wXfu4`5F_(#+=WSnS!ghr}wNH|`hi-Kfs$=oh zZ|JMf{~GqcHoR&g0dw?!&z|pB^nV9W4<7daCZ4+7Tz+1zKNS&Z*sBf^s52$JD-}?A z{^sPCUSdQGBz&%n%<~YivY*-h0ZXM2RD__Xd~Y20@H(YJ1*`n2V0H!=vohbs4l?h! zKy*iH_7Iw9Azn>mt>o9U>Y?V$eV(nkDOqELzB1OT(^Ro*v=TN~>>20eL!_>mQD7{c zl^vM$0PGBDL9THe2gV#)nxidBE~E_K0tZ0~M~HC`5z6!IniP<_OvNgf^D4|NQR^+a z?z|=CD+$ZlBqpsL)ao2jmdAJs3Y8tydhGZ8SeBBuS^O7G``ILo;KON=4XJ4AFrC7y zLtPN$rtt1{1{n*BlK*N*ijKZ~QB6X`1ODUU<*7ZM%8b?+eAzgfzi4VEwyJ4be4^^K zRMxBwW~`T*V2^8EEm}aMLOfd2Af)0Z{-awH){ymE+3N!5$7lb=cQ4<)y*NC1dwh0z ze)#t2$9Mnp^3A(n-djWhF^F zIEo6w*o$8CdULARFRsI4#Og}cEUUf!x`NKys_m!ADaNhVNEw%as1_awQ|LD)q<@b- zk?9V4B)kH9FAQeVD}Sh#K#te)KWpQ8{#~?ZDeULs3{o@tYtTplYi8Fa@9MGA083Mh zMOFqxIRKi}Ll-Ykt#1_*Qu9;|F|FR5dZAy`@87ZBbYCkwPVbX7g_k?%(HKhEGw1>! zI|!{7t2nS{STv}$*9bMvwJa&7yi&AwvXKr@)AipjH*3nM_48*m$#YW78NDd(H&bg0 z+c=dqrTqpy6WYe6oN|66Rh!$!cKo7#Q@){YV?%C1x0$LTvUz6i1h?XSYy}U3f49BR zF#OdvgV)%dc7xZ}>f6C<=nnhAYiZVosGRaeH7PuDQVOl@K)ftU)4cq^Mlh) z*>@a^<$|`6F|3Mmse*2XaUtlIf~zXfkUnY4-afU4JS%3cA@9@d4b;5mjiSxFpHT=@Bhla1#>I zNzy}aAcoHxApEAVTF-1P0_MEc+fZ>8yjD4_MF14lT z$NuNplP9~r{{QK-hx}g~c^0yclu_mpI6fJB0gD5uuV;lvzcqe7jhRPy`@;6X%4l%E z#s~Fws$a-qZ$l8b1*1veNByZnQM3_jb3r*)lq|OvB{0Sx-re7OU?=YFRIoh z1X#jwWWk=j>3A zwT6~;A^}s=BcnDs`sqXXuzrw1<#y)9Ys;?u9OKbKGN;?u9E zA1AKAP3)X-|Lf_?j+w6O+Ofnpuof#(#!U;=0OWUp$H@a=acK}ZY$47a>Y4_kS2zU=oG|+wgh2kQ;eExs^tbq|;r_4qqecgyIrsnly@UN~ z{I7@m|3;o#{~u|f{O2eo8yGg{Q< z(-o<#MVzr2*R_Xd4bS?{e;Ki=h7Fi={_h>^KXcFjgWV^)dk^RTCLT#9Ig!-XcYQoi z(ZCv9ndH}wrx5TN2wD6Ne8dbVk^AQ;7I7u?eZbb|P*`IO<@U9TIZK@(%SKID=8VCz zXxT^2;Y;p&SA9Fr`sjbN4tNgzf3m;7U!ng8`w#Sg6Hl}L*T4TPr2I|ps`+&jyx;Q; z^pB$YP5yv--(gDcKL&yIS!aVBW(6AKBD%(f$Yk^GTxTF8kWmvg*_rOmdYqe!HqDMCn8_Y*16nF-5(k`A*V`1tYTAWK;m6G(`I3X+SQwRNLFs-wD( zp+o`A0FI7~qHkIi!QXg~L2!9a2zviffBaY(L^sL?41U0$OJ1tG4eLQh*g{b@fb^w6 z<-&Wj$FGkM&yO$P9=1Z4E zNt|7C&_r1qhPfk_`7Wba4`;8`XWI*L%a}QT2=xwou7yy%vd&{kPIF6 zlu055u#p%lSUDL&XXqM^xr5gw7a0CagYh7M&P3K@`Y*Ll04?Z8GUP0WTp~0bH9$er zvdFry%Ps+;_Q15)DaS;t?M@%s>rma^c8D%A#0UW_>V?5cj?7{#uojUL)0jj^CiQ1K z=!!C08gxEp=)FkW4MOe@TVdDwxxIt30u_^#S75};>?~2mdewEn#@V$@2fo^xzwa~T Z;dyu-o^SK{{{sL3|NobQ`HBFHNdQxP5|ID^ literal 0 HcmV?d00001 diff --git a/premium/prometheus/17.9.3/ix_values.yaml b/premium/prometheus/17.9.3/ix_values.yaml new file mode 100644 index 00000000000..6f93d04c33e --- /dev/null +++ b/premium/prometheus/17.9.3/ix_values.yaml @@ -0,0 +1,1260 @@ +image: + repository: bitnami/prometheus + tag: 2.50.1@sha256:96f94a8ceeccb67be484871bd68f061364ed53366492a53cb369744512822587 +thanosImage: + repository: quay.io/thanos/thanos + tag: v0.34.1@sha256:567346c3f6ff2927c2c6c0daad977b2213f62d45eca54d48afd19e6deb902181 +alertmanagerImage: + repository: bitnami/alertmanager + tag: 0.27.0@sha256:59674055b5193e9b41e687a5174e90ac9d5f0cff896fd695d11af255f7f99de8 +global: + labels: {} +workload: + main: + enabled: false + podSpec: + containers: + main: + enabled: false + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + +configmap: + grafana-datasource: + enabled: "{{ if .Values.grafana.datasource.enabled }}true{{ else }}false{{ end }}" + labels: + grafana_datasources: "1" + data: + datasource.yaml: |- + apiVersion: 1 + datasources: + - name: Prometheus + type: prometheus + uid: {{ .Values.grafana.datasource.uid | default "prometheus" }} + url: http://{{ include "tc.v1.common.lib.chart.names.fullname" $ }}.{{ include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $ "objectData" . "caller" "Configmap") }}:{{ .Values.service.main.ports.main.port }} + access: proxy + isDefault: {{ .Values.grafana.datasource.default | default true }} + jsonData: + httpMethod: {{ .Values.grafana.datasource.httpMethod | default "POST" }} + timeInterval: {{ .Values.grafana.datasource.scrapeInterval | default "30s" }} + {{- if .Values.grafana.datasource.timeout }} + timeout: {{ .Values.grafana.datasource.timeout }} + {{- end }} + +grafana: + datasource: + enabled: true + default: true + httpMethod: "POST" + scrapeInterval: "30s" + uid: "prometheus" + +kps: + ## Install Prometheus Operator CRDs + ## + crds: + enabled: false + + ## Manages Prometheus and Alertmanager components + ## + prometheusOperator: + enabled: false + + ## + global: + rbac: + create: true + + ## Create default rules for monitoring the cluster + ## + defaultRules: + create: true + + windowsMonitoring: + ## Deploys the windows-exporter and Windows-specific dashboards and rules (job name must be 'windows-exporter') + enabled: false + + ## Configuration for prometheus-windows-exporter + ## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-windows-exporter + ## + prometheus-windows-exporter: + ## Enable ServiceMonitor and set Kubernetes label to use as a job label + ## + prometheus: + monitor: + enabled: false + + ## Configuration for alertmanager + ## ref: https://prometheus.io/docs/alerting/alertmanager/ + ## + alertmanager: + ## Deploy alertmanager + ## + enabled: false + + ## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml + ## + grafana: + enabled: false + forceDeployDashboards: true + defaultDashboardsEnabled: true + + ## Flag to disable all the kubernetes component scrapers + ## + kubernetesServiceMonitors: + enabled: true + + ## Component scraping the kube api server + ## + kubeApiServer: + enabled: true + + ## Component scraping the kubelet and kubelet-hosted cAdvisor + ## + kubelet: + enabled: true + + ## Component scraping the kube controller manager + ## + kubeControllerManager: + enabled: true + + ## Component scraping coreDns. Use either this or kubeDns + ## + coreDns: + enabled: true + + ## Component scraping kubeDns. Use either this or coreDns + ## + kubeDns: + enabled: false + + ## Component scraping etcd + ## + kubeEtcd: + enabled: true + + ## Component scraping kube scheduler + ## + kubeScheduler: + enabled: true + + ## Component scraping kube proxy + ## + kubeProxy: + enabled: false + + ## Component scraping kube state metrics + ## + kubeStateMetrics: + enabled: true + + ## dontDeploy node exporter as a daemonset to all nodes + ## + nodeExporter: + enabled: true + + ## dont Deploy a Prometheus instance + ## + prometheus: + enabled: false + + ## Configuration for thanosRuler + ## ref: https://thanos.io/tip/components/rule.md/ + ## + thanosRuler: + ## Dont Deploy thanosRuler + ## + enabled: false + +service: + main: + selectorLabels: + app.kubernetes.io/name: prometheus + prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' + ports: + main: + port: 9090 + targetPort: 9090 + protocol: http + alertmanager: + enabled: true + selectorLabels: + app.kubernetes.io/name: alertmanager + alertmanager: '{{ template "kube-prometheus.alertmanager.fullname" . }}' + ports: + alertmanager: + enabled: true + port: 9093 + targetPort: 9093 + protocol: http + thanos: + enabled: true + selectorLabels: + app.kubernetes.io/name: prometheus + prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' + ports: + thanos: + enabled: true + port: 10901 + targetPort: 10901 + protocol: http +ingress: + main: + enabled: false + alertmanager: + enabled: false + thanos: + enabled: false +#### +## Operator Config +#### +env: + PROMETHEUS_CONFIG_RELOADER: + configMapKeyRef: + name: prometheus-operator-config + key: prometheus-config-reloader +podOptions: + automountServiceAccountToken: true +rbac: + main: + enabled: true + primary: true + clusterWide: true + rules: + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - apiGroups: + - apiextensions.k8s.io + resourceNames: + - alertmanagers.monitoring.coreos.com + - podmonitors.monitoring.coreos.com + - prometheuses.monitoring.coreos.com + - prometheusrules.monitoring.coreos.com + - servicemonitors.monitoring.coreos.com + - thanosrulers.monitoring.coreos.com + - probes.monitoring.coreos.com + resources: + - customresourcedefinitions + verbs: + - get + - update + - apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - alertmanagers/finalizers + - alertmanagerconfigs + - prometheuses + - prometheuses/finalizers + - thanosrulers + - thanosrulers/finalizers + - servicemonitors + - podmonitors + - probes + - prometheusrules + verbs: + - "*" + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - "*" + - apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - "*" + - apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete + - apiGroups: + - "" + resources: + - services + - services/finalizers + - endpoints + verbs: + - get + - create + - update + - delete + - apiGroups: + - "" + resources: + - nodes + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch +# -- The service account the pods will use to interact with the Kubernetes API +serviceAccount: + main: + enabled: true + primary: true + +securityContext: + readOnlyRootFilesystem: false + +probes: + # -- Liveness probe configuration + # @default -- See below + liveness: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP + # -- Redainess probe configuration + # @default -- See below + readiness: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP + # -- Startup probe configuration + # @default -- See below + startup: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP +operator: + ## Create a servicemonitor for the operator + ## + serviceMonitor: + ## @param operator.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus Operator + ## + enabled: false + ## @param operator.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param operator.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param operator.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## Prometheus Configmap-reload image to use for reloading configmaps + ## defaults to Bitnami Prometheus Operator (ref: https://hub.docker.com/r/tccr.io/truecharts/prometheus-operator/tags/) + ## + prometheusConfigReloader: + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + livenessProbe: + enabled: true + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 + readinessProbe: + enabled: true + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 +#### +## Prometheus Config (Spawned by Operator) +#### + +## Deploy a Prometheus instance +## +prometheus: + ## @param prometheus.enabled Deploy Prometheus to the cluster + ## + enabled: true + ## Bitnami Prometheus image version + ## ref: https://hub.docker.com/r/tccr.io/truecharts/prometheus/tags/ + ## @param prometheus.image.registry Prometheus image registry + ## @param prometheus.image.repository Prometheus image repository + ## @param prometheus.image.tag Prometheus Image tag (immutable tags are recommended) + ## @param prometheus.image.pullSecrets Specify docker-registry secret names as an array + ## + ## Service account for Prometheus to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + ## @param prometheus.serviceAccount.create Specify whether to create a ServiceAccount for Prometheus + ## + create: true + ## @param prometheus.serviceAccount.name The name of the ServiceAccount to create + ## If not set and create is true, a name is generated using the kube-prometheus.prometheus.fullname template + name: "" + ## @param prometheus.serviceAccount.annotations Additional annotations for created Prometheus ServiceAccount + ## annotations: + ## eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT:role/prometheus + ## + annotations: {} + ## Prometheus pods' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param prometheus.podSecurityContext.enabled Enable security context + ## @param prometheus.podSecurityContext.runAsUser User ID for the container + ## @param prometheus.podSecurityContext.fsGroup Group ID for the container filesystem + ## + podSecurityContext: + enabled: true + runAsUser: 1001 + fsGroup: 1001 + ## Prometheus containers' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param prometheus.containerSecurityContext.enabled Enable container security context + ## @param prometheus.containerSecurityContext.readOnlyRootFilesystem Mount / (root) as a readonly filesystem + ## @param prometheus.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param prometheus.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param prometheus.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + serviceMonitor: + ## @param prometheus.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus itself + ## + enabled: true + ## @param prometheus.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param prometheus.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param prometheus.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## @param prometheus.externalUrl External URL used to access Prometheus + ## If not creating an ingress but still exposing the service some other way (like a proxy) + ## let Prometheus know what its external URL is so that it can properly create links + ## externalUrl: https://prometheus.example.com + ## + externalUrl: "" + ## @param prometheus.resources CPU/Memory resource requests/limits for node + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + ## @param prometheus.podAffinityPreset Prometheus Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param prometheus.podAntiAffinityPreset Prometheus Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param prometheus.nodeAffinityPreset.type Prometheus Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param prometheus.nodeAffinityPreset.key Prometheus Node label key to match Ignored if `affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param prometheus.nodeAffinityPreset.values Prometheus Node label values to match. Ignored if `affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param prometheus.affinity Prometheus Affinity for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: prometheus.podAffinityPreset, prometheus.podAntiAffinityPreset, and prometheus.nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param prometheus.nodeSelector Prometheus Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param prometheus.tolerations Prometheus Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param prometheus.scrapeInterval Interval between consecutive scrapes + ## + scrapeInterval: "15s" + ## @param prometheus.evaluationInterval Interval between consecutive evaluations + ## + evaluationInterval: "30s" + ## @param prometheus.listenLocal ListenLocal makes the Prometheus server listen on loopback + ## + listenLocal: false + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.livenessProbe.enabled Turn on and off liveness probe + ## @param prometheus.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param prometheus.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param prometheus.livenessProbe.periodSeconds How often to perform the probe + ## @param prometheus.livenessProbe.timeoutSeconds When the probe times out + ## @param prometheus.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + failureThreshold: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.readinessProbe.enabled Turn on and off readiness probe + ## @param prometheus.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param prometheus.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param prometheus.readinessProbe.periodSeconds How often to perform the probe + ## @param prometheus.readinessProbe.timeoutSeconds When the probe times out + ## @param prometheus.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + failureThreshold: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + ## @param prometheus.enableAdminAPI Enable Prometheus adminitrative API + ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis + ## + enableAdminAPI: false + ## @param prometheus.enableFeatures Enable access to Prometheus disabled features. + ## ref: https://prometheus.io/docs/prometheus/latest/disabled_features/ + ## + enableFeatures: [] + ## @param prometheus.alertingEndpoints Alertmanagers to which alerts will be sent + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerendpoints + ## + alertingEndpoints: [] + ## @param prometheus.externalLabels External labels to add to any time series or alerts when communicating with external systems + ## + externalLabels: {} + ## @param prometheus.replicaExternalLabelName Name of the external label used to denote replica name + ## + replicaExternalLabelName: "" + ## @param prometheus.replicaExternalLabelNameClear Clear external label used to denote replica name + ## + replicaExternalLabelNameClear: false + ## @param prometheus.routePrefix Prefix used to register routes, overriding externalUrl route + ## Useful for proxies that rewrite URLs. + ## + routePrefix: / + ## @param prometheus.prometheusExternalLabelName Name of the external label used to denote Prometheus instance name + ## + prometheusExternalLabelName: "" + ## @param prometheus.prometheusExternalLabelNameClear Clear external label used to denote Prometheus instance name + ## + prometheusExternalLabelNameClear: false + ## @param prometheus.secrets Secrets that should be mounted into the Prometheus Pods + ## + secrets: [] + ## @param prometheus.configMaps ConfigMaps that should be mounted into the Prometheus Pods + ## + configMaps: [] + ## @param prometheus.querySpec The query command line flags when starting Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#queryspec + ## + querySpec: {} + ## @param prometheus.ruleNamespaceSelector Namespaces to be selected for PrometheusRules discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + ruleNamespaceSelector: {} + ## @param prometheus.ruleSelector PrometheusRules to be selected for target discovery + ## If {}, select all ServiceMonitors + ## + ruleSelector: {} + ## @param prometheus.serviceMonitorSelector ServiceMonitors to be selected for target discovery + ## If {}, select all ServiceMonitors + ## + serviceMonitorSelector: {} + ## @param prometheus.matchLabels Matchlabels + ## + matchLabels: {} + ## @param prometheus.serviceMonitorNamespaceSelector Namespaces to be selected for ServiceMonitor discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + serviceMonitorNamespaceSelector: {} + ## @param prometheus.podMonitorSelector PodMonitors to be selected for target discovery. + ## If {}, select all PodMonitors + ## + podMonitorSelector: {} + ## @param prometheus.podMonitorNamespaceSelector Namespaces to be selected for PodMonitor discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + podMonitorNamespaceSelector: {} + ## @param prometheus.probeSelector Probes to be selected for target discovery. + ## If {}, select all Probes + ## + probeSelector: {} + ## @param prometheus.probeNamespaceSelector Namespaces to be selected for Probe discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + probeNamespaceSelector: {} + ## @param prometheus.scrapeConfigSelector The scrapeConfigs to be selected for target discovery. + ## If {}, select all scrapeConfigs + ## + scrapeConfigSelector: {} + ## @param prometheus.scrapeConfigNamespaceSelector Namespaces to be selected for scrapeConfig discovery. + ## If {}, select all namespaces. + ## If nil, select own namespace. + scrapeConfigNamespaceSelector: {} + ## @param prometheus.retention Metrics retention days + ## + retention: 31d + ## @param prometheus.retentionSize Maximum size of metrics + ## + retentionSize: "" + ## @param prometheus.disableCompaction Disable the compaction of the Prometheus TSDB + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## ref: https://prometheus.io/docs/prometheus/latest/storage/#compaction + ## + disableCompaction: false + ## @param prometheus.walCompression Enable compression of the write-ahead log using Snappy + ## + walCompression: false + ## @param prometheus.enableRemoteWriteReceiver Enable Prometheus to be used as a receiver for the Prometheus remote write protocol + ## + enableRemoteWriteReceiver: false + ## @param prometheus.paused If true, the Operator won't process any Prometheus configuration changes + ## + paused: false + ## @param prometheus.replicaCount Number of Prometheus replicas desired + ## + replicaCount: 1 + ## @param prometheus.logLevel Log level for Prometheus + ## + logLevel: info + ## @param prometheus.logFormat Log format for Prometheus + ## + logFormat: logfmt + ## @param prometheus.podMetadata [object] Standard object's metadata + ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## + podMetadata: + ## labels: + ## app: prometheus + ## k8s-app: prometheus + ## + labels: {} + annotations: {} + ## @param prometheus.remoteRead The remote_read spec configuration for Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotereadspec + ## remoteRead: + ## - url: http://remote1/read + ## + remoteRead: [] + ## @param prometheus.remoteWrite The remote_write spec configuration for Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotewritespec + ## remoteWrite: + ## - url: http://remote1/push + ## + remoteWrite: [] + ## @param prometheus.storageSpec Prometheus StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storageSpec: {} + ## Prometheus persistence parameters + ## + persistence: + ## @param prometheus.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. + ## + enabled: true + ## @param prometheus.persistence.storageClass Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. + ## + storageClass: "" + ## @param prometheus.persistence.accessModes Persistent Volume Access Modes + ## + accessModes: + - ReadWriteOnce + ## @param prometheus.persistence.size Persistent Volume Size + ## + size: 999Gi + ## @param prometheus.priorityClassName Priority class assigned to the Pods + ## + priorityClassName: "" + ## @param prometheus.containers Containers allows injecting additional containers + ## + containers: [] + ## @param prometheus.volumes Volumes allows configuration of additional volumes + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## + volumes: [] + ## @param prometheus.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## + volumeMounts: [] + ## @param prometheus.additionalPrometheusRules PrometheusRule defines recording and alerting rules for a Prometheus instance. + additionalPrometheusRules: [] + ## - name: custom-recording-rules + ## groups: + ## - name: sum_node_by_job + ## rules: + ## - record: job:kube_node_labels:sum + ## expr: sum(kube_node_labels) by (job) + ## - name: sum_prometheus_config_reload_by_pod + ## rules: + ## - record: job:prometheus_config_last_reload_successful:sum + ## expr: sum(prometheus_config_last_reload_successful) by (pod) + ## - name: custom-alerting-rules + ## groups: + ## - name: prometheus-config + ## rules: + ## - alert: PrometheusConfigurationReload + ## expr: prometheus_config_last_reload_successful > 0 + ## for: 1m + ## labels: + ## severity: error + ## annotations: + ## summary: "Prometheus configuration reload (instance {{ $labels.instance }})" + ## description: "Prometheus configuration reload error\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## - name: custom-node-exporter-alerting-rules + ## rules: + ## - alert: PhysicalComponentTooHot + ## expr: node_hwmon_temp_celsius > 75 + ## for: 5m + ## labels: + ## severity: warning + ## annotations: + ## summary: "Physical component too hot (instance {{ $labels.instance }})" + ## description: "Physical hardware component too hot\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## - alert: NodeOvertemperatureAlarm + ## expr: node_hwmon_temp_alarm == 1 + ## for: 5m + ## labels: + ## severity: critical + ## annotations: + ## summary: "Node overtemperature alarm (instance {{ $labels.instance }})" + ## description: "Physical node temperature alarm triggered\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## + ## Note that the prometheus will fail to provision if the correct secret does not exist. + ## @param prometheus.additionalScrapeConfigs.enabled Enable additional scrape configs + ## @param prometheus.additionalScrapeConfigs.type Indicates if the cart should use external additional scrape configs or internal configs + ## @param prometheus.additionalScrapeConfigs.external.name Name of the secret that Prometheus should use for the additional external scrape configuration + ## @param prometheus.additionalScrapeConfigs.external.key Name of the key inside the secret to be used for the additional external scrape configuration + ## @param prometheus.additionalScrapeConfigs.internal.jobList A list of Prometheus scrape jobs + ## + additionalScrapeConfigs: + enabled: false + type: external + external: + ## Name of the secret that Prometheus should use for the additional scrape configuration + ## + name: "" + ## Name of the key inside the secret to be used for the additional scrape configuration. + ## + key: "" + internal: + jobList: [] + ## @param prometheus.additionalScrapeConfigsExternal.enabled Deprecated: Enable additional scrape configs that are managed externally to this chart + ## @param prometheus.additionalScrapeConfigsExternal.name Deprecated: Name of the secret that Prometheus should use for the additional scrape configuration + ## @param prometheus.additionalScrapeConfigsExternal.key Deprecated: Name of the key inside the secret to be used for the additional scrape configuration + ## + additionalScrapeConfigsExternal: + enabled: false + name: "" + key: "" + ## Enable additional Prometheus alert relabel configs that are managed externally to this chart + ## Note that the prometheus will fail to provision if the correct secret does not exist. + ## @param prometheus.additionalAlertRelabelConfigsExternal.enabled Enable additional Prometheus alert relabel configs that are managed externally to this chart + ## @param prometheus.additionalAlertRelabelConfigsExternal.name Name of the secret that Prometheus should use for the additional Prometheus alert relabel configuration + ## @param prometheus.additionalAlertRelabelConfigsExternal.key Name of the key inside the secret to be used for the additional Prometheus alert relabel configuration + ## + additionalAlertRelabelConfigsExternal: + enabled: false + name: "" + key: "" + ## Thanos sidecar container configuration + ## + thanos: + ## @param prometheus.thanos.create Create a Thanos sidecar container + ## + create: false + ## Bitnami Thanos image + ## ref: https://hub.docker.com/r/tccr.io/truecharts/thanos/tags/ + ## @param prometheus.thanos.image.registry Thanos image registry + ## @param prometheus.thanos.image.repository Thanos image name + ## @param prometheus.thanos.image.tag Thanos image tag + ## @param prometheus.thanos.image.pullPolicy Thanos image pull policy + ## @param prometheus.thanos.image.pullSecrets Specify docker-registry secret names as an array + ## + ## Thanos Sidecar container's securityContext + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param prometheus.thanos.containerSecurityContext.enabled Enable container security context + ## @param prometheus.thanos.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem + ## @param prometheus.thanos.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param prometheus.thanos.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param prometheus.thanos.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + ## @param prometheus.thanos.prometheusUrl Override default prometheus url "http://localhost:9090" + ## + prometheusUrl: "" + ## @param prometheus.thanos.extraArgs Additional arguments passed to the thanos sidecar container + ## extraArgs: + ## - --log.level=debug + ## - --tsdb.path=/data/ + ## + extraArgs: [] + ## @param prometheus.thanos.objectStorageConfig Support mounting a Secret for the objectStorageConfig of the sideCar container. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/thanos.md + ## objectStorageConfig: + ## secretName: thanos-objstore-config + ## secretKey: thanos.yaml + ## + objectStorageConfig: {} + ## ref: https://github.com/thanos-io/thanos/blob/main/docs/components/sidecar.md + ## @param prometheus.thanos.extraVolumeMounts Additional volumeMounts from `prometheus.volumes` for thanos sidecar container + ## extraVolumeMounts: + ## - name: my-secret-volume + ## mountPath: /etc/thanos/secrets/my-secret + ## + extraVolumeMounts: [] + ## Thanos sidecar container resource requests and limits. + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param prometheus.thanos.resources.limits The resources limits for the Thanos sidecar container + ## @param prometheus.thanos.resources.requests The resources requests for the Thanos sidecar container + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 128Mi + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 128Mi + requests: {} + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.thanos.livenessProbe.enabled Turn on and off liveness probe + ## @param prometheus.thanos.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param prometheus.thanos.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param prometheus.thanos.livenessProbe.periodSeconds How often to perform the probe + ## @param prometheus.thanos.livenessProbe.timeoutSeconds When the probe times out + ## @param prometheus.thanos.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.thanos.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.thanos.readinessProbe.enabled Turn on and off readiness probe + ## @param prometheus.thanos.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param prometheus.thanos.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param prometheus.thanos.readinessProbe.periodSeconds How often to perform the probe + ## @param prometheus.thanos.readinessProbe.timeoutSeconds When the probe times out + ## @param prometheus.thanos.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.thanos.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Thanos Sidecar Service + ## + service: + ## @param prometheus.thanos.service.type Kubernetes service type + ## + type: ClusterIP + ## @param prometheus.thanos.service.port Thanos service port + ## + port: 10901 + ## @param prometheus.thanos.service.clusterIP Specific cluster IP when service type is cluster IP. Use `None` to create headless service by default. + ## Use a "headless" service by default so it returns every pod's IP instead of loadbalancing requests. + ## + clusterIP: None + ## @param prometheus.thanos.service.nodePort Specify the nodePort value for the LoadBalancer and NodePort service types. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## e.g: + ## nodePort: 30901 + ## + nodePort: "" + ## @param prometheus.thanos.service.loadBalancerIP `loadBalancerIP` if service type is `LoadBalancer` + ## Set the LoadBalancer service type to internal only + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param prometheus.thanos.service.loadBalancerSourceRanges Address that are allowed when svc is `LoadBalancer` + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param prometheus.thanos.service.annotations Additional annotations for Prometheus service + ## + annotations: {} + ## @param prometheus.thanos.service.extraPorts Additional ports to expose from the Thanos sidecar container + ## extraPorts: + ## - name: http + ## port: 10902 + ## targetPort: http + ## protocol: tcp + ## + extraPorts: [] + ## @param prometheus.portName Port name used for the pods and governing service. This defaults to web + ## + portName: main + +#### +## Alert Manager Config +#### + +## @section Alertmanager Parameters + +## Configuration for alertmanager +## ref: https://prometheus.io/docs/alerting/alertmanager/ +## +alertmanager: + ## @param alertmanager.enabled Deploy Alertmanager to the cluster + ## + enabled: true + ## Service account for Alertmanager to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + ## @param alertmanager.serviceAccount.create Specify whether to create a ServiceAccount for Alertmanager + ## + create: true + ## @param alertmanager.serviceAccount.name The name of the ServiceAccount to create + ## If not set and create is true, a name is generated using the kube-prometheus.alertmanager.fullname template + name: "" + ## Prometheus Alertmanager pods' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param alertmanager.podSecurityContext.enabled Enable security context + ## @param alertmanager.podSecurityContext.runAsUser User ID for the container + ## @param alertmanager.podSecurityContext.fsGroup Group ID for the container filesystem + ## + podSecurityContext: + enabled: true + runAsUser: 1001 + fsGroup: 1001 + ## Prometheus Alertmanager container's securityContext + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param alertmanager.containerSecurityContext.enabled Enable container security context + ## @param alertmanager.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem + ## @param alertmanager.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param alertmanager.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param alertmanager.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + ## Configure pod disruption budgets for Alertmanager + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget + ## @param alertmanager.podDisruptionBudget.enabled Create a pod disruption budget for Alertmanager + ## @param alertmanager.podDisruptionBudget.minAvailable Minimum number / percentage of pods that should remain scheduled + ## @param alertmanager.podDisruptionBudget.maxUnavailable Maximum number / percentage of pods that may be made unavailable + ## + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + ## If true, create a serviceMonitor for alertmanager + ## + serviceMonitor: + ## @param alertmanager.serviceMonitor.enabled Creates a ServiceMonitor to monitor Alertmanager + ## + enabled: true + ## @param alertmanager.serviceMonitor.interval Scrape interval. If not set, the Prometheus default scrape interval is used. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param alertmanager.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param alertmanager.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## @param alertmanager.externalUrl External URL used to access Alertmanager + ## e.g: + ## externalUrl: https://alertmanager.example.com + ## + externalUrl: "" + ## @param alertmanager.resources CPU/Memory resource requests/limits for node + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + ## @param alertmanager.podAffinityPreset Alertmanager Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param alertmanager.podAntiAffinityPreset Alertmanager Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param alertmanager.nodeAffinityPreset.type Alertmanager Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param alertmanager.nodeAffinityPreset.key Alertmanager Node label key to match Ignored if `affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param alertmanager.nodeAffinityPreset.values Alertmanager Node label values to match. Ignored if `affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param alertmanager.affinity Alertmanager Affinity for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: alertmanager.podAffinityPreset, alertmanager.podAntiAffinityPreset, and alertmanager.nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param alertmanager.nodeSelector Alertmanager Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param alertmanager.tolerations Alertmanager Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## Alertmanager configuration + ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file + ## @param alertmanager.config [object] Alertmanager configuration directive + ## @skip alertmanager.config.route.group_by + ## @skip alertmanager.config.route.routes + ## @skip alertmanager.config.receivers + ## + config: + global: + resolve_timeout: 5m + route: + group_by: + - job + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: "null" + routes: + - match: + alertname: Watchdog + receiver: "null" + receivers: + - name: "null" + ## @param alertmanager.externalConfig Alertmanager configuration is created externally. If true, `alertmanager.config` is ignored, and a secret will not be created. + ## Alertmanager requires a secret named `alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }}` + ## It must contain: + ## alertmanager.yaml: + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/alerting.md#alerting + ## + externalConfig: false + ## @param alertmanager.replicaCount Number of Alertmanager replicas desired + ## + replicaCount: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param alertmanager.livenessProbe.enabled Turn on and off liveness probe + ## @param alertmanager.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param alertmanager.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param alertmanager.livenessProbe.periodSeconds How often to perform the probe + ## @param alertmanager.livenessProbe.timeoutSeconds When the probe times out + ## @param alertmanager.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param alertmanager.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param alertmanager.readinessProbe.enabled Turn on and off readiness probe + ## @param alertmanager.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param alertmanager.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param alertmanager.readinessProbe.periodSeconds How often to perform the probe + ## @param alertmanager.readinessProbe.timeoutSeconds When the probe times out + ## @param alertmanager.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param alertmanager.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## @param alertmanager.logLevel Log level for Alertmanager + ## + logLevel: info + ## @param alertmanager.logFormat Log format for Alertmanager + ## + logFormat: logfmt + ## @param alertmanager.podMetadata [object] Standard object's metadata. + ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## + podMetadata: + labels: {} + annotations: {} + ## @param alertmanager.secrets Secrets that should be mounted into the Alertmanager Pods + ## + secrets: [] + ## @param alertmanager.configMaps ConfigMaps that should be mounted into the Alertmanager Pods + ## + configMaps: [] + ## @param alertmanager.retention Metrics retention days + ## + retention: 240h + ## @param alertmanager.storageSpec Alertmanager StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storageSpec: {} + ## Alertmanager persistence parameters + ## + persistence: + ## @param alertmanager.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. + ## If you want to use this configuration make sure the storageSpec is not provided. + ## + enabled: true + ## @param alertmanager.persistence.storageClass Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. + ## + storageClass: "" + ## @param alertmanager.persistence.accessModes Persistent Volume Access Modes + ## + accessModes: + - ReadWriteOnce + ## @param alertmanager.persistence.size Persistent Volume Size + ## + size: 999Gi + ## @param alertmanager.paused If true, the Operator won't process any Alertmanager configuration changes + ## + paused: false + ## @param alertmanager.listenLocal ListenLocal makes the Alertmanager server listen on loopback + ## + listenLocal: false + ## @param alertmanager.containers Containers allows injecting additional containers + ## + containers: [] + ## @param alertmanager.volumes Volumes allows configuration of additional volumes. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec + ## + volumes: [] + ## @param alertmanager.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/pi.md#alertmanagerspec + ## + volumeMounts: [] + ## @param alertmanager.priorityClassName Priority class assigned to the Pods + ## + priorityClassName: "" + ## @param alertmanager.additionalPeers AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster + ## + additionalPeers: [] + ## @param alertmanager.routePrefix Prefix used to register routes, overriding externalUrl route + ## Useful for proxies that rewrite URLs. + ## + routePrefix: / + ## @param alertmanager.portName Port name used for the pods and governing service. This defaults to web + ## + portName: alertmanager + ## @param alertmanager.configNamespaceSelector AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. This defaults to {} + ## + configNamespaceSelector: {} + ## @param alertmanager.configSelector Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. This defaults to {} + ## + configSelector: {} + +portal: + open: + enabled: true diff --git a/premium/prometheus/17.9.3/questions.yaml b/premium/prometheus/17.9.3/questions.yaml new file mode 100755 index 00000000000..cde3f07f613 --- /dev/null +++ b/premium/prometheus/17.9.3/questions.yaml @@ -0,0 +1,1808 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: operator + group: "App Configuration" + label: "Operator Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Operator" + schema: + type: string + default: "info" + - variable: prometheus + group: "App Configuration" + label: "Prometheus Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Prometheus" + schema: + type: string + default: "info" + - variable: retention + label: "Retention" + description: "Metrics retention days" + schema: + type: string + default: "31d" + - variable: retentionSize + label: "Max Retention Size" + description: "Maximum size of metrics" + schema: + type: string + default: "" + - variable: scrapeInterval + label: "Scrape interval" + description: "Interval between consecutive scrapes" + schema: + type: string + default: "15s" + - variable: evaluationInterval + label: "Evaluation interval" + description: "Interval between consecutive evaluations" + schema: + type: string + default: "30s" + - variable: disableCompaction + label: "Disable Compaction" + description: "Disable the compaction of the Prometheus TSDB" + schema: + type: boolean + default: false + - variable: walCompression + label: "WAL Compression" + description: "Enable compression of the write-ahead log using Snappy" + schema: + type: boolean + default: false + - variable: enableRemoteWriteReceiver + label: "Remote Write Receiver" + description: "Enable Prometheus to be used as a receiver for the Prometheus remote write protocol" + schema: + type: boolean + default: false + - variable: remoteWrite + label: "Remote Write" + schema: + type: list + default: [] + items: + - variable: remoteWriteEntry + label: Remote Write Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: url + label: URL + description: Remote write destination URL + schema: + type: string + required: true + default: "" + - variable: basicAuth + label: Basic Auth + description: Basic authentication for remote write + schema: + type: dict + attrs: + - variable: username + label: Username + description: Basic auth username + schema: + type: string + required: true + default: "" + - variable: password + label: Password + description: Basic auth password + schema: + type: string + required: false + default: "" + - variable: exporters + group: "App Configuration" + label: "Exporter Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: node-exporter + label: "node-exporter" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + - variable: kube-state-metrics + label: "Kube-State-Metrics" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + - variable: alertmanager + group: "App Configuration" + label: "Alertmanager Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Alertmanager" + schema: + type: string + default: "info" + - variable: retention + label: "Retention" + description: "Metrics retention days" + schema: + type: string + default: "240h" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service" + description: "The serving the Prometheus WebUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9090 + required: true + - variable: alertmanager + label: "alertmanager Service" + description: "alertmanager service " + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: alertmanager + label: "alertmanager Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9093 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + diff --git a/premium/prometheus/17.9.3/templates/NOTES.txt b/premium/prometheus/17.9.3/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/prometheus/17.9.3/templates/_helpers.tpl b/premium/prometheus/17.9.3/templates/_helpers.tpl new file mode 100644 index 00000000000..1f44049ac4c --- /dev/null +++ b/premium/prometheus/17.9.3/templates/_helpers.tpl @@ -0,0 +1,210 @@ +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.fullname" -}} +{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.name" -}} +{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.operator.name" -}} +{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with prometheus */}} +{{- define "kube-prometheus.prometheus.name" -}} +{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with alertmanager */}} +{{- define "kube-prometheus.alertmanager.name" -}} +{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with thanos */}} +{{- define "kube-prometheus.thanos.name" -}} +{{- printf "%s-thanos" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with operator */}} +{{- define "kube-prometheus.operator.fullname" -}} +{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with prometheus */}} +{{- define "kube-prometheus.prometheus.fullname" -}} +{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with alertmanager */}} +{{- define "kube-prometheus.alertmanager.fullname" -}} +{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with thanos */}} +{{- define "kube-prometheus.thanos.fullname" -}} +{{- printf "%s-thanos" (include "kube-prometheus.prometheus.fullname" .) -}} +{{- end }} + +{{- define "kube-prometheus.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common Labels +*/}} +{{- define "kube-prometheus.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +{{- if .Values.global.labels }} +{{ toYaml .Values.global.labels }} +{{- end }} +{{- end -}} + +{{/* +Labels for operator +*/}} +{{- define "kube-prometheus.operator.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: operator +{{- end -}} + +{{/* +Labels for prometheus +*/}} +{{- define "kube-prometheus.prometheus.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: prometheus +{{- end -}} + +{{/* +Labels for alertmanager +*/}} +{{- define "kube-prometheus.alertmanager.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: alertmanager +{{- end -}} + +{{/* +matchLabels for operator +*/}} +{{- define "kube-prometheus.operator.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: operator +{{- end -}} + +{{/* +matchLabels for prometheus +*/}} +{{- define "kube-prometheus.prometheus.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: prometheus +{{- end -}} + +{{/* +matchLabels for alertmanager +*/}} +{{- define "kube-prometheus.alertmanager.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: alertmanager +{{- end -}} + +{{/* +Return the proper Prometheus Operator image name +*/}} +{{- define "kube-prometheus.image" -}} +{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Prometheus Operator Reloader image name +*/}} +{{- define "kube-prometheus.prometheusConfigReloader.image" -}} +{{- include "kube-prometheus.image" . -}} +{{- end -}} + +{{/* +Return the proper Prometheus Image name +*/}} +{{- define "kube-prometheus.prometheus.image" -}} +{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Thanos Image name +*/}} +{{- define "kube-prometheus.prometheus.thanosImage" -}} +{{ printf "%s:%s" .Values.thanosImage.repository (default .Chart.AppVersion .Values.thanosImage.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Alertmanager Image name +*/}} +{{- define "kube-prometheus.alertmanager.image" -}} +{{ printf "%s:%s" .Values.alertmanagerImage.repository (default .Chart.AppVersion .Values.alertmanagerImage.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "kube-prometheus.imagePullSecrets" -}} +{{- end -}} + +{{/* +Create the name of the operator service account to use +*/}} +{{- define "kube-prometheus.operator.serviceAccountName" -}} +{{- if .Values.operator.serviceAccount.create -}} + {{ default (include "kube-prometheus.operator.fullname" .) .Values.operator.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.operator.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the prometheus service account to use +*/}} +{{- define "kube-prometheus.prometheus.serviceAccountName" -}} +{{- if .Values.prometheus.serviceAccount.create -}} + {{ default (include "kube-prometheus.prometheus.fullname" .) .Values.prometheus.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.prometheus.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the alertmanager service account to use +*/}} +{{- define "kube-prometheus.alertmanager.serviceAccountName" -}} +{{- if .Values.alertmanager.serviceAccount.create -}} + {{ default (include "kube-prometheus.alertmanager.fullname" .) .Values.alertmanager.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.alertmanager.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message, and call fail. +*/}} +{{- define "kube-prometheus.validateValues" -}} +{{- $messages := list -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} diff --git a/premium/prometheus/17.9.3/templates/alertmanager/_alertmanager.tpl b/premium/prometheus/17.9.3/templates/alertmanager/_alertmanager.tpl new file mode 100644 index 00000000000..ed5e24e9da6 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/alertmanager/_alertmanager.tpl @@ -0,0 +1,174 @@ +{{- define "prometheus.alertmanager.alertmanager" -}} +{{- if .Values.alertmanager.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: Alertmanager +metadata: + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.alertmanager.replicaCount }} + serviceAccountName: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} + {{- if .Values.alertmanager.image }} + image: {{ template "kube-prometheus.alertmanager.image" . }} + {{- end }} + listenLocal: {{ .Values.alertmanager.listenLocal }} + {{- if index .Values.alertmanager "externalUrl" }} + externalUrl: "{{ .Values.alertmanager.externalUrl }}" + {{- else if and .Values.ingress.alertmanager.enabled .Values.ingress.alertmanager.hosts }} + externalUrl: {{ if .Values.ingress.alertmanager.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.alertmanager.hosts 0).name }}{{ .Values.alertmanager.routePrefix }} + {{- else }} + externalUrl: http://{{ template "kube-prometheus.alertmanager.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.alertmanager.ports.alertmanager.port }}{{ .Values.alertmanager.routePrefix }} + {{- end }} + portName: "{{ .Values.alertmanager.portName }}" + paused: {{ .Values.alertmanager.paused }} + logFormat: {{ .Values.alertmanager.logFormat }} + logLevel: {{ .Values.alertmanager.logLevel }} + retention: {{ .Values.alertmanager.retention }} + {{- if .Values.alertmanager.secrets }} + secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.secrets "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.configMaps }} + configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configMaps "context" $) | nindent 4 }} + {{- end }} + resources: {{- toYaml .Values.alertmanager.resources | nindent 4 }} + routePrefix: "{{ .Values.alertmanager.routePrefix }}" + {{- if .Values.alertmanager.podSecurityContext.enabled }} + securityContext: {{- omit .Values.alertmanager.podSecurityContext "enabled" | toYaml | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.storageSpec }} + storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.storageSpec "context" $) | nindent 4 }} + {{- else }} + {{- if .Values.alertmanager.persistence.enabled }} + storage: + volumeClaimTemplate: + spec: + accessModes: + {{- range .Values.alertmanager.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.alertmanager.persistence.size | quote }} + {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} + storageClassName: {{ . }} + {{- end }} + {{- end }} + {{- end }} + {{- if or .Values.alertmanager.podMetadata.labels .Values.alertmanager.podMetadata.annotations (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} + podMetadata: + labels: + {{- if .Values.alertmanager.podMetadata.labels }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.labels "context" $) | nindent 6 }} + {{- end }} + {{- if or (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} + {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} + {{- end }} + {{- if .Values.alertmanager.podMetadata.annotations }} + annotations: + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.annotations "context" $) | nindent 6 }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.affinity }} + affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.affinity "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.nodeSelector }} + nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.nodeSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.tolerations }} + tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.tolerations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.volumes }} + volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumes "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.volumeMounts }} + volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumeMounts "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} + {{- if or .Values.alertmanager.containers .Values.alertmanager.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + containers: + {{- if or .Values.alertmanager.containerSecurityContext.enabled .Values.alertmanager.livenessProbe.enabled .Values.alertmanager.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: alertmanager + {{- if .Values.alertmanager.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.alertmanager.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.alertmanager.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.alertmanager.livenessProbe.path }} + port: alertmanager + scheme: HTTP + initialDelaySeconds: {{ .Values.alertmanager.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.alertmanager.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.alertmanager.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.alertmanager.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.alertmanager.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.alertmanager.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.alertmanager.readinessProbe.path }} + port: alertmanager + scheme: HTTP + initialDelaySeconds: {{ .Values.alertmanager.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.alertmanager.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.alertmanager.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.alertmanager.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.alertmanager.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: config-reloader + {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.containers }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.containers "context" $) | nindent 4 }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.priorityClassName }} + priorityClassName: {{ .Values.alertmanager.priorityClassName }} + {{- end }} + {{- if .Values.alertmanager.additionalPeers }} + additionalPeers: {{ .Values.alertmanager.additionalPeers }} + {{- end }} + {{- if .Values.alertmanager.configNamespaceSelector }} + alertmanagerConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configNamespaceSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.configSelector }} + alertmanagerConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configSelector "context" $) | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/alertmanager/secrets.yaml b/premium/prometheus/17.9.3/templates/alertmanager/secrets.yaml new file mode 100644 index 00000000000..9a6f518f35c --- /dev/null +++ b/premium/prometheus/17.9.3/templates/alertmanager/secrets.yaml @@ -0,0 +1,13 @@ +{{- if (and .Values.alertmanager.enabled (not .Values.alertmanager.externalConfig) ) }} +apiVersion: v1 +kind: Secret +metadata: + name: alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +data: + alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} +{{- range $key, $val := .Values.alertmanager.templateFiles }} + {{ $key }}: {{ $val | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/alertmanager/serviceaccount.yaml b/premium/prometheus/17.9.3/templates/alertmanager/serviceaccount.yaml new file mode 100644 index 00000000000..a6f438889a2 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/alertmanager/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} + {{- if index .Values.alertmanager.serviceAccount "annotations" }} + annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.serviceAccount.annotations "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/alertmanager/servicemonitor.yaml b/premium/prometheus/17.9.3/templates/alertmanager/servicemonitor.yaml new file mode 100644 index 00000000000..ef0e02d3875 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/alertmanager/servicemonitor.yaml @@ -0,0 +1,26 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +spec: + selector: + matchLabels: {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + {{- if .Values.alertmanager.serviceMonitor.interval }} + interval: {{ .Values.alertmanager.serviceMonitor.interval }} + {{- end }} + path: {{ trimSuffix "/" .Values.alertmanager.routePrefix }}/metrics + {{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.alertmanager.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.alertmanager.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.alertmanager.serviceMonitor.relabelings | nindent 8 }} + {{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/common.yaml b/premium/prometheus/17.9.3/templates/common.yaml new file mode 100644 index 00000000000..61364503a70 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/common.yaml @@ -0,0 +1,13 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- include "prometheus.prometheus.prometheus" . }} +{{- include "prometheus.prometheus.additionalprometheusrules" . }} +{{- include "prometheus.prometheus.additionalscrapejobs" . }} +{{- include "prometheus.prometheus.servicemonitor" . }} + +{{- include "prometheus.alertmanager.alertmanager" . }} + + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/_additionalPrometheusRules.tpl b/premium/prometheus/17.9.3/templates/prometheus/_additionalPrometheusRules.tpl new file mode 100644 index 00000000000..121048d87ce --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/_additionalPrometheusRules.tpl @@ -0,0 +1,15 @@ +{{- define "prometheus.prometheus.additionalprometheusrules" -}} +{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPrometheusRules}} + {{- range .Values.prometheus.additionalPrometheusRules }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ template "kube-prometheus.name" $ }}-{{ .name }} + namespace: {{ $.Release.Namespace }} + labels: {{ include "kube-prometheus.prometheus.labels" $ | nindent 4 }} +spec: + groups: {{- toYaml .groups | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/_additionalScrapeJobs.tpl b/premium/prometheus/17.9.3/templates/prometheus/_additionalScrapeJobs.tpl new file mode 100644 index 00000000000..3c5f85140a4 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/_additionalScrapeJobs.tpl @@ -0,0 +1,13 @@ +{{- define "prometheus.prometheus.additionalscrapejobs" -}} +{{- if (and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") ) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +data: + scrape-jobs.yaml: {{ include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.additionalScrapeConfigs.internal.jobList "context" $ ) | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/_prometheus.tpl b/premium/prometheus/17.9.3/templates/prometheus/_prometheus.tpl new file mode 100644 index 00000000000..b5bd3bcb292 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/_prometheus.tpl @@ -0,0 +1,366 @@ +{{- define "prometheus.prometheus.prometheus" -}} +{{- if .Values.prometheus.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.prometheus.replicaCount }} + serviceAccountName: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + {{- if .Values.prometheus.serviceMonitorSelector }} + serviceMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorSelector "context" $) | nindent 4 }} + {{- else }} + serviceMonitorSelector: {} + {{- end }} + {{- if .Values.prometheus.podMonitorSelector }} + podMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorSelector "context" $) | nindent 4 }} + {{- else }} + podMonitorSelector: {} + {{- end }} + {{- if .Values.prometheus.probeSelector }} + probeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeSelector "context" $) | nindent 4 }} + {{- else }} + probeSelector: {} + {{- end }} + {{- if .Values.prometheus.scrapeConfigSelector }} + scrapeConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigSelector "context" $) | nindent 4 }} + {{- else }} + scrapeConfigSelector: {} + {{- end }} + alerting: + alertmanagers: + {{- if .Values.prometheus.alertingEndpoints }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.alertingEndpoints "context" $) | nindent 6 }} + {{- else if .Values.alertmanager.enabled }} + - namespace: {{ .Release.Namespace }} + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + port: http + pathPrefix: "{{ .Values.alertmanager.routePrefix }}" + {{- else }} + [] + {{- end }} + {{- if .Values.prometheus.image }} + image: {{ template "kube-prometheus.prometheus.image" . }} + {{- end }} + {{- if .Values.prometheus.externalLabels }} + externalLabels: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.externalLabels "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.prometheusExternalLabelNameClear }} + prometheusExternalLabelName: "" + {{- else if .Values.prometheus.prometheusExternalLabelName }} + prometheusExternalLabelName: "{{ .Values.prometheus.prometheusExternalLabelName }}" + {{- end }} + {{- if .Values.prometheus.replicaExternalLabelNameClear }} + replicaExternalLabelName: "" + {{- else if .Values.prometheus.replicaExternalLabelName }} + replicaExternalLabelName: "{{ .Values.prometheus.replicaExternalLabelName }}" + {{- end }} + {{- if index .Values.prometheus "externalUrl" }} + externalUrl: "{{ .Values.prometheus.externalUrl }}" + {{- else if and .Values.ingress.main.enabled .Values.ingress.main.hosts }} + externalUrl: {{ if .Values.ingress.main.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.main.hosts 0).name }}{{ .Values.prometheus.routePrefix }} + {{- else }} + externalUrl: http://{{ template "kube-prometheus.prometheus.fullname" . }}.{{ .Release.Namespace }}:9090{{ .Values.prometheus.routePrefix }} + {{- end }} + paused: {{ .Values.prometheus.paused }} + logLevel: {{ .Values.prometheus.logLevel }} + logFormat: {{ .Values.prometheus.logFormat }} + listenLocal: {{ .Values.prometheus.listenLocal }} + enableAdminAPI: {{ .Values.prometheus.enableAdminAPI }} + {{- if .Values.prometheus.enableFeatures }} + enableFeatures: + {{- range .Values.prometheus.enableFeatures }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.scrapeInterval }} + scrapeInterval: {{ .Values.prometheus.scrapeInterval }} + {{- end }} + {{- if .Values.prometheus.evaluationInterval }} + evaluationInterval: {{ .Values.prometheus.evaluationInterval }} + {{- end }} + {{- if .Values.prometheus.resources }} + resources: {{- toYaml .Values.prometheus.resources | nindent 4 }} + {{- end }} + retention: {{ .Values.prometheus.retention }} + {{- if .Values.prometheus.retentionSize }} + retentionSize: {{ .Values.prometheus.retentionSize }} + {{- end }} + {{- if .Values.prometheus.disableCompaction }} + disableCompaction: {{ .Values.prometheus.disableCompaction }} + {{- end }} + {{- if .Values.prometheus.enableRemoteWriteReceiver }} + enableRemoteWriteReceiver: {{ .Values.prometheus.enableRemoteWriteReceiver }} + {{- end }} + {{- if .Values.prometheus.walCompression }} + walCompression: {{ .Values.prometheus.walCompression }} + {{- end }} + portName: "{{ .Values.prometheus.portName }}" + routePrefix: "{{ .Values.prometheus.routePrefix }}" + {{- if .Values.prometheus.secrets }} + secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.secrets "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.configMaps }} + configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.configMaps "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.serviceMonitorNamespaceSelector }} + serviceMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + serviceMonitorNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.podMonitorNamespaceSelector }} + podMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + podMonitorNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.probeNamespaceSelector }} + probeNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + probeNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.scrapeConfigNamespaceSelector }} + scrapeConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + scrapeConfigNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.remoteRead }} + remoteRead: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.remoteRead "context" $) | nindent 4 }} + {{- end }} + {{- with .Values.prometheus.remoteWrite }} + remoteWrite: + {{- tpl (toYaml .) $ | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.podSecurityContext.enabled }} + securityContext: {{- omit .Values.prometheus.podSecurityContext "enabled" | toYaml | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.ruleNamespaceSelector }} + ruleNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + ruleNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.ruleSelector }} + ruleSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleSelector "context" $) | nindent 4 }} + {{- else }} + ruleSelector: {} + {{- end }} + {{- if .Values.prometheus.storageSpec }} + storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.storageSpec "context" $) | nindent 4 }} + {{- else if .Values.prometheus.persistence.enabled }} + storage: + volumeClaimTemplate: + spec: + accessModes: + {{- range .Values.prometheus.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.prometheus.persistence.size | quote }} + {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} + storageClassName: {{ . }} + {{- end }} + {{- end }} + {{- if or .Values.prometheus.podMetadata.labels .Values.prometheus.podMetadata.annotations (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} + podMetadata: + labels: + {{- if .Values.prometheus.podMetadata.labels }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.labels "context" $) | nindent 6 }} + {{- end }} + {{- if or (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} + {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} + {{- end }} + {{- if .Values.prometheus.podMetadata.annotations }} + annotations: + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.annotations "context" $) | nindent 6 }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.querySpec }} + query: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.querySpec "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.affinity }} + affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.affinity "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.nodeSelector }} + nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.nodeSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.tolerations }} + tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.tolerations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.volumes }} + volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumes "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.volumeMounts }} + volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumeMounts "context" $) | nindent 4 }} + {{- end }} + {{- if or .Values.prometheus.additionalScrapeConfigs.enabled .Values.prometheus.additionalScrapeConfigsExternal.enabled }} + additionalScrapeConfigs: + {{- if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "external") }} + name: {{ .Values.prometheus.additionalScrapeConfigs.external.name }} + key: {{ .Values.prometheus.additionalScrapeConfigs.external.key }} + {{- else if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") }} + name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} + key: scrape-jobs.yaml + {{- else if and (not .Values.prometheus.additionalScrapeConfigs.enabled) .Values.prometheus.additionalScrapeConfigsExternal.enabled }} + name: {{ .Values.prometheus.additionalScrapeConfigsExternal.name }} + key: {{ .Values.prometheus.additionalScrapeConfigsExternal.key }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.additionalAlertRelabelConfigsExternal.enabled }} + additionalAlertRelabelConfigs: + name: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.name }} + key: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.key }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} + {{- if or .Values.prometheus.containers .Values.prometheus.thanos.create .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + containers: + {{- if .Values.prometheus.thanos.create }} + - name: thanos-sidecar + image: {{ template "kube-prometheus.prometheus.thanosImage" . }} + imagePullPolicy: {{ .Values.prometheus.thanos.image.pullPolicy }} + args: + - sidecar + - --prometheus.url={{ default "http://localhost:9090" .Values.prometheus.thanos.prometheusUrl }} + - --grpc-address=0.0.0.0:10901 + - --http-address=0.0.0.0:10902 + - --tsdb.path=/prometheus/ + {{- if .Values.prometheus.thanos.objectStorageConfig }} + - --objstore.config=$(OBJSTORE_CONFIG) + {{- end }} + {{- if .Values.prometheus.thanos.extraArgs }} + {{ toYaml .Values.prometheus.thanos.extraArgs | indent 8 | trim }} + {{- end }} + {{- if .Values.prometheus.thanos.objectStorageConfig }} + env: + - name: OBJSTORE_CONFIG + valueFrom: + secretKeyRef: + name: {{ .Values.prometheus.thanos.objectStorageConfig.secretName }} + key: {{ .Values.prometheus.thanos.objectStorageConfig.secretKey | default "thanos.yaml" }} + {{- end }} + {{- if .Values.prometheus.thanos.resources }} + resources: {{- toYaml .Values.prometheus.thanos.resources | nindent 8 }} + {{- end }} + ports: + - name: thanos + containerPort: 10901 + protocol: TCP + - name: http + containerPort: 10902 + protocol: TCP + volumeMounts: + - mountPath: /prometheus + name: prometheus-{{ template "kube-prometheus.prometheus.fullname" . }}-db + {{- if not (.Values.prometheus.storageSpec.disableMountSubPath | default (not .Values.prometheus.persistence.enabled)) }} + subPath: prometheus-db + {{- end }} + {{- if .Values.prometheus.thanos.extraVolumeMounts }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.thanos.extraVolumeMounts "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.thanos.containerSecurityContext.enabled }} + # yamllint disable rule:indentation + securityContext: {{- omit .Values.prometheus.thanos.containerSecurityContext "enabled" | toYaml | nindent 8 }} + # yamllint enable rule:indentation + {{- end }} + {{- if .Values.prometheus.thanos.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.prometheus.thanos.livenessProbe.path }} + port: http + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.thanos.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.thanos.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.thanos.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.thanos.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.thanos.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.prometheus.thanos.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.prometheus.thanos.readinessProbe.path }} + port: http + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.thanos.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.thanos.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.thanos.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.thanos.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.thanos.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.livenessProbe.enabled .Values.prometheus.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: prometheus + {{- if .Values.prometheus.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.prometheus.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.prometheus.livenessProbe.path }} + port: main + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.prometheus.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.prometheus.readinessProbe.path }} + port: main + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: config-reloader + {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.containers }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.containers "context" $) | nindent 4 }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.priorityClassName }} + priorityClassName: {{ .Values.prometheus.priorityClassName }} + {{- end }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/_servicemonitor.tpl b/premium/prometheus/17.9.3/templates/prometheus/_servicemonitor.tpl new file mode 100644 index 00000000000..20744f2c924 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/_servicemonitor.tpl @@ -0,0 +1,29 @@ +{{- define "prometheus.prometheus.servicemonitor" -}} +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +spec: + selector: + matchLabels: {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + {{- if .Values.prometheus.serviceMonitor.interval }} + interval: {{ .Values.prometheus.serviceMonitor.interval }} + {{- end }} + path: {{ trimSuffix "/" .Values.prometheus.routePrefix }}/metrics + {{- if .Values.prometheus.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.prometheus.serviceMonitor.relabelings | nindent 8 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/clusterrole.yaml b/premium/prometheus/17.9.3/templates/prometheus/clusterrole.yaml new file mode 100644 index 00000000000..ae96e2d45f8 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/clusterrole.yaml @@ -0,0 +1,41 @@ +{{- if .Values.prometheus.enabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +rules: + - apiGroups: + - "" + resources: + - nodes/metrics + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - services + - endpoints + - pods + verbs: + - "get" + - "list" + - "watch" + - apiGroups: + - extensions + - "networking.k8s.io" + resources: + - ingresses + verbs: + - get + - list + - watch + - nonResourceURLs: + - "/metrics" + verbs: + - "get" +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/clusterrolebinding.yaml b/premium/prometheus/17.9.3/templates/prometheus/clusterrolebinding.yaml new file mode 100644 index 00000000000..7ca10743f4a --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/clusterrolebinding.yaml @@ -0,0 +1,15 @@ +{{- if .Values.prometheus.enabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus.prometheus.fullname" . }} +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/premium/prometheus/17.9.3/templates/prometheus/serviceaccount.yaml b/premium/prometheus/17.9.3/templates/prometheus/serviceaccount.yaml new file mode 100644 index 00000000000..39539fc1191 --- /dev/null +++ b/premium/prometheus/17.9.3/templates/prometheus/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} + {{- if index .Values.prometheus.serviceAccount "annotations" }} + annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceAccount.annotations "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . }} +{{- end }} diff --git a/premium/prometheus/17.9.3/values.yaml b/premium/prometheus/17.9.3/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/prometheus/item.yaml b/premium/prometheus/item.yaml new file mode 100644 index 00000000000..dd0c9b30ba0 --- /dev/null +++ b/premium/prometheus/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.png +categories: + - metrics +screenshots: [] diff --git a/premium/traefik/26.7.4/.helmignore b/premium/traefik/26.7.4/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/traefik/26.7.4/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/traefik/26.7.4/CHANGELOG.md b/premium/traefik/26.7.4/CHANGELOG.md new file mode 100644 index 00000000000..fb874632b50 --- /dev/null +++ b/premium/traefik/26.7.4/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [traefik-26.7.4](https://github.com/truecharts/charts/compare/traefik-26.7.3...traefik-26.7.4) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/traefik/26.7.4/Chart.yaml b/premium/traefik/26.7.4/Chart.yaml new file mode 100644 index 00000000000..e9824cd5ee7 --- /dev/null +++ b/premium/traefik/26.7.4/Chart.yaml @@ -0,0 +1,39 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: network + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 2.11.0 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Traefik is a flexible reverse proxy and Ingress Provider. +home: https://truecharts.org/charts/premium/traefik +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traefik.png +keywords: + - traefik + - ingress +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: traefik +sources: + - https://github.com/traefik/traefik + - https://github.com/traefik/traefik-helm-chart + - https://traefik.io/ + - https://github.com/truecharts/charts/tree/master/charts/premium/traefik + - https://github.com/truecharts/containers/tree/master/apps/traefik +type: application +version: 26.7.4 diff --git a/premium/traefik/26.7.4/README.md b/premium/traefik/26.7.4/README.md new file mode 100644 index 00000000000..3e4e816cdf4 --- /dev/null +++ b/premium/traefik/26.7.4/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/traefik) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/traefik/26.7.4/app-changelog.md b/premium/traefik/26.7.4/app-changelog.md new file mode 100644 index 00000000000..c2ee4871d7e --- /dev/null +++ b/premium/traefik/26.7.4/app-changelog.md @@ -0,0 +1,9 @@ + + +## [traefik-26.7.4](https://github.com/truecharts/charts/compare/traefik-26.7.3...traefik-26.7.4) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/traefik/26.7.4/app-readme.md b/premium/traefik/26.7.4/app-readme.md new file mode 100644 index 00000000000..7a332ea668e --- /dev/null +++ b/premium/traefik/26.7.4/app-readme.md @@ -0,0 +1,8 @@ +Traefik is a flexible reverse proxy and Ingress Provider. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/traefik](https://truecharts.org/charts/premium/traefik) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/traefik/26.7.4/charts/common-20.0.9.tgz b/premium/traefik/26.7.4/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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
S0cH#lu%;={7t7+YGL;AHC1 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutes.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutes.yaml new file mode 100644 index 00000000000..bd137f410d9 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutes.yaml @@ -0,0 +1,275 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressroutes.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRoute + listKind: IngressRouteList + plural: ingressroutes + singular: ingressroute + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRoute is the CRD implementation of a Traefik HTTP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteSpec defines the desired state of IngressRoute. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: Route holds the HTTP route configuration. + properties: + kind: + description: Kind defines the kind of the route. Rule is the + only supported kind. + enum: + - Rule + type: string + match: + description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule' + type: string + middlewares: + description: 'Middlewares defines the list of references to + Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware' + items: + description: MiddlewareRef is a reference to a Middleware + resource. + properties: + name: + description: Name defines the name of the referenced Middleware + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Middleware resource. + type: string + required: + - name + type: object + type: array + priority: + description: 'Priority defines the router''s priority. More + info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority' + type: integer + services: + description: Services defines the list of Service. It can contain + any combination of TraefikService and/or reference to a Kubernetes + Service. + items: + description: Service defines an upstream HTTP service to proxy + traffic to. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client + Host header is forwarded to the upstream Kubernetes + Service. By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to + the client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, + in milliseconds, in between flushes to the client + while copying the response body. A negative value + means to flush immediately after each write to the + client. This configuration is ignored when ReverseProxy + recognizes a response as a streaming response; for + such responses, writes are flushed to the client + immediately. Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the + request to the upstream Kubernetes Service. It defaults + to https when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as + JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie + can only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only + be specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round + Robin). + type: integer + required: + - name + type: object + type: array + required: + - kind + - match + type: object + type: array + tls: + description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls' + properties: + certResolver: + description: 'CertResolver defines the name of the certificate + resolver to use. Cert resolvers have to be configured in the + static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers' + type: string + domains: + description: 'Domains defines the list of domains that will be + used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains' + items: + description: Domain holds a domain name with SANs. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain + names. + items: + type: string + type: array + type: object + type: array + options: + description: 'Options defines the reference to a TLSOption, that + specifies the parameters of the TLS connection. If not defined, + the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + name: + description: 'Name defines the name of the referenced TLSOption. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption' + type: string + namespace: + description: 'Namespace defines the namespace of the referenced + TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption' + type: string + required: + - name + type: object + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: Store defines the reference to the TLSStore, that + will be used to store certificates. Please note that only `default` + TLSStore can be used. + properties: + name: + description: 'Name defines the name of the referenced TLSStore. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore' + type: string + namespace: + description: 'Namespace defines the namespace of the referenced + TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore' + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutetcps.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutetcps.yaml new file mode 100644 index 00000000000..589fe31c18c --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressroutetcps.yaml @@ -0,0 +1,218 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressroutetcps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRouteTCP + listKind: IngressRouteTCPList + plural: ingressroutetcps + singular: ingressroutetcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: RouteTCP holds the TCP route configuration. + properties: + match: + description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1' + type: string + middlewares: + description: Middlewares defines the list of references to MiddlewareTCP + resources. + items: + description: ObjectReference is a generic reference to a Traefik + resource. + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + type: array + priority: + description: 'Priority defines the router''s priority. More + info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1' + type: integer + services: + description: Services defines the list of TCP services. + items: + description: ServiceTCP defines an upstream TCP service to + proxy traffic to. + properties: + name: + description: Name defines the name of the referenced Kubernetes + Service. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + proxyProtocol: + description: 'ProxyProtocol defines the PROXY protocol + configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol' + properties: + version: + description: Version defines the PROXY Protocol version + to use. + type: integer + type: object + terminationDelay: + description: TerminationDelay defines the deadline that + the proxy sets, after one of its connected peers indicates + it has closed the writing capability of its connection, + to close the reading capability as well, hence fully + terminating the connection. It is a duration in milliseconds, + defaulting to 100. A negative value means an infinite + deadline (i.e. the reading capability is never closed). + type: integer + weight: + description: Weight defines the weight used when balancing + requests between multiple Kubernetes Service. + type: integer + required: + - name + - port + type: object + type: array + required: + - match + type: object + type: array + tls: + description: 'TLS defines the TLS configuration on a layer 4 / TCP + Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1' + properties: + certResolver: + description: 'CertResolver defines the name of the certificate + resolver to use. Cert resolvers have to be configured in the + static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers' + type: string + domains: + description: 'Domains defines the list of domains that will be + used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains' + items: + description: Domain holds a domain name with SANs. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain + names. + items: + type: string + type: array + type: object + type: array + options: + description: 'Options defines the reference to a TLSOption, that + specifies the parameters of the TLS connection. If not defined, + the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + passthrough: + description: Passthrough defines whether a TLS router will terminate + the TLS connection. + type: boolean + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: Store defines the reference to the TLSStore, that + will be used to store certificates. Please note that only `default` + TLSStore can be used. + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_ingressrouteudps.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressrouteudps.yaml new file mode 100644 index 00000000000..c35ee4dc20d --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_ingressrouteudps.yaml @@ -0,0 +1,105 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressrouteudps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRouteUDP + listKind: IngressRouteUDPList + plural: ingressrouteudps + singular: ingressrouteudp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: RouteUDP holds the UDP route configuration. + properties: + services: + description: Services defines the list of UDP services. + items: + description: ServiceUDP defines an upstream UDP service to + proxy traffic to. + properties: + name: + description: Name defines the name of the referenced Kubernetes + Service. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + weight: + description: Weight defines the weight used when balancing + requests between multiple Kubernetes Service. + type: integer + required: + - name + - port + type: object + type: array + type: object + type: array + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_middlewares.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_middlewares.yaml new file mode 100644 index 00000000000..5e14f93fa55 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_middlewares.yaml @@ -0,0 +1,924 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: middlewares.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: Middleware + listKind: MiddlewareList + plural: middlewares + singular: middleware + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'Middleware is the CRD implementation of a Traefik Middleware. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MiddlewareSpec defines the desired state of a Middleware. + properties: + addPrefix: + description: 'AddPrefix holds the add prefix middleware configuration. + This middleware updates the path of a request before forwarding + it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/' + properties: + prefix: + description: Prefix is the string to add before the current path + in the requested URL. It should include a leading slash (/). + type: string + type: object + basicAuth: + description: 'BasicAuth holds the basic auth middleware configuration. + This middleware restricts access to your services to known users. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/' + properties: + headerField: + description: 'HeaderField defines a header field to store the + authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield' + type: string + realm: + description: 'Realm allows the protected resources on a server + to be partitioned into a set of protection spaces, each with + its own authentication scheme. Default: traefik.' + type: string + removeHeader: + description: 'RemoveHeader sets the removeHeader option to true + to remove the authorization header before forwarding the request + to your service. Default: false.' + type: boolean + secret: + description: Secret is the name of the referenced Kubernetes Secret + containing user credentials. + type: string + type: object + buffering: + description: 'Buffering holds the buffering middleware configuration. + This middleware retries or limits the size of requests that can + be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes' + properties: + maxRequestBodyBytes: + description: 'MaxRequestBodyBytes defines the maximum allowed + body size for the request (in bytes). If the request exceeds + the allowed size, it is not forwarded to the service, and the + client gets a 413 (Request Entity Too Large) response. Default: + 0 (no maximum).' + format: int64 + type: integer + maxResponseBodyBytes: + description: 'MaxResponseBodyBytes defines the maximum allowed + response size from the service (in bytes). If the response exceeds + the allowed size, it is not forwarded to the client. The client + gets a 500 (Internal Server Error) response instead. Default: + 0 (no maximum).' + format: int64 + type: integer + memRequestBodyBytes: + description: 'MemRequestBodyBytes defines the threshold (in bytes) + from which the request will be buffered on disk instead of in + memory. Default: 1048576 (1Mi).' + format: int64 + type: integer + memResponseBodyBytes: + description: 'MemResponseBodyBytes defines the threshold (in bytes) + from which the response will be buffered on disk instead of + in memory. Default: 1048576 (1Mi).' + format: int64 + type: integer + retryExpression: + description: 'RetryExpression defines the retry conditions. It + is a logical combination of functions with operators AND (&&) + and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression' + type: string + type: object + chain: + description: 'Chain holds the configuration of the chain middleware. + This middleware enables to define reusable combinations of other + pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/' + properties: + middlewares: + description: Middlewares is the list of MiddlewareRef which composes + the chain. + items: + description: MiddlewareRef is a reference to a Middleware resource. + properties: + name: + description: Name defines the name of the referenced Middleware + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Middleware resource. + type: string + required: + - name + type: object + type: array + type: object + circuitBreaker: + description: CircuitBreaker holds the circuit breaker configuration. + properties: + checkPeriod: + anyOf: + - type: integer + - type: string + description: CheckPeriod is the interval between successive checks + of the circuit breaker condition (when in standby state). + x-kubernetes-int-or-string: true + expression: + description: Expression is the condition that triggers the tripped + state. + type: string + fallbackDuration: + anyOf: + - type: integer + - type: string + description: FallbackDuration is the duration for which the circuit + breaker will wait before trying to recover (from a tripped state). + x-kubernetes-int-or-string: true + recoveryDuration: + anyOf: + - type: integer + - type: string + description: RecoveryDuration is the duration for which the circuit + breaker will try to recover (as soon as it is in recovering + state). + x-kubernetes-int-or-string: true + type: object + compress: + description: 'Compress holds the compress middleware configuration. + This middleware compresses responses before sending them to the + client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/' + properties: + excludedContentTypes: + description: ExcludedContentTypes defines the list of content + types to compare the Content-Type header of the incoming requests + and responses before compressing. + items: + type: string + type: array + minResponseBodyBytes: + description: 'MinResponseBodyBytes defines the minimum amount + of bytes a response body must have to be compressed. Default: + 1024.' + type: integer + type: object + contentType: + description: ContentType holds the content-type middleware configuration. + This middleware exists to enable the correct behavior until at least + the default one can be changed in a future version. + properties: + autoDetect: + description: AutoDetect specifies whether to let the `Content-Type` + header, if it has not been set by the backend, be automatically + set to a value derived from the contents of the response. As + a proxy, the default behavior should be to leave the header + alone, regardless of what the backend did with it. However, + the historic default was to always auto-detect and set the header + if it was nil, and it is going to be kept that way in order + to support users currently relying on it. + type: boolean + type: object + digestAuth: + description: 'DigestAuth holds the digest auth middleware configuration. + This middleware restricts access to your services to known users. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/' + properties: + headerField: + description: 'HeaderField defines a header field to store the + authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield' + type: string + realm: + description: 'Realm allows the protected resources on a server + to be partitioned into a set of protection spaces, each with + its own authentication scheme. Default: traefik.' + type: string + removeHeader: + description: RemoveHeader defines whether to remove the authorization + header before forwarding the request to the backend. + type: boolean + secret: + description: Secret is the name of the referenced Kubernetes Secret + containing user credentials. + type: string + type: object + errors: + description: 'ErrorPage holds the custom error middleware configuration. + This middleware returns a custom page in lieu of the default, according + to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/' + properties: + query: + description: Query defines the URL for the error page (hosted + by service). The {status} variable can be used in order to insert + the status code in the URL. + type: string + service: + description: 'Service defines the reference to a Kubernetes Service + that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service' + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between the + two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or if + the only child is the Kubernetes Service clusterIP. The + Kubernetes Service itself does load-balance to the pods. + By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in milliseconds, + in between flushes to the client while copying the response + body. A negative value means to flush immediately after + each write to the client. This configuration is ignored + when ReverseProxy recognizes a response as a streaming + response; for such responses, writes are flushed to + the client immediately. Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport between + Traefik and your servers. Can only be used on a Kubernetes + Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can + be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported value + at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object (and + to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + status: + description: Status defines which status or range of statuses + should result in an error page. It can be either a status code + as a number (500), as multiple comma-separated numbers (500,502), + as ranges by separating two codes with a dash (500-599), or + a combination of the two (404,418,500-599). + items: + type: string + type: array + type: object + forwardAuth: + description: 'ForwardAuth holds the forward auth middleware configuration. + This middleware delegates the request authentication to a Service. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/' + properties: + address: + description: Address defines the authentication server address. + type: string + authRequestHeaders: + description: AuthRequestHeaders defines the list of the headers + to copy from the request to the authentication server. If not + set or empty then all request headers are passed. + items: + type: string + type: array + authResponseHeaders: + description: AuthResponseHeaders defines the list of headers to + copy from the authentication server response and set on forwarded + request, replacing any existing conflicting headers. + items: + type: string + type: array + authResponseHeadersRegex: + description: 'AuthResponseHeadersRegex defines the regex to match + headers to copy from the authentication server response and + set on forwarded request, after stripping all headers that match + the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex' + type: string + tls: + description: TLS defines the configuration used to secure the + connection to the authentication server. + properties: + caOptional: + type: boolean + caSecret: + description: CASecret is the name of the referenced Kubernetes + Secret containing the CA to validate the server certificate. + The CA certificate is extracted from key `tls.ca` or `ca.crt`. + type: string + certSecret: + description: CertSecret is the name of the referenced Kubernetes + Secret containing the client certificate. The client certificate + is extracted from the keys `tls.crt` and `tls.key`. + type: string + insecureSkipVerify: + description: InsecureSkipVerify defines whether the server + certificates should be validated. + type: boolean + type: object + trustForwardHeader: + description: 'TrustForwardHeader defines whether to trust (ie: + forward) all X-Forwarded-* headers.' + type: boolean + type: object + headers: + description: 'Headers holds the headers middleware configuration. + This middleware manages the requests and responses headers. More + info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders' + properties: + accessControlAllowCredentials: + description: AccessControlAllowCredentials defines whether the + request can include user credentials. + type: boolean + accessControlAllowHeaders: + description: AccessControlAllowHeaders defines the Access-Control-Request-Headers + values sent in preflight response. + items: + type: string + type: array + accessControlAllowMethods: + description: AccessControlAllowMethods defines the Access-Control-Request-Method + values sent in preflight response. + items: + type: string + type: array + accessControlAllowOriginList: + description: AccessControlAllowOriginList is a list of allowable + origins. Can also be a wildcard origin "*". + items: + type: string + type: array + accessControlAllowOriginListRegex: + description: AccessControlAllowOriginListRegex is a list of allowable + origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). + items: + type: string + type: array + accessControlExposeHeaders: + description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers + values sent in preflight response. + items: + type: string + type: array + accessControlMaxAge: + description: AccessControlMaxAge defines the time that a preflight + request may be cached. + format: int64 + type: integer + addVaryHeader: + description: AddVaryHeader defines whether the Vary header is + automatically added/updated when the AccessControlAllowOriginList + is set. + type: boolean + allowedHosts: + description: AllowedHosts defines the fully qualified list of + allowed domain names. + items: + type: string + type: array + browserXssFilter: + description: BrowserXSSFilter defines whether to add the X-XSS-Protection + header with the value 1; mode=block. + type: boolean + contentSecurityPolicy: + description: ContentSecurityPolicy defines the Content-Security-Policy + header value. + type: string + contentTypeNosniff: + description: ContentTypeNosniff defines whether to add the X-Content-Type-Options + header with the nosniff value. + type: boolean + customBrowserXSSValue: + description: CustomBrowserXSSValue defines the X-XSS-Protection + header value. This overrides the BrowserXssFilter option. + type: string + customFrameOptionsValue: + description: CustomFrameOptionsValue defines the X-Frame-Options + header value. This overrides the FrameDeny option. + type: string + customRequestHeaders: + additionalProperties: + type: string + description: CustomRequestHeaders defines the header names and + values to apply to the request. + type: object + customResponseHeaders: + additionalProperties: + type: string + description: CustomResponseHeaders defines the header names and + values to apply to the response. + type: object + featurePolicy: + description: 'Deprecated: use PermissionsPolicy instead.' + type: string + forceSTSHeader: + description: ForceSTSHeader defines whether to add the STS header + even when the connection is HTTP. + type: boolean + frameDeny: + description: FrameDeny defines whether to add the X-Frame-Options + header with the DENY value. + type: boolean + hostsProxyHeaders: + description: HostsProxyHeaders defines the header keys that may + hold a proxied hostname value for the request. + items: + type: string + type: array + isDevelopment: + description: IsDevelopment defines whether to mitigate the unwanted + effects of the AllowedHosts, SSL, and STS options when developing. + Usually testing takes place using HTTP, not HTTPS, and on localhost, + not your production domain. If you would like your development + environment to mimic production with complete Host blocking, + SSL redirects, and STS headers, leave this as false. + type: boolean + permissionsPolicy: + description: PermissionsPolicy defines the Permissions-Policy + header value. This allows sites to control browser features. + type: string + publicKey: + description: PublicKey is the public key that implements HPKP + to prevent MITM attacks with forged certificates. + type: string + referrerPolicy: + description: ReferrerPolicy defines the Referrer-Policy header + value. This allows sites to control whether browsers forward + the Referer header to other sites. + type: string + sslForceHost: + description: 'Deprecated: use RedirectRegex instead.' + type: boolean + sslHost: + description: 'Deprecated: use RedirectRegex instead.' + type: string + sslProxyHeaders: + additionalProperties: + type: string + description: 'SSLProxyHeaders defines the header keys with associated + values that would indicate a valid HTTPS request. It can be + useful when using other proxies (example: "X-Forwarded-Proto": + "https").' + type: object + sslRedirect: + description: 'Deprecated: use EntryPoint redirection or RedirectScheme + instead.' + type: boolean + sslTemporaryRedirect: + description: 'Deprecated: use EntryPoint redirection or RedirectScheme + instead.' + type: boolean + stsIncludeSubdomains: + description: STSIncludeSubdomains defines whether the includeSubDomains + directive is appended to the Strict-Transport-Security header. + type: boolean + stsPreload: + description: STSPreload defines whether the preload flag is appended + to the Strict-Transport-Security header. + type: boolean + stsSeconds: + description: STSSeconds defines the max-age of the Strict-Transport-Security + header. If set to 0, the header is not set. + format: int64 + type: integer + type: object + inFlightReq: + description: 'InFlightReq holds the in-flight request middleware configuration. + This middleware limits the number of requests being processed and + served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/' + properties: + amount: + description: Amount defines the maximum amount of allowed simultaneous + in-flight request. The middleware responds with HTTP 429 Too + Many Requests if there are already amount requests in progress + (based on the same sourceCriterion strategy). + format: int64 + type: integer + sourceCriterion: + description: 'SourceCriterion defines what criterion is used to + group requests as originating from a common source. If several + strategies are defined at the same time, an error will be raised. + If none are set, the default is to use the requestHost. More + info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion' + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration + used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position + (starting from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the + X-Forwarded-For header and select the first IP not in + the list. + items: + type: string + type: array + type: object + requestHeaderName: + description: RequestHeaderName defines the name of the header + used to group incoming requests. + type: string + requestHost: + description: RequestHost defines whether to consider the request + Host as the source. + type: boolean + type: object + type: object + ipWhiteList: + description: 'IPWhiteList holds the IP whitelist middleware configuration. + This middleware accepts / refuses requests based on the client IP. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/' + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration used + by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position (starting + from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the X-Forwarded-For + header and select the first IP not in the list. + items: + type: string + type: array + type: object + sourceRange: + description: SourceRange defines the set of allowed IPs (or ranges + of allowed IPs by using CIDR notation). + items: + type: string + type: array + type: object + passTLSClientCert: + description: 'PassTLSClientCert holds the pass TLS client cert middleware + configuration. This middleware adds the selected data from the passed + client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/' + properties: + info: + description: Info selects the specific client certificate details + you want to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + issuer: + description: Issuer defines the client certificate issuer + details to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + commonName: + description: CommonName defines whether to add the organizationalUnit + information into the issuer. + type: boolean + country: + description: Country defines whether to add the country + information into the issuer. + type: boolean + domainComponent: + description: DomainComponent defines whether to add the + domainComponent information into the issuer. + type: boolean + locality: + description: Locality defines whether to add the locality + information into the issuer. + type: boolean + organization: + description: Organization defines whether to add the organization + information into the issuer. + type: boolean + province: + description: Province defines whether to add the province + information into the issuer. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the serialNumber + information into the issuer. + type: boolean + type: object + notAfter: + description: NotAfter defines whether to add the Not After + information from the Validity part. + type: boolean + notBefore: + description: NotBefore defines whether to add the Not Before + information from the Validity part. + type: boolean + sans: + description: Sans defines whether to add the Subject Alternative + Name information from the Subject Alternative Name part. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the client + serialNumber information. + type: boolean + subject: + description: Subject defines the client certificate subject + details to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + commonName: + description: CommonName defines whether to add the organizationalUnit + information into the subject. + type: boolean + country: + description: Country defines whether to add the country + information into the subject. + type: boolean + domainComponent: + description: DomainComponent defines whether to add the + domainComponent information into the subject. + type: boolean + locality: + description: Locality defines whether to add the locality + information into the subject. + type: boolean + organization: + description: Organization defines whether to add the organization + information into the subject. + type: boolean + organizationalUnit: + description: OrganizationalUnit defines whether to add + the organizationalUnit information into the subject. + type: boolean + province: + description: Province defines whether to add the province + information into the subject. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the serialNumber + information into the subject. + type: boolean + type: object + type: object + pem: + description: PEM sets the X-Forwarded-Tls-Client-Cert header with + the certificate. + type: boolean + type: object + plugin: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + description: 'Plugin defines the middleware plugin configuration. + More info: https://doc.traefik.io/traefik/plugins/' + type: object + rateLimit: + description: 'RateLimit holds the rate limit configuration. This middleware + ensures that services will receive a fair amount of requests, and + allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/' + properties: + average: + description: Average is the maximum rate, by default in requests/s, + allowed for the given source. It defaults to 0, which means + no rate limiting. The rate is actually defined by dividing Average + by Period. So for a rate below 1req/s, one needs to define a + Period larger than a second. + format: int64 + type: integer + burst: + description: Burst is the maximum number of requests allowed to + arrive in the same arbitrarily small period of time. It defaults + to 1. + format: int64 + type: integer + period: + anyOf: + - type: integer + - type: string + description: 'Period, in combination with Average, defines the + actual maximum rate, such as: r = Average / Period. It defaults + to a second.' + x-kubernetes-int-or-string: true + sourceCriterion: + description: SourceCriterion defines what criterion is used to + group requests as originating from a common source. If several + strategies are defined at the same time, an error will be raised. + If none are set, the default is to use the request's remote + address field (as an ipStrategy). + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration + used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position + (starting from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the + X-Forwarded-For header and select the first IP not in + the list. + items: + type: string + type: array + type: object + requestHeaderName: + description: RequestHeaderName defines the name of the header + used to group incoming requests. + type: string + requestHost: + description: RequestHost defines whether to consider the request + Host as the source. + type: boolean + type: object + type: object + redirectRegex: + description: 'RedirectRegex holds the redirect regex middleware configuration. + This middleware redirects a request using regex matching and replacement. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex' + properties: + permanent: + description: Permanent defines whether the redirection is permanent + (301). + type: boolean + regex: + description: Regex defines the regex used to match and capture + elements from the request URL. + type: string + replacement: + description: Replacement defines how to modify the URL to have + the new target URL. + type: string + type: object + redirectScheme: + description: 'RedirectScheme holds the redirect scheme middleware + configuration. This middleware redirects requests from a scheme/port + to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/' + properties: + permanent: + description: Permanent defines whether the redirection is permanent + (301). + type: boolean + port: + description: Port defines the port of the new URL. + type: string + scheme: + description: Scheme defines the scheme of the new URL. + type: string + type: object + replacePath: + description: 'ReplacePath holds the replace path middleware configuration. + This middleware replaces the path of the request URL and store the + original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/' + properties: + path: + description: Path defines the path to use as replacement in the + request URL. + type: string + type: object + replacePathRegex: + description: 'ReplacePathRegex holds the replace path regex middleware + configuration. This middleware replaces the path of a URL using + regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/' + properties: + regex: + description: Regex defines the regular expression used to match + and capture the path from the request URL. + type: string + replacement: + description: Replacement defines the replacement path format, + which can include captured variables. + type: string + type: object + retry: + description: 'Retry holds the retry middleware configuration. This + middleware reissues requests a given number of times to a backend + server if that server does not reply. As soon as the server answers, + the middleware stops retrying, regardless of the response status. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/' + properties: + attempts: + description: Attempts defines how many times the request should + be retried. + type: integer + initialInterval: + anyOf: + - type: integer + - type: string + description: InitialInterval defines the first wait time in the + exponential backoff series. The maximum interval is calculated + as twice the initialInterval. If unspecified, requests will + be retried immediately. The value of initialInterval should + be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. + x-kubernetes-int-or-string: true + type: object + stripPrefix: + description: 'StripPrefix holds the strip prefix middleware configuration. + This middleware removes the specified prefixes from the URL path. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/' + properties: + forceSlash: + description: 'ForceSlash ensures that the resulting stripped path + is not the empty string, by replacing it with / when necessary. + Default: true.' + type: boolean + prefixes: + description: Prefixes defines the prefixes to strip from the request + URL. + items: + type: string + type: array + type: object + stripPrefixRegex: + description: 'StripPrefixRegex holds the strip prefix regex middleware + configuration. This middleware removes the matching prefixes from + the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/' + properties: + regex: + description: Regex defines the regular expression to match the + path prefix from the request URL. + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_middlewaretcps.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_middlewaretcps.yaml new file mode 100644 index 00000000000..85302fa823d --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_middlewaretcps.yaml @@ -0,0 +1,72 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: middlewaretcps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: MiddlewareTCP + listKind: MiddlewareTCPList + plural: middlewaretcps + singular: middlewaretcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + properties: + inFlightConn: + description: InFlightConn defines the InFlightConn middleware configuration. + properties: + amount: + description: Amount defines the maximum amount of allowed simultaneous + connections. The middleware closes the connection if there are + already amount connections opened. + format: int64 + type: integer + type: object + ipWhiteList: + description: IPWhiteList defines the IPWhiteList middleware configuration. + properties: + sourceRange: + description: SourceRange defines the allowed IPs (or ranges of + allowed IPs by using CIDR notation). + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_serverstransports.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_serverstransports.yaml new file mode 100644 index 00000000000..d6fc3a92dba --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_serverstransports.yaml @@ -0,0 +1,128 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: serverstransports.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: ServersTransport + listKind: ServersTransportList + plural: serverstransports + singular: serverstransport + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'ServersTransport is the CRD implementation of a ServersTransport. + If no serversTransport is specified, the default@internal will be used. + The default@internal serversTransport is created from the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServersTransportSpec defines the desired state of a ServersTransport. + properties: + certificatesSecrets: + description: CertificatesSecrets defines a list of secret storing + client certificates for mTLS. + items: + type: string + type: array + disableHTTP2: + description: DisableHTTP2 disables HTTP/2 for connections with backend + servers. + type: boolean + forwardingTimeouts: + description: ForwardingTimeouts defines the timeouts for requests + forwarded to the backend servers. + properties: + dialTimeout: + anyOf: + - type: integer + - type: string + description: DialTimeout is the amount of time to wait until a + connection to a backend server can be established. + x-kubernetes-int-or-string: true + idleConnTimeout: + anyOf: + - type: integer + - type: string + description: IdleConnTimeout is the maximum period for which an + idle HTTP keep-alive connection will remain open before closing + itself. + x-kubernetes-int-or-string: true + pingTimeout: + anyOf: + - type: integer + - type: string + description: PingTimeout is the timeout after which the HTTP/2 + connection will be closed if a response to ping is not received. + x-kubernetes-int-or-string: true + readIdleTimeout: + anyOf: + - type: integer + - type: string + description: ReadIdleTimeout is the timeout after which a health + check using ping frame will be carried out if no frame is received + on the HTTP/2 connection. + x-kubernetes-int-or-string: true + responseHeaderTimeout: + anyOf: + - type: integer + - type: string + description: ResponseHeaderTimeout is the amount of time to wait + for a server's response headers after fully writing the request + (including its body, if any). + x-kubernetes-int-or-string: true + type: object + insecureSkipVerify: + description: InsecureSkipVerify disables SSL certificate verification. + type: boolean + maxIdleConnsPerHost: + description: MaxIdleConnsPerHost controls the maximum idle (keep-alive) + to keep per-host. + type: integer + peerCertURI: + description: PeerCertURI defines the peer cert URI used to match against + SAN URI during the peer certificate verification. + type: string + rootCAsSecrets: + description: RootCAsSecrets defines a list of CA secret used to validate + self-signed certificate. + items: + type: string + type: array + serverName: + description: ServerName defines the server name used to contact the + server. + type: string + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_tlsoptions.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_tlsoptions.yaml new file mode 100644 index 00000000000..73667667a3a --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_tlsoptions.yaml @@ -0,0 +1,113 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: tlsoptions.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TLSOption + listKind: TLSOptionList + plural: tlsoptions + singular: tlsoption + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TLSOption is the CRD implementation of a Traefik TLS Option, + allowing to configure some parameters of the TLS connection. More info: + https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TLSOptionSpec defines the desired state of a TLSOption. + properties: + alpnProtocols: + description: 'ALPNProtocols defines the list of supported application + level protocols for the TLS handshake, in order of preference. More + info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols' + items: + type: string + type: array + cipherSuites: + description: 'CipherSuites defines the list of supported cipher suites + for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites' + items: + type: string + type: array + clientAuth: + description: ClientAuth defines the server's policy for TLS Client + Authentication. + properties: + clientAuthType: + description: ClientAuthType defines the client authentication + type to apply. + enum: + - NoClientCert + - RequestClientCert + - RequireAnyClientCert + - VerifyClientCertIfGiven + - RequireAndVerifyClientCert + type: string + secretNames: + description: SecretNames defines the names of the referenced Kubernetes + Secret storing certificate details. + items: + type: string + type: array + type: object + curvePreferences: + description: 'CurvePreferences defines the preferred elliptic curves + in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences' + items: + type: string + type: array + maxVersion: + description: 'MaxVersion defines the maximum TLS version that Traefik + will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, + VersionTLS13. Default: None.' + type: string + minVersion: + description: 'MinVersion defines the minimum TLS version that Traefik + will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, + VersionTLS13. Default: VersionTLS10.' + type: string + preferServerCipherSuites: + description: 'PreferServerCipherSuites defines whether the server + chooses a cipher suite among his own instead of among the client''s. + It is enabled automatically when minVersion or maxVersion is set. + Deprecated: https://github.com/golang/go/issues/45430' + type: boolean + sniStrict: + description: SniStrict defines whether Traefik allows connections + from clients connections that do not specify a server_name extension. + type: boolean + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_tlsstores.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_tlsstores.yaml new file mode 100644 index 00000000000..12f0ad37d86 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_tlsstores.yaml @@ -0,0 +1,99 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: tlsstores.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TLSStore + listKind: TLSStoreList + plural: tlsstores + singular: tlsstore + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For + the time being, only the TLSStore named default is supported. This means + that you cannot have two stores that are named default in different Kubernetes + namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TLSStoreSpec defines the desired state of a TLSStore. + properties: + certificates: + description: Certificates is a list of secret names, each secret holding + a key/certificate pair to add to the store. + items: + description: Certificate holds a secret name for the TLSStore resource. + properties: + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + required: + - secretName + type: object + type: array + defaultCertificate: + description: DefaultCertificate defines the default certificate configuration. + properties: + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + required: + - secretName + type: object + defaultGeneratedCert: + description: DefaultGeneratedCert defines the default generated certificate + configuration. + properties: + domain: + description: Domain is the domain definition for the DefaultCertificate. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain names. + items: + type: string + type: array + type: object + resolver: + description: Resolver is the name of the resolver that will be + used to issue the DefaultCertificate. + type: string + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.containo.us_traefikservices.yaml b/premium/traefik/26.7.4/crds/traefik.containo.us_traefikservices.yaml new file mode 100644 index 00000000000..0dcf470034f --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.containo.us_traefikservices.yaml @@ -0,0 +1,402 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: traefikservices.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TraefikService + listKind: TraefikServiceList + plural: traefikservices + singular: traefikservice + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TraefikService is the CRD implementation of a Traefik Service. + TraefikService object allows to: - Apply weight to Services on load-balancing + - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TraefikServiceSpec defines the desired state of a TraefikService. + properties: + mirroring: + description: Mirroring defines the Mirroring service configuration. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + maxBodySize: + description: MaxBodySize defines the maximum size allowed for + the body of the request. If the body is larger, the request + is not mirrored. Default value is -1, which means unlimited + size. + format: int64 + type: integer + mirrors: + description: Mirrors defines the list of mirrors where Traefik + will duplicate the traffic. + items: + description: MirrorService holds the mirror configuration. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or + if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + percent: + description: 'Percent defines the part of the traffic to + mirror. Supported values: 0 to 100.' + type: integer + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in + milliseconds, in between flushes to the client while + copying the response body. A negative value means + to flush immediately after each write to the client. + This configuration is ignored when ReverseProxy recognizes + a response as a streaming response; for such responses, + writes are flushed to the client immediately. Default: + 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between the two + is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or if the + only child is the Kubernetes Service clusterIP. The Kubernetes + Service itself does load-balance to the pods. By default, NativeLB + is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host header + is forwarded to the upstream Kubernetes Service. By default, + passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. This + can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards the + response from the upstream Kubernetes Service to the client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in milliseconds, + in between flushes to the client while copying the response + body. A negative value means to flush immediately after + each write to the client. This configuration is ignored + when ReverseProxy recognizes a response as a streaming response; + for such responses, writes are flushed to the client immediately. + Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https when + Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport between + Traefik and your servers. Can only be used on a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can be + accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. More + info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can only + be transmitted over an encrypted connection (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy between + the servers. RoundRobin is the only supported value at the moment. + type: string + weight: + description: Weight defines the weight and should only be specified + when Name references a TraefikService object (and to be precise, + one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + weighted: + description: Weighted defines the Weighted Round Robin configuration. + properties: + services: + description: Services defines the list of Kubernetes Service and/or + TraefikService to load-balance, with weight. + items: + description: Service defines an upstream HTTP service to proxy + traffic to. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or + if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in + milliseconds, in between flushes to the client while + copying the response body. A negative value means + to flush immediately after each write to the client. + This configuration is ignored when ReverseProxy recognizes + a response as a streaming response; for such responses, + writes are flushed to the client immediately. Default: + 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + sticky: + description: 'Sticky defines whether sticky sessions are enabled. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can be + accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. More + info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can only + be transmitted over an encrypted connection (i.e. HTTPS). + type: boolean + type: object + type: object + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_ingressroutes.yaml b/premium/traefik/26.7.4/crds/traefik.io_ingressroutes.yaml new file mode 100644 index 00000000000..89aaee75952 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_ingressroutes.yaml @@ -0,0 +1,275 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressroutes.traefik.io +spec: + group: traefik.io + names: + kind: IngressRoute + listKind: IngressRouteList + plural: ingressroutes + singular: ingressroute + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRoute is the CRD implementation of a Traefik HTTP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteSpec defines the desired state of IngressRoute. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: Route holds the HTTP route configuration. + properties: + kind: + description: Kind defines the kind of the route. Rule is the + only supported kind. + enum: + - Rule + type: string + match: + description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule' + type: string + middlewares: + description: 'Middlewares defines the list of references to + Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware' + items: + description: MiddlewareRef is a reference to a Middleware + resource. + properties: + name: + description: Name defines the name of the referenced Middleware + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Middleware resource. + type: string + required: + - name + type: object + type: array + priority: + description: 'Priority defines the router''s priority. More + info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority' + type: integer + services: + description: Services defines the list of Service. It can contain + any combination of TraefikService and/or reference to a Kubernetes + Service. + items: + description: Service defines an upstream HTTP service to proxy + traffic to. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client + Host header is forwarded to the upstream Kubernetes + Service. By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to + the client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, + in milliseconds, in between flushes to the client + while copying the response body. A negative value + means to flush immediately after each write to the + client. This configuration is ignored when ReverseProxy + recognizes a response as a streaming response; for + such responses, writes are flushed to the client + immediately. Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the + request to the upstream Kubernetes Service. It defaults + to https when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as + JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie + can only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only + be specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round + Robin). + type: integer + required: + - name + type: object + type: array + required: + - kind + - match + type: object + type: array + tls: + description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls' + properties: + certResolver: + description: 'CertResolver defines the name of the certificate + resolver to use. Cert resolvers have to be configured in the + static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers' + type: string + domains: + description: 'Domains defines the list of domains that will be + used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains' + items: + description: Domain holds a domain name with SANs. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain + names. + items: + type: string + type: array + type: object + type: array + options: + description: 'Options defines the reference to a TLSOption, that + specifies the parameters of the TLS connection. If not defined, + the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + name: + description: 'Name defines the name of the referenced TLSOption. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption' + type: string + namespace: + description: 'Namespace defines the namespace of the referenced + TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption' + type: string + required: + - name + type: object + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: Store defines the reference to the TLSStore, that + will be used to store certificates. Please note that only `default` + TLSStore can be used. + properties: + name: + description: 'Name defines the name of the referenced TLSStore. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore' + type: string + namespace: + description: 'Namespace defines the namespace of the referenced + TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore' + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_ingressroutetcps.yaml b/premium/traefik/26.7.4/crds/traefik.io_ingressroutetcps.yaml new file mode 100644 index 00000000000..82f61ac24f1 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_ingressroutetcps.yaml @@ -0,0 +1,218 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressroutetcps.traefik.io +spec: + group: traefik.io + names: + kind: IngressRouteTCP + listKind: IngressRouteTCPList + plural: ingressroutetcps + singular: ingressroutetcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: RouteTCP holds the TCP route configuration. + properties: + match: + description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1' + type: string + middlewares: + description: Middlewares defines the list of references to MiddlewareTCP + resources. + items: + description: ObjectReference is a generic reference to a Traefik + resource. + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + type: array + priority: + description: 'Priority defines the router''s priority. More + info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1' + type: integer + services: + description: Services defines the list of TCP services. + items: + description: ServiceTCP defines an upstream TCP service to + proxy traffic to. + properties: + name: + description: Name defines the name of the referenced Kubernetes + Service. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + proxyProtocol: + description: 'ProxyProtocol defines the PROXY protocol + configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol' + properties: + version: + description: Version defines the PROXY Protocol version + to use. + type: integer + type: object + terminationDelay: + description: TerminationDelay defines the deadline that + the proxy sets, after one of its connected peers indicates + it has closed the writing capability of its connection, + to close the reading capability as well, hence fully + terminating the connection. It is a duration in milliseconds, + defaulting to 100. A negative value means an infinite + deadline (i.e. the reading capability is never closed). + type: integer + weight: + description: Weight defines the weight used when balancing + requests between multiple Kubernetes Service. + type: integer + required: + - name + - port + type: object + type: array + required: + - match + type: object + type: array + tls: + description: 'TLS defines the TLS configuration on a layer 4 / TCP + Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1' + properties: + certResolver: + description: 'CertResolver defines the name of the certificate + resolver to use. Cert resolvers have to be configured in the + static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers' + type: string + domains: + description: 'Domains defines the list of domains that will be + used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains' + items: + description: Domain holds a domain name with SANs. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain + names. + items: + type: string + type: array + type: object + type: array + options: + description: 'Options defines the reference to a TLSOption, that + specifies the parameters of the TLS connection. If not defined, + the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + passthrough: + description: Passthrough defines whether a TLS router will terminate + the TLS connection. + type: boolean + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: Store defines the reference to the TLSStore, that + will be used to store certificates. Please note that only `default` + TLSStore can be used. + properties: + name: + description: Name defines the name of the referenced Traefik + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Traefik resource. + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_ingressrouteudps.yaml b/premium/traefik/26.7.4/crds/traefik.io_ingressrouteudps.yaml new file mode 100644 index 00000000000..27c50185d08 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_ingressrouteudps.yaml @@ -0,0 +1,105 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: ingressrouteudps.traefik.io +spec: + group: traefik.io + names: + kind: IngressRouteUDP + listKind: IngressRouteUDPList + plural: ingressrouteudps + singular: ingressrouteudp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + properties: + entryPoints: + description: 'EntryPoints defines the list of entry point names to + bind to. Entry points have to be configured in the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ + Default: all.' + items: + type: string + type: array + routes: + description: Routes defines the list of routes. + items: + description: RouteUDP holds the UDP route configuration. + properties: + services: + description: Services defines the list of UDP services. + items: + description: ServiceUDP defines an upstream UDP service to + proxy traffic to. + properties: + name: + description: Name defines the name of the referenced Kubernetes + Service. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs + or if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + weight: + description: Weight defines the weight used when balancing + requests between multiple Kubernetes Service. + type: integer + required: + - name + - port + type: object + type: array + type: object + type: array + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_middlewares.yaml b/premium/traefik/26.7.4/crds/traefik.io_middlewares.yaml new file mode 100644 index 00000000000..5a4dc3640fa --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_middlewares.yaml @@ -0,0 +1,924 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: middlewares.traefik.io +spec: + group: traefik.io + names: + kind: Middleware + listKind: MiddlewareList + plural: middlewares + singular: middleware + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'Middleware is the CRD implementation of a Traefik Middleware. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MiddlewareSpec defines the desired state of a Middleware. + properties: + addPrefix: + description: 'AddPrefix holds the add prefix middleware configuration. + This middleware updates the path of a request before forwarding + it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/' + properties: + prefix: + description: Prefix is the string to add before the current path + in the requested URL. It should include a leading slash (/). + type: string + type: object + basicAuth: + description: 'BasicAuth holds the basic auth middleware configuration. + This middleware restricts access to your services to known users. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/' + properties: + headerField: + description: 'HeaderField defines a header field to store the + authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield' + type: string + realm: + description: 'Realm allows the protected resources on a server + to be partitioned into a set of protection spaces, each with + its own authentication scheme. Default: traefik.' + type: string + removeHeader: + description: 'RemoveHeader sets the removeHeader option to true + to remove the authorization header before forwarding the request + to your service. Default: false.' + type: boolean + secret: + description: Secret is the name of the referenced Kubernetes Secret + containing user credentials. + type: string + type: object + buffering: + description: 'Buffering holds the buffering middleware configuration. + This middleware retries or limits the size of requests that can + be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes' + properties: + maxRequestBodyBytes: + description: 'MaxRequestBodyBytes defines the maximum allowed + body size for the request (in bytes). If the request exceeds + the allowed size, it is not forwarded to the service, and the + client gets a 413 (Request Entity Too Large) response. Default: + 0 (no maximum).' + format: int64 + type: integer + maxResponseBodyBytes: + description: 'MaxResponseBodyBytes defines the maximum allowed + response size from the service (in bytes). If the response exceeds + the allowed size, it is not forwarded to the client. The client + gets a 500 (Internal Server Error) response instead. Default: + 0 (no maximum).' + format: int64 + type: integer + memRequestBodyBytes: + description: 'MemRequestBodyBytes defines the threshold (in bytes) + from which the request will be buffered on disk instead of in + memory. Default: 1048576 (1Mi).' + format: int64 + type: integer + memResponseBodyBytes: + description: 'MemResponseBodyBytes defines the threshold (in bytes) + from which the response will be buffered on disk instead of + in memory. Default: 1048576 (1Mi).' + format: int64 + type: integer + retryExpression: + description: 'RetryExpression defines the retry conditions. It + is a logical combination of functions with operators AND (&&) + and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression' + type: string + type: object + chain: + description: 'Chain holds the configuration of the chain middleware. + This middleware enables to define reusable combinations of other + pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/' + properties: + middlewares: + description: Middlewares is the list of MiddlewareRef which composes + the chain. + items: + description: MiddlewareRef is a reference to a Middleware resource. + properties: + name: + description: Name defines the name of the referenced Middleware + resource. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Middleware resource. + type: string + required: + - name + type: object + type: array + type: object + circuitBreaker: + description: CircuitBreaker holds the circuit breaker configuration. + properties: + checkPeriod: + anyOf: + - type: integer + - type: string + description: CheckPeriod is the interval between successive checks + of the circuit breaker condition (when in standby state). + x-kubernetes-int-or-string: true + expression: + description: Expression is the condition that triggers the tripped + state. + type: string + fallbackDuration: + anyOf: + - type: integer + - type: string + description: FallbackDuration is the duration for which the circuit + breaker will wait before trying to recover (from a tripped state). + x-kubernetes-int-or-string: true + recoveryDuration: + anyOf: + - type: integer + - type: string + description: RecoveryDuration is the duration for which the circuit + breaker will try to recover (as soon as it is in recovering + state). + x-kubernetes-int-or-string: true + type: object + compress: + description: 'Compress holds the compress middleware configuration. + This middleware compresses responses before sending them to the + client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/' + properties: + excludedContentTypes: + description: ExcludedContentTypes defines the list of content + types to compare the Content-Type header of the incoming requests + and responses before compressing. + items: + type: string + type: array + minResponseBodyBytes: + description: 'MinResponseBodyBytes defines the minimum amount + of bytes a response body must have to be compressed. Default: + 1024.' + type: integer + type: object + contentType: + description: ContentType holds the content-type middleware configuration. + This middleware exists to enable the correct behavior until at least + the default one can be changed in a future version. + properties: + autoDetect: + description: AutoDetect specifies whether to let the `Content-Type` + header, if it has not been set by the backend, be automatically + set to a value derived from the contents of the response. As + a proxy, the default behavior should be to leave the header + alone, regardless of what the backend did with it. However, + the historic default was to always auto-detect and set the header + if it was nil, and it is going to be kept that way in order + to support users currently relying on it. + type: boolean + type: object + digestAuth: + description: 'DigestAuth holds the digest auth middleware configuration. + This middleware restricts access to your services to known users. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/' + properties: + headerField: + description: 'HeaderField defines a header field to store the + authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield' + type: string + realm: + description: 'Realm allows the protected resources on a server + to be partitioned into a set of protection spaces, each with + its own authentication scheme. Default: traefik.' + type: string + removeHeader: + description: RemoveHeader defines whether to remove the authorization + header before forwarding the request to the backend. + type: boolean + secret: + description: Secret is the name of the referenced Kubernetes Secret + containing user credentials. + type: string + type: object + errors: + description: 'ErrorPage holds the custom error middleware configuration. + This middleware returns a custom page in lieu of the default, according + to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/' + properties: + query: + description: Query defines the URL for the error page (hosted + by service). The {status} variable can be used in order to insert + the status code in the URL. + type: string + service: + description: 'Service defines the reference to a Kubernetes Service + that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service' + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between the + two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or if + the only child is the Kubernetes Service clusterIP. The + Kubernetes Service itself does load-balance to the pods. + By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in milliseconds, + in between flushes to the client while copying the response + body. A negative value means to flush immediately after + each write to the client. This configuration is ignored + when ReverseProxy recognizes a response as a streaming + response; for such responses, writes are flushed to + the client immediately. Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport between + Traefik and your servers. Can only be used on a Kubernetes + Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can + be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported value + at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object (and + to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + status: + description: Status defines which status or range of statuses + should result in an error page. It can be either a status code + as a number (500), as multiple comma-separated numbers (500,502), + as ranges by separating two codes with a dash (500-599), or + a combination of the two (404,418,500-599). + items: + type: string + type: array + type: object + forwardAuth: + description: 'ForwardAuth holds the forward auth middleware configuration. + This middleware delegates the request authentication to a Service. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/' + properties: + address: + description: Address defines the authentication server address. + type: string + authRequestHeaders: + description: AuthRequestHeaders defines the list of the headers + to copy from the request to the authentication server. If not + set or empty then all request headers are passed. + items: + type: string + type: array + authResponseHeaders: + description: AuthResponseHeaders defines the list of headers to + copy from the authentication server response and set on forwarded + request, replacing any existing conflicting headers. + items: + type: string + type: array + authResponseHeadersRegex: + description: 'AuthResponseHeadersRegex defines the regex to match + headers to copy from the authentication server response and + set on forwarded request, after stripping all headers that match + the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex' + type: string + tls: + description: TLS defines the configuration used to secure the + connection to the authentication server. + properties: + caOptional: + type: boolean + caSecret: + description: CASecret is the name of the referenced Kubernetes + Secret containing the CA to validate the server certificate. + The CA certificate is extracted from key `tls.ca` or `ca.crt`. + type: string + certSecret: + description: CertSecret is the name of the referenced Kubernetes + Secret containing the client certificate. The client certificate + is extracted from the keys `tls.crt` and `tls.key`. + type: string + insecureSkipVerify: + description: InsecureSkipVerify defines whether the server + certificates should be validated. + type: boolean + type: object + trustForwardHeader: + description: 'TrustForwardHeader defines whether to trust (ie: + forward) all X-Forwarded-* headers.' + type: boolean + type: object + headers: + description: 'Headers holds the headers middleware configuration. + This middleware manages the requests and responses headers. More + info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders' + properties: + accessControlAllowCredentials: + description: AccessControlAllowCredentials defines whether the + request can include user credentials. + type: boolean + accessControlAllowHeaders: + description: AccessControlAllowHeaders defines the Access-Control-Request-Headers + values sent in preflight response. + items: + type: string + type: array + accessControlAllowMethods: + description: AccessControlAllowMethods defines the Access-Control-Request-Method + values sent in preflight response. + items: + type: string + type: array + accessControlAllowOriginList: + description: AccessControlAllowOriginList is a list of allowable + origins. Can also be a wildcard origin "*". + items: + type: string + type: array + accessControlAllowOriginListRegex: + description: AccessControlAllowOriginListRegex is a list of allowable + origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). + items: + type: string + type: array + accessControlExposeHeaders: + description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers + values sent in preflight response. + items: + type: string + type: array + accessControlMaxAge: + description: AccessControlMaxAge defines the time that a preflight + request may be cached. + format: int64 + type: integer + addVaryHeader: + description: AddVaryHeader defines whether the Vary header is + automatically added/updated when the AccessControlAllowOriginList + is set. + type: boolean + allowedHosts: + description: AllowedHosts defines the fully qualified list of + allowed domain names. + items: + type: string + type: array + browserXssFilter: + description: BrowserXSSFilter defines whether to add the X-XSS-Protection + header with the value 1; mode=block. + type: boolean + contentSecurityPolicy: + description: ContentSecurityPolicy defines the Content-Security-Policy + header value. + type: string + contentTypeNosniff: + description: ContentTypeNosniff defines whether to add the X-Content-Type-Options + header with the nosniff value. + type: boolean + customBrowserXSSValue: + description: CustomBrowserXSSValue defines the X-XSS-Protection + header value. This overrides the BrowserXssFilter option. + type: string + customFrameOptionsValue: + description: CustomFrameOptionsValue defines the X-Frame-Options + header value. This overrides the FrameDeny option. + type: string + customRequestHeaders: + additionalProperties: + type: string + description: CustomRequestHeaders defines the header names and + values to apply to the request. + type: object + customResponseHeaders: + additionalProperties: + type: string + description: CustomResponseHeaders defines the header names and + values to apply to the response. + type: object + featurePolicy: + description: 'Deprecated: use PermissionsPolicy instead.' + type: string + forceSTSHeader: + description: ForceSTSHeader defines whether to add the STS header + even when the connection is HTTP. + type: boolean + frameDeny: + description: FrameDeny defines whether to add the X-Frame-Options + header with the DENY value. + type: boolean + hostsProxyHeaders: + description: HostsProxyHeaders defines the header keys that may + hold a proxied hostname value for the request. + items: + type: string + type: array + isDevelopment: + description: IsDevelopment defines whether to mitigate the unwanted + effects of the AllowedHosts, SSL, and STS options when developing. + Usually testing takes place using HTTP, not HTTPS, and on localhost, + not your production domain. If you would like your development + environment to mimic production with complete Host blocking, + SSL redirects, and STS headers, leave this as false. + type: boolean + permissionsPolicy: + description: PermissionsPolicy defines the Permissions-Policy + header value. This allows sites to control browser features. + type: string + publicKey: + description: PublicKey is the public key that implements HPKP + to prevent MITM attacks with forged certificates. + type: string + referrerPolicy: + description: ReferrerPolicy defines the Referrer-Policy header + value. This allows sites to control whether browsers forward + the Referer header to other sites. + type: string + sslForceHost: + description: 'Deprecated: use RedirectRegex instead.' + type: boolean + sslHost: + description: 'Deprecated: use RedirectRegex instead.' + type: string + sslProxyHeaders: + additionalProperties: + type: string + description: 'SSLProxyHeaders defines the header keys with associated + values that would indicate a valid HTTPS request. It can be + useful when using other proxies (example: "X-Forwarded-Proto": + "https").' + type: object + sslRedirect: + description: 'Deprecated: use EntryPoint redirection or RedirectScheme + instead.' + type: boolean + sslTemporaryRedirect: + description: 'Deprecated: use EntryPoint redirection or RedirectScheme + instead.' + type: boolean + stsIncludeSubdomains: + description: STSIncludeSubdomains defines whether the includeSubDomains + directive is appended to the Strict-Transport-Security header. + type: boolean + stsPreload: + description: STSPreload defines whether the preload flag is appended + to the Strict-Transport-Security header. + type: boolean + stsSeconds: + description: STSSeconds defines the max-age of the Strict-Transport-Security + header. If set to 0, the header is not set. + format: int64 + type: integer + type: object + inFlightReq: + description: 'InFlightReq holds the in-flight request middleware configuration. + This middleware limits the number of requests being processed and + served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/' + properties: + amount: + description: Amount defines the maximum amount of allowed simultaneous + in-flight request. The middleware responds with HTTP 429 Too + Many Requests if there are already amount requests in progress + (based on the same sourceCriterion strategy). + format: int64 + type: integer + sourceCriterion: + description: 'SourceCriterion defines what criterion is used to + group requests as originating from a common source. If several + strategies are defined at the same time, an error will be raised. + If none are set, the default is to use the requestHost. More + info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion' + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration + used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position + (starting from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the + X-Forwarded-For header and select the first IP not in + the list. + items: + type: string + type: array + type: object + requestHeaderName: + description: RequestHeaderName defines the name of the header + used to group incoming requests. + type: string + requestHost: + description: RequestHost defines whether to consider the request + Host as the source. + type: boolean + type: object + type: object + ipWhiteList: + description: 'IPWhiteList holds the IP whitelist middleware configuration. + This middleware accepts / refuses requests based on the client IP. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/' + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration used + by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position (starting + from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the X-Forwarded-For + header and select the first IP not in the list. + items: + type: string + type: array + type: object + sourceRange: + description: SourceRange defines the set of allowed IPs (or ranges + of allowed IPs by using CIDR notation). + items: + type: string + type: array + type: object + passTLSClientCert: + description: 'PassTLSClientCert holds the pass TLS client cert middleware + configuration. This middleware adds the selected data from the passed + client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/' + properties: + info: + description: Info selects the specific client certificate details + you want to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + issuer: + description: Issuer defines the client certificate issuer + details to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + commonName: + description: CommonName defines whether to add the organizationalUnit + information into the issuer. + type: boolean + country: + description: Country defines whether to add the country + information into the issuer. + type: boolean + domainComponent: + description: DomainComponent defines whether to add the + domainComponent information into the issuer. + type: boolean + locality: + description: Locality defines whether to add the locality + information into the issuer. + type: boolean + organization: + description: Organization defines whether to add the organization + information into the issuer. + type: boolean + province: + description: Province defines whether to add the province + information into the issuer. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the serialNumber + information into the issuer. + type: boolean + type: object + notAfter: + description: NotAfter defines whether to add the Not After + information from the Validity part. + type: boolean + notBefore: + description: NotBefore defines whether to add the Not Before + information from the Validity part. + type: boolean + sans: + description: Sans defines whether to add the Subject Alternative + Name information from the Subject Alternative Name part. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the client + serialNumber information. + type: boolean + subject: + description: Subject defines the client certificate subject + details to add to the X-Forwarded-Tls-Client-Cert-Info header. + properties: + commonName: + description: CommonName defines whether to add the organizationalUnit + information into the subject. + type: boolean + country: + description: Country defines whether to add the country + information into the subject. + type: boolean + domainComponent: + description: DomainComponent defines whether to add the + domainComponent information into the subject. + type: boolean + locality: + description: Locality defines whether to add the locality + information into the subject. + type: boolean + organization: + description: Organization defines whether to add the organization + information into the subject. + type: boolean + organizationalUnit: + description: OrganizationalUnit defines whether to add + the organizationalUnit information into the subject. + type: boolean + province: + description: Province defines whether to add the province + information into the subject. + type: boolean + serialNumber: + description: SerialNumber defines whether to add the serialNumber + information into the subject. + type: boolean + type: object + type: object + pem: + description: PEM sets the X-Forwarded-Tls-Client-Cert header with + the certificate. + type: boolean + type: object + plugin: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + description: 'Plugin defines the middleware plugin configuration. + More info: https://doc.traefik.io/traefik/plugins/' + type: object + rateLimit: + description: 'RateLimit holds the rate limit configuration. This middleware + ensures that services will receive a fair amount of requests, and + allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/' + properties: + average: + description: Average is the maximum rate, by default in requests/s, + allowed for the given source. It defaults to 0, which means + no rate limiting. The rate is actually defined by dividing Average + by Period. So for a rate below 1req/s, one needs to define a + Period larger than a second. + format: int64 + type: integer + burst: + description: Burst is the maximum number of requests allowed to + arrive in the same arbitrarily small period of time. It defaults + to 1. + format: int64 + type: integer + period: + anyOf: + - type: integer + - type: string + description: 'Period, in combination with Average, defines the + actual maximum rate, such as: r = Average / Period. It defaults + to a second.' + x-kubernetes-int-or-string: true + sourceCriterion: + description: SourceCriterion defines what criterion is used to + group requests as originating from a common source. If several + strategies are defined at the same time, an error will be raised. + If none are set, the default is to use the request's remote + address field (as an ipStrategy). + properties: + ipStrategy: + description: 'IPStrategy holds the IP strategy configuration + used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy' + properties: + depth: + description: Depth tells Traefik to use the X-Forwarded-For + header and take the IP located at the depth position + (starting from the right). + type: integer + excludedIPs: + description: ExcludedIPs configures Traefik to scan the + X-Forwarded-For header and select the first IP not in + the list. + items: + type: string + type: array + type: object + requestHeaderName: + description: RequestHeaderName defines the name of the header + used to group incoming requests. + type: string + requestHost: + description: RequestHost defines whether to consider the request + Host as the source. + type: boolean + type: object + type: object + redirectRegex: + description: 'RedirectRegex holds the redirect regex middleware configuration. + This middleware redirects a request using regex matching and replacement. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex' + properties: + permanent: + description: Permanent defines whether the redirection is permanent + (301). + type: boolean + regex: + description: Regex defines the regex used to match and capture + elements from the request URL. + type: string + replacement: + description: Replacement defines how to modify the URL to have + the new target URL. + type: string + type: object + redirectScheme: + description: 'RedirectScheme holds the redirect scheme middleware + configuration. This middleware redirects requests from a scheme/port + to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/' + properties: + permanent: + description: Permanent defines whether the redirection is permanent + (301). + type: boolean + port: + description: Port defines the port of the new URL. + type: string + scheme: + description: Scheme defines the scheme of the new URL. + type: string + type: object + replacePath: + description: 'ReplacePath holds the replace path middleware configuration. + This middleware replaces the path of the request URL and store the + original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/' + properties: + path: + description: Path defines the path to use as replacement in the + request URL. + type: string + type: object + replacePathRegex: + description: 'ReplacePathRegex holds the replace path regex middleware + configuration. This middleware replaces the path of a URL using + regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/' + properties: + regex: + description: Regex defines the regular expression used to match + and capture the path from the request URL. + type: string + replacement: + description: Replacement defines the replacement path format, + which can include captured variables. + type: string + type: object + retry: + description: 'Retry holds the retry middleware configuration. This + middleware reissues requests a given number of times to a backend + server if that server does not reply. As soon as the server answers, + the middleware stops retrying, regardless of the response status. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/' + properties: + attempts: + description: Attempts defines how many times the request should + be retried. + type: integer + initialInterval: + anyOf: + - type: integer + - type: string + description: InitialInterval defines the first wait time in the + exponential backoff series. The maximum interval is calculated + as twice the initialInterval. If unspecified, requests will + be retried immediately. The value of initialInterval should + be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. + x-kubernetes-int-or-string: true + type: object + stripPrefix: + description: 'StripPrefix holds the strip prefix middleware configuration. + This middleware removes the specified prefixes from the URL path. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/' + properties: + forceSlash: + description: 'ForceSlash ensures that the resulting stripped path + is not the empty string, by replacing it with / when necessary. + Default: true.' + type: boolean + prefixes: + description: Prefixes defines the prefixes to strip from the request + URL. + items: + type: string + type: array + type: object + stripPrefixRegex: + description: 'StripPrefixRegex holds the strip prefix regex middleware + configuration. This middleware removes the matching prefixes from + the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/' + properties: + regex: + description: Regex defines the regular expression to match the + path prefix from the request URL. + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_middlewaretcps.yaml b/premium/traefik/26.7.4/crds/traefik.io_middlewaretcps.yaml new file mode 100644 index 00000000000..8623568f5b3 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_middlewaretcps.yaml @@ -0,0 +1,72 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: middlewaretcps.traefik.io +spec: + group: traefik.io + names: + kind: MiddlewareTCP + listKind: MiddlewareTCPList + plural: middlewaretcps + singular: middlewaretcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. + More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + properties: + inFlightConn: + description: InFlightConn defines the InFlightConn middleware configuration. + properties: + amount: + description: Amount defines the maximum amount of allowed simultaneous + connections. The middleware closes the connection if there are + already amount connections opened. + format: int64 + type: integer + type: object + ipWhiteList: + description: IPWhiteList defines the IPWhiteList middleware configuration. + properties: + sourceRange: + description: SourceRange defines the allowed IPs (or ranges of + allowed IPs by using CIDR notation). + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_serverstransports.yaml b/premium/traefik/26.7.4/crds/traefik.io_serverstransports.yaml new file mode 100644 index 00000000000..803b56395a4 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_serverstransports.yaml @@ -0,0 +1,128 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: serverstransports.traefik.io +spec: + group: traefik.io + names: + kind: ServersTransport + listKind: ServersTransportList + plural: serverstransports + singular: serverstransport + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'ServersTransport is the CRD implementation of a ServersTransport. + If no serversTransport is specified, the default@internal will be used. + The default@internal serversTransport is created from the static configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServersTransportSpec defines the desired state of a ServersTransport. + properties: + certificatesSecrets: + description: CertificatesSecrets defines a list of secret storing + client certificates for mTLS. + items: + type: string + type: array + disableHTTP2: + description: DisableHTTP2 disables HTTP/2 for connections with backend + servers. + type: boolean + forwardingTimeouts: + description: ForwardingTimeouts defines the timeouts for requests + forwarded to the backend servers. + properties: + dialTimeout: + anyOf: + - type: integer + - type: string + description: DialTimeout is the amount of time to wait until a + connection to a backend server can be established. + x-kubernetes-int-or-string: true + idleConnTimeout: + anyOf: + - type: integer + - type: string + description: IdleConnTimeout is the maximum period for which an + idle HTTP keep-alive connection will remain open before closing + itself. + x-kubernetes-int-or-string: true + pingTimeout: + anyOf: + - type: integer + - type: string + description: PingTimeout is the timeout after which the HTTP/2 + connection will be closed if a response to ping is not received. + x-kubernetes-int-or-string: true + readIdleTimeout: + anyOf: + - type: integer + - type: string + description: ReadIdleTimeout is the timeout after which a health + check using ping frame will be carried out if no frame is received + on the HTTP/2 connection. + x-kubernetes-int-or-string: true + responseHeaderTimeout: + anyOf: + - type: integer + - type: string + description: ResponseHeaderTimeout is the amount of time to wait + for a server's response headers after fully writing the request + (including its body, if any). + x-kubernetes-int-or-string: true + type: object + insecureSkipVerify: + description: InsecureSkipVerify disables SSL certificate verification. + type: boolean + maxIdleConnsPerHost: + description: MaxIdleConnsPerHost controls the maximum idle (keep-alive) + to keep per-host. + type: integer + peerCertURI: + description: PeerCertURI defines the peer cert URI used to match against + SAN URI during the peer certificate verification. + type: string + rootCAsSecrets: + description: RootCAsSecrets defines a list of CA secret used to validate + self-signed certificate. + items: + type: string + type: array + serverName: + description: ServerName defines the server name used to contact the + server. + type: string + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_serverstransporttcps.yaml b/premium/traefik/26.7.4/crds/traefik.io_serverstransporttcps.yaml new file mode 100644 index 00000000000..10e0a3f0e79 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_serverstransporttcps.yaml @@ -0,0 +1,122 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: serverstransporttcps.traefik.io +spec: + group: traefik.io + names: + kind: ServersTransportTCP + listKind: ServersTransportTCPList + plural: serverstransporttcps + singular: serverstransporttcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'ServersTransportTCP is the CRD implementation of a TCPServersTransport. + If no tcpServersTransport is specified, a default one named default@internal + will be used. The default@internal tcpServersTransport can be configured + in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. + properties: + dialKeepAlive: + anyOf: + - type: integer + - type: string + description: DialKeepAlive is the interval between keep-alive probes + for an active network connection. If zero, keep-alive probes are + sent with a default value (currently 15 seconds), if supported by + the protocol and operating system. Network protocols or operating + systems that do not support keep-alives ignore this field. If negative, + keep-alive probes are disabled. + x-kubernetes-int-or-string: true + dialTimeout: + anyOf: + - type: integer + - type: string + description: DialTimeout is the amount of time to wait until a connection + to a backend server can be established. + x-kubernetes-int-or-string: true + terminationDelay: + anyOf: + - type: integer + - type: string + description: TerminationDelay defines the delay to wait before fully + terminating the connection, after one connected peer has closed + its writing capability. + x-kubernetes-int-or-string: true + tls: + description: TLS defines the TLS configuration + properties: + certificatesSecrets: + description: CertificatesSecrets defines a list of secret storing + client certificates for mTLS. + items: + type: string + type: array + insecureSkipVerify: + description: InsecureSkipVerify disables TLS certificate verification. + type: boolean + peerCertURI: + description: MaxIdleConnsPerHost controls the maximum idle (keep-alive) + to keep per-host. PeerCertURI defines the peer cert URI used + to match against SAN URI during the peer certificate verification. + type: string + rootCAsSecrets: + description: RootCAsSecrets defines a list of CA secret used to + validate self-signed certificates. + items: + type: string + type: array + serverName: + description: ServerName defines the server name used to contact + the server. + type: string + spiffe: + description: Spiffe defines the SPIFFE configuration. + properties: + ids: + description: IDs defines the allowed SPIFFE IDs (takes precedence + over the SPIFFE TrustDomain). + items: + type: string + type: array + trustDomain: + description: TrustDomain defines the allowed SPIFFE trust + domain. + type: string + type: object + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_tlsoptions.yaml b/premium/traefik/26.7.4/crds/traefik.io_tlsoptions.yaml new file mode 100644 index 00000000000..b86fefe0e95 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_tlsoptions.yaml @@ -0,0 +1,113 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: tlsoptions.traefik.io +spec: + group: traefik.io + names: + kind: TLSOption + listKind: TLSOptionList + plural: tlsoptions + singular: tlsoption + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TLSOption is the CRD implementation of a Traefik TLS Option, + allowing to configure some parameters of the TLS connection. More info: + https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TLSOptionSpec defines the desired state of a TLSOption. + properties: + alpnProtocols: + description: 'ALPNProtocols defines the list of supported application + level protocols for the TLS handshake, in order of preference. More + info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols' + items: + type: string + type: array + cipherSuites: + description: 'CipherSuites defines the list of supported cipher suites + for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites' + items: + type: string + type: array + clientAuth: + description: ClientAuth defines the server's policy for TLS Client + Authentication. + properties: + clientAuthType: + description: ClientAuthType defines the client authentication + type to apply. + enum: + - NoClientCert + - RequestClientCert + - RequireAnyClientCert + - VerifyClientCertIfGiven + - RequireAndVerifyClientCert + type: string + secretNames: + description: SecretNames defines the names of the referenced Kubernetes + Secret storing certificate details. + items: + type: string + type: array + type: object + curvePreferences: + description: 'CurvePreferences defines the preferred elliptic curves + in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences' + items: + type: string + type: array + maxVersion: + description: 'MaxVersion defines the maximum TLS version that Traefik + will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, + VersionTLS13. Default: None.' + type: string + minVersion: + description: 'MinVersion defines the minimum TLS version that Traefik + will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, + VersionTLS13. Default: VersionTLS10.' + type: string + preferServerCipherSuites: + description: 'PreferServerCipherSuites defines whether the server + chooses a cipher suite among his own instead of among the client''s. + It is enabled automatically when minVersion or maxVersion is set. + Deprecated: https://github.com/golang/go/issues/45430' + type: boolean + sniStrict: + description: SniStrict defines whether Traefik allows connections + from clients connections that do not specify a server_name extension. + type: boolean + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_tlsstores.yaml b/premium/traefik/26.7.4/crds/traefik.io_tlsstores.yaml new file mode 100644 index 00000000000..47b46854c8b --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_tlsstores.yaml @@ -0,0 +1,99 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: tlsstores.traefik.io +spec: + group: traefik.io + names: + kind: TLSStore + listKind: TLSStoreList + plural: tlsstores + singular: tlsstore + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For + the time being, only the TLSStore named default is supported. This means + that you cannot have two stores that are named default in different Kubernetes + namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TLSStoreSpec defines the desired state of a TLSStore. + properties: + certificates: + description: Certificates is a list of secret names, each secret holding + a key/certificate pair to add to the store. + items: + description: Certificate holds a secret name for the TLSStore resource. + properties: + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + required: + - secretName + type: object + type: array + defaultCertificate: + description: DefaultCertificate defines the default certificate configuration. + properties: + secretName: + description: SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + required: + - secretName + type: object + defaultGeneratedCert: + description: DefaultGeneratedCert defines the default generated certificate + configuration. + properties: + domain: + description: Domain is the domain definition for the DefaultCertificate. + properties: + main: + description: Main defines the main domain name. + type: string + sans: + description: SANs defines the subject alternative domain names. + items: + type: string + type: array + type: object + resolver: + description: Resolver is the name of the resolver that will be + used to issue the DefaultCertificate. + type: string + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/crds/traefik.io_traefikservices.yaml b/premium/traefik/26.7.4/crds/traefik.io_traefikservices.yaml new file mode 100644 index 00000000000..0f3475bda46 --- /dev/null +++ b/premium/traefik/26.7.4/crds/traefik.io_traefikservices.yaml @@ -0,0 +1,402 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.2 + creationTimestamp: null + name: traefikservices.traefik.io +spec: + group: traefik.io + names: + kind: TraefikService + listKind: TraefikServiceList + plural: traefikservices + singular: traefikservice + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: 'TraefikService is the CRD implementation of a Traefik Service. + TraefikService object allows to: - Apply weight to Services on load-balancing + - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TraefikServiceSpec defines the desired state of a TraefikService. + properties: + mirroring: + description: Mirroring defines the Mirroring service configuration. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + maxBodySize: + description: MaxBodySize defines the maximum size allowed for + the body of the request. If the body is larger, the request + is not mirrored. Default value is -1, which means unlimited + size. + format: int64 + type: integer + mirrors: + description: Mirrors defines the list of mirrors where Traefik + will duplicate the traffic. + items: + description: MirrorService holds the mirror configuration. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or + if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + percent: + description: 'Percent defines the part of the traffic to + mirror. Supported values: 0 to 100.' + type: integer + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in + milliseconds, in between flushes to the client while + copying the response body. A negative value means + to flush immediately after each write to the client. + This configuration is ignored when ReverseProxy recognizes + a response as a streaming response; for such responses, + writes are flushed to the client immediately. Default: + 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between the two + is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or if the + only child is the Kubernetes Service clusterIP. The Kubernetes + Service itself does load-balance to the pods. By default, NativeLB + is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host header + is forwarded to the upstream Kubernetes Service. By default, + passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. This + can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards the + response from the upstream Kubernetes Service to the client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in milliseconds, + in between flushes to the client while copying the response + body. A negative value means to flush immediately after + each write to the client. This configuration is ignored + when ReverseProxy recognizes a response as a streaming response; + for such responses, writes are flushed to the client immediately. + Default: 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https when + Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport between + Traefik and your servers. Can only be used on a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can be + accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. More + info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can only + be transmitted over an encrypted connection (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy between + the servers. RoundRobin is the only supported value at the moment. + type: string + weight: + description: Weight defines the weight and should only be specified + when Name references a TraefikService object (and to be precise, + one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + weighted: + description: Weighted defines the Weighted Round Robin configuration. + properties: + services: + description: Services defines the list of Kubernetes Service and/or + TraefikService to load-balance, with weight. + items: + description: Service defines an upstream HTTP service to proxy + traffic to. + properties: + kind: + description: Kind defines the kind of the Service. + enum: + - Service + - TraefikService + type: string + name: + description: Name defines the name of the referenced Kubernetes + Service or TraefikService. The differentiation between + the two is specified in the Kind field. + type: string + namespace: + description: Namespace defines the namespace of the referenced + Kubernetes Service or TraefikService. + type: string + nativeLB: + description: NativeLB controls, when creating the load-balancer, + whether the LB's children are directly the pods IPs or + if the only child is the Kubernetes Service clusterIP. + The Kubernetes Service itself does load-balance to the + pods. By default, NativeLB is false. + type: boolean + passHostHeader: + description: PassHostHeader defines whether the client Host + header is forwarded to the upstream Kubernetes Service. + By default, passHostHeader is true. + type: boolean + port: + anyOf: + - type: integer + - type: string + description: Port defines the port of a Kubernetes Service. + This can be a reference to a named port. + x-kubernetes-int-or-string: true + responseForwarding: + description: ResponseForwarding defines how Traefik forwards + the response from the upstream Kubernetes Service to the + client. + properties: + flushInterval: + description: 'FlushInterval defines the interval, in + milliseconds, in between flushes to the client while + copying the response body. A negative value means + to flush immediately after each write to the client. + This configuration is ignored when ReverseProxy recognizes + a response as a streaming response; for such responses, + writes are flushed to the client immediately. Default: + 100ms' + type: string + type: object + scheme: + description: Scheme defines the scheme to use for the request + to the upstream Kubernetes Service. It defaults to https + when Kubernetes Service port is 443, http otherwise. + type: string + serversTransport: + description: ServersTransport defines the name of ServersTransport + resource to use. It allows to configure the transport + between Traefik and your servers. Can only be used on + a Kubernetes Service. + type: string + sticky: + description: 'Sticky defines the sticky sessions configuration. + More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie + can be accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. + More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can + only be transmitted over an encrypted connection + (i.e. HTTPS). + type: boolean + type: object + type: object + strategy: + description: Strategy defines the load balancing strategy + between the servers. RoundRobin is the only supported + value at the moment. + type: string + weight: + description: Weight defines the weight and should only be + specified when Name references a TraefikService object + (and to be precise, one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + sticky: + description: 'Sticky defines whether sticky sessions are enabled. + More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing' + properties: + cookie: + description: Cookie defines the sticky cookie configuration. + properties: + httpOnly: + description: HTTPOnly defines whether the cookie can be + accessed by client-side APIs, such as JavaScript. + type: boolean + name: + description: Name defines the Cookie name. + type: string + sameSite: + description: 'SameSite defines the same site policy. More + info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite' + type: string + secure: + description: Secure defines whether the cookie can only + be transmitted over an encrypted connection (i.e. HTTPS). + type: boolean + type: object + type: object + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/premium/traefik/26.7.4/dashboard.json b/premium/traefik/26.7.4/dashboard.json new file mode 100644 index 00000000000..dccba9bde75 --- /dev/null +++ b/premium/traefik/26.7.4/dashboard.json @@ -0,0 +1,1568 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "9.3.1" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Official dashboard for Traefik on Kubernetes", + "editable": false, + "fiscalYearStartMonth": 0, + "gnetId": 17347, + "graphTooltip": 0, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 9, + "panels": [], + "title": "General", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 5, + "x": 0, + "y": 1 + }, + "id": 13, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "count(traefik_config_reloads_total)", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Traefik Instances", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 7, + "x": 5, + "y": 1 + }, + "id": 7, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "sum(rate(traefik_entrypoint_requests_total{entrypoint=~\"$entrypoint\"}[1m])) by (entrypoint)", + "legendFormat": "{{entrypoint}}", + "range": true, + "refId": "A" + } + ], + "title": "Requests per Entrypoint", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "https://medium.com/@tristan_96324/prometheus-apdex-alerting-d17a065e39d0", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "id": 6, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "(sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"0.3\",code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method) + \n sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"1.2\",code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method)) / 2 / \n sum(rate(traefik_entrypoint_request_duration_seconds_count{code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method)\n", + "legendFormat": "{{method}}", + "range": true, + "refId": "A" + } + ], + "title": "Apdex score", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Mean Distribution", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 3 + }, + "id": 14, + "options": { + "legend": { + "displayMode": "list", + "placement": "right", + "showLegend": true, + "values": ["percent"] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["mean"], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "multi", + "sort": "asc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "sum(rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[1m])) by (method, code)", + "legendFormat": "{{method}}[{{code}}]", + "range": true, + "refId": "A" + } + ], + "title": "Http Code ", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 23, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n traefik_service_request_duration_seconds_sum{service=~\"$service.*\",protocol=\"http\"} / \n traefik_service_request_duration_seconds_count{service=~\"$service.*\",protocol=\"http\"},\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)\n\n", + "legendFormat": "{{method}}[{{code}}] on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Top slow services", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 5, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "[{{code}}] on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Most requested services", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 11, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 18 + }, + "id": 3, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"1.2\",service=~\"$service.*\"}[5m])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[5m]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\"\n)", + "legendFormat": "{{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Services failing SLO of 1200ms", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 18 + }, + "id": 4, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"0.3\",service=~\"$service.*\"}[5m])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[5m]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\"\n)", + "legendFormat": "{{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Services failing SLO of 300ms", + "type": "timeseries" + } + ], + "title": "SLO", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 16, + "panels": [], + "title": "HTTP Details", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 8, + "x": 0, + "y": 19 + }, + "id": 17, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"2..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "{{method}}[{{code}}] on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "2xx over 5 min", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 8, + "x": 8, + "y": 19 + }, + "id": 18, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"5..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "{{method}}[{{code}}] on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "5xx over 5 min", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 8, + "x": 16, + "y": 19 + }, + "id": 19, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code!~\"2..|5..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "{{method}}[{{code}}] on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Other codes over 5 min", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 31 + }, + "id": 20, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_requests_bytes_total{service=~\"$service.*\",protocol=\"http\"}[1m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "{{method}} on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Requests Size", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 31 + }, + "id": 24, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Mean", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_responses_bytes_total{service=~\"$service.*\",protocol=\"http\"}[1m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", + "legendFormat": "{{method}} on {{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Responses Size", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 39 + }, + "id": 2, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "label_replace(\n sum(traefik_service_open_connections{service=~\"$service.*\"}) by (service),\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")", + "legendFormat": "{{service}}", + "range": true, + "refId": "A" + } + ], + "title": "Connections per Service", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 39 + }, + "id": 21, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "sortBy": "Max", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "sum(traefik_entrypoint_open_connections{entrypoint=~\"$entrypoint\"}) by (entrypoint)\n", + "legendFormat": "{{entrypoint}}", + "range": true, + "refId": "A" + } + ], + "title": "Connections per Entrypoint", + "type": "timeseries" + } + ], + "refresh": false, + "schemaVersion": 37, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "DS_PROMETHEUS", + "label": "datasource", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(traefik_entrypoint_open_connections, entrypoint)", + "hide": 0, + "includeAll": true, + "multi": false, + "name": "entrypoint", + "options": [], + "query": { + "query": "label_values(traefik_entrypoint_open_connections, entrypoint)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(traefik_service_open_connections, service)", + "hide": 0, + "includeAll": true, + "multi": false, + "name": "service", + "options": [], + "query": { + "query": "label_values(traefik_service_open_connections, service)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/([^-]+-[^-]+).*/", + "skipUrlSync": false, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Traefik Official Kubernetes Dashboard", + "uid": "n5bu_kv4k", + "version": 6, + "weekStart": "" +} diff --git a/premium/traefik/26.7.4/ix_values.yaml b/premium/traefik/26.7.4/ix_values.yaml new file mode 100644 index 00000000000..45600bb66bd --- /dev/null +++ b/premium/traefik/26.7.4/ix_values.yaml @@ -0,0 +1,498 @@ +image: + repository: tccr.io/tccr/traefik + tag: v2.11.0@sha256:bc607266aea202d65460dda5621d5dff4f143610ed012f46ab91b3238a601a35 + pullPolicy: IfNotPresent +manifestManager: + enabled: true +workload: + main: + replicas: 2 + strategy: RollingUpdate + podSpec: + containers: + main: + args: [] + probes: + # -- Liveness probe configuration + # @default -- See below + liveness: + # -- sets the probe type when not using a custom probe + # @default -- "TCP" + type: tcp + # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used + # @default -- "/" + # path: "/ping" + # -- Readiness probe configuration + # @default -- See below + readiness: + # -- sets the probe type when not using a custom probe + # @default -- "TCP" + type: tcp + # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used + # @default -- "/" + # path: "/ping" + # -- Startup probe configuration + # @default -- See below + startup: + # -- sets the probe type when not using a custom probe + # @default -- "TCP" + type: tcp + # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used + # @default -- "/" + # path: "/ping" +# -- Options for all pods +# Can be overruled per pod +podOptions: + automountServiceAccountToken: true +operator: + register: true +# -- Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x +ingressClass: + # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12 + enabled: false + isDefaultClass: false + # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. "v1beta1" + fallbackApiVersion: "" +# -- Create an IngressRoute for the dashboard +ingressRoute: + dashboard: + enabled: true + # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class) + annotations: {} + # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels) + labels: {} +# +# -- Configure providers +providers: + kubernetesCRD: + enabled: true + namespaces: [] + # - "default" + kubernetesIngress: + enabled: true + # labelSelector: environment=production,method=traefik + namespaces: [] + # - "default" + # IP used for Kubernetes Ingress endpoints + publishedService: + enabled: true + # Published Kubernetes Service to copy status from. Format: namespace/servicename + # By default this Traefik service + # pathOverride: "" +# -- Logs +# https://docs.traefik.io/observability/logs/ +logs: + # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). + general: + # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO. + level: ERROR + # -- Set the format of General Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/logs/#format + format: common + access: + # To enable access logs + enabled: false + # To write the logs in an asynchronous fashion, specify a bufferingSize option. + # This option represents the number of log lines Traefik will keep in memory before writing + # them to the selected output. In some cases, this option can greatly help performances. + # bufferingSize: 100 + # Filtering https://docs.traefik.io/observability/access-logs/#filtering + filters: {} + # statuscodes: "200,300-302" + # retryattempts: true + # minduration: 10ms + # Fields + # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers + fields: + general: + defaultmode: keep + names: {} + # Examples: + # ClientUsername: drop + headers: + defaultmode: drop + names: {} + # Examples: + # User-Agent: redact + # Authorization: drop + # Content-Type: keep + # -- Set the format of Access Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/access-logs/#format + format: common +metrics: + main: + enabled: true + type: servicemonitor + endpoints: + - port: metrics + path: /metrics + targetSelector: metrics + +globalArguments: + - "--global.checknewversion" + +configmap: + dashboard: + enabled: true + labels: + grafana_dashboard: "1" + data: + traefik.json: >- + {{ .Files.Get "dashboard.json" | indent 8 }} + +## +# -- Additional arguments to be passed at Traefik's binary +# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ +## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` +additionalArguments: + - "--serverstransport.insecureskipverify=true" + - "--providers.kubernetesingress.allowexternalnameservices=true" + +# -- Default clusterCertificate generated by clusterissuer +defaultCertificate: "" + +# -- Add custom DNSStore objects +tlsStore: {} + +# -- TLS Options to be created as TLSOption CRDs +# https://doc.traefik.io/tccr.io/truecharts/https/tls/#tls-options +# Example: +tlsOptions: + default: + sniStrict: false + minVersion: VersionTLS12 + curvePreferences: + - CurveP521 + - CurveP384 + cipherSuites: + - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 + - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 + - TLS_CHACHA20_POLY1305_SHA256 +# -- Options for the main traefik service, where the entrypoints traffic comes from +# from. +service: + main: + type: LoadBalancer + ports: + main: + port: 9000 + targetPort: 9000 + protocol: http + # -- Forwarded Headers should never be enabled on Main entrypoint + forwardedHeaders: + enabled: false + # -- Proxy Protocol should never be enabled on Main entrypoint + proxyProtocol: + enabled: false + tcp: + enabled: true + type: LoadBalancer + ## In most cases, you want this changed to `Local` + externalTrafficPolicy: Cluster + ports: + web: + enabled: true + port: 80 + protocol: http + redirectTo: websecure + # Options: Empty, 0 (ingore), or positive int + # redirectPort: + # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support + forwardedHeaders: + enabled: false + # -- List of trusted IP and CIDR references + trustedIPs: [] + # -- Trust all forwarded headers + insecureMode: false + # -- Configure (Proxy Protocol Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#proxyprotocol] Support + proxyProtocol: + enabled: false + # -- Only IPs in trustedIPs will lead to remote client address replacement + trustedIPs: [] + # -- Trust every incoming connection + insecureMode: false + websecure: + enabled: true + port: 443 + protocol: https + # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support + forwardedHeaders: + enabled: false + # -- List of trusted IP and CIDR references + trustedIPs: [] + # -- Trust all forwarded headers + insecureMode: false + # -- Configure (Proxy Protocol Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#proxyprotocol] Support + proxyProtocol: + enabled: false + # -- Only IPs in trustedIPs will lead to remote client address replacement + trustedIPs: [] + # -- Trust every incoming connection + insecureMode: false + # tcpexample: + # enabled: true + # targetPort: 9443 + # protocol: tcp + # tls: + # enabled: false + # # this is the name of a TLSOption definition + # options: "" + # certResolver: "" + # domains: [] + # # - main: example.com + # # sans: + # # - foo.example.com + # # - bar.example.com + metrics: + enabled: true + type: ClusterIP + ports: + metrics: + enabled: true + port: 9180 + targetPort: 9180 + protocol: http + # -- Forwarded Headers should never be enabled on Metrics entrypoint + forwardedHeaders: + enabled: false + # -- Proxy Protocol should never be enabled on Metrics entrypoint + proxyProtocol: + enabled: false + # udp: + # enabled: false +# -- Whether Role Based Access Control objects like roles and rolebindings should be created +rbac: + main: + enabled: true + primary: true + clusterWide: true + rules: + - apiGroups: + - "" + resources: + - services + - endpoints + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + - ingressclasses + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses/status + verbs: + - update + - apiGroups: + - traefik.containo.us + - traefik.io + resources: + - middlewares + - middlewaretcps + - ingressroutes + - traefikservices + - ingressroutetcps + - ingressrouteudps + - tlsoptions + - tlsstores + - serverstransports + verbs: + - get + - list + - watch +# -- The service account the pods will use to interact with the Kubernetes API +serviceAccount: + main: + enabled: true + primary: true +# -- SCALE Middleware Handlers +middlewares: + basicAuth: [] + # - name: basicauthexample + # users: + # - username: testuser + # password: testpassword + forwardAuth: [] + # - name: forwardAuthexample + # address: https://auth.example.com/ + # authResponseHeaders: + # - X-Secret + # - X-Auth-User + # authRequestHeaders: + # - "Accept" + # - "X-CustomHeader" + # authResponseHeadersRegex: "^X-" + # trustForwardHeader: true + customRequestHeaders: [] + # - name: customRequestHeaderExample + # headers: + # - name: X-Custom-Header + # value: "foobar" + # - name: X-Header-To-Remove + # value: "" + customResponseHeaders: [] + # - name: customResponseHeaderExample + # headers: + # - name: X-Custom-Header + # value: "foobar" + # - name: X-Header-To-Remove + # value: "" + rewriteResponseHeaders: [] + # - name: rewriteResponseHeadersName + # headers: + # - name: "Location" + # regex: "^http://(.+)$" + # replacement: "https://$1" + # - name: "Date" + # regex: "^[^,]+,\\s*(.+)$" + # replacement: "$1" + customFrameOptionsValue: [] + # - name: customFrameOptionsValueExample + # value: "SAMEORIGIN" + buffering: [] + # - name: bufferingExample + # maxRequestBodyBytes: 1000000 + # memRequestBodyBytes: 1000000 + # maxResponseBodyBytes: 1000000 + # memResponseBodyBytes: 1000000 + # retryExpression: "IsNetworkError() && Attempts() < 2" + chain: [] + # - name: chainname + # middlewares: + # - name: compress + redirectScheme: [] + # - name: redirectSchemeName + # scheme: https + # permanent: true + rateLimit: [] + # - name: rateLimitName + # average: 300 + # burst: 200 + redirectRegex: [] + # - name: redirectRegexName + # regex: putregexhere + # replacement: replacementurlhere + # permanent: false + stripPrefixRegex: [] + # - name: stripPrefixRegexName + # regex: [] + ipWhiteList: [] + # - name: ipWhiteListName + # sourceRange: [] + # ipStrategy: + # depth: 2 + # excludedIPs: [] + themePark: [] + # - name: themeParkName + # -- Supported apps, lower case name + # -- https://docs.theme-park.dev/themes + # app: appnamehere + # -- Supported themes, lower case name + # -- https://docs.theme-park.dev/themes/APPNAMEHERE + # -- https://docs.theme-park.dev/community-themes + # theme: themenamehere + # -- https://theme-park.dev or a self hosted url + # baseUrl: https://theme-park.dev + # Sets X-Real-Ip with an IP from the X-Forwarded-For or + # Cf-Connecting-Ip (If from Cloudflare) + # Evaluation of those headers will go from last to first + realIP: [] + # - name: realIPName + # -- The real IP will be the first one that is + # -- not included in any of the CIDRs passed here + # excludedNetworks: + # - 1.1.1.1/24 + addPrefix: [] + # - name: addPrefixName + # prefix: "/foo" + geoBlock: [] + # -- https://github.com/PascalMinder/geoblock + # - name: geoBlockName + # allowLocalRequests: true + # logLocalRequests: false + # logAllowedRequests: false + # logApiRequests: false + # api: https://get.geojs.io/v1/ip/country/{ip} + # apiTimeoutMs: 500 + # cacheSize: 25 + # forceMonthlyUpdate: true + # allowUnknownCountries: false + # unknownCountryApiResponse: nil + # blackListMode: false + # countries: + # - RU + modsecurity: [] + # - name: modsecurityName + # modSecurityUrl: modSecurity container URL + # timeoutMillis: Configurated timeout + # maxBodySize: maxBodySize + bouncer: [] + # - name: bouncer + # enabled: false + # logLevel: DEBUG + # updateIntervalSeconds: 60 + # defaultDecisionSeconds: 60 + # httpTimeoutSeconds: 10 + # crowdsecMode: live + # crowdsecAppsecEnabled: false + # crowdsecAppsecHost: crowdsec:7422 + # crowdsecAppsecFailureBlock: true + # crowdsecLapiKey: privateKey-foo + # crowdsecLapiKeyFile: /etc/traefik/cs-privateKey-foo + # crowdsecLapiHost: crowdsec:8080 + # crowdsecLapiScheme: http + # crowdsecLapiTLSInsecureVerify: false + # crowdsecCapiMachineId: login + # crowdsecCapiPassword: password + # crowdsecCapiScenarios: + # - crowdsecurity/http-path-traversal-probing + # - crowdsecurity/http-xss-probing + # - crowdsecurity/http-generic-bf + # forwardedHeadersTrustedIPs: + # - 10.0.10.23/32 + # - 10.0.20.0/24 + # clientTrustedIPs: + # - 192.168.1.0/24 + # forwardedHeadersCustomName: X-Custom-Header + # redisCacheEnabled: false + # redisCacheHost: "redis:6379" + # redisCachePassword: password + # redisCacheDatabase: "5" + # crowdsecLapiTLSCertificateAuthority: |- + # crowdsecLapiTLSCertificateAuthorityFile: /etc/traefik/crowdsec-certs/ca.pem + # crowdsecLapiTLSCertificateBouncer: |- + # crowdsecLapiTLSCertificateBouncerFile: /etc/traefik/crowdsec-certs/bouncer.pem + # crowdsecLapiTLSCertificateBouncerKey: |- + # crowdsecLapiTLSCertificateBouncerKeyFile: /etc/traefik/crowdsec-certs/bouncer-key.pem + ## Note: body of every request will be buffered in memory while the request is in-flight + ## (i.e.: during the security check and during the request processing by traefik and the backend), + ## so you may want to tune maxBodySize depending on how much RAM you have. +portalhook: + enabled: true +persistence: + plugins: + enabled: true + mountPath: "/plugins-storage" + type: emptyDir + crowdsec-bouncer-tls: + enabled: "{{ if .Values.middlewares.bouncer }}true{{ else }}false{{ end }}" + mountPath: "/etc/traefik/crowdsec-certs" + type: secret + expandObjectName: false + objectName: crowdsec-bouncer-tls +portal: + open: + enabled: true + path: /dashboard/ diff --git a/premium/traefik/26.7.4/questions.yaml b/premium/traefik/26.7.4/questions.yaml new file mode 100755 index 00000000000..338c2f71d37 --- /dev/null +++ b/premium/traefik/26.7.4/questions.yaml @@ -0,0 +1,3434 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + + path: "$kubernetes-resource_configmap_tcportal-open_path" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: expertIngressClass + label: Expert Mode + group: App Configuration + description: | + Expert Mode contains settings like:
+ - IngressClass
+ schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: ingressClass + label: "ingressClass" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + description: "When enabled, ingressClass will match the entered name of this app" + schema: + type: boolean + default: false + - variable: isDefaultClass + label: "isDefaultClass" + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: false + - variable: logs + label: "Logs" + group: "App Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: "General Logs" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log Level" + schema: + type: string + default: "ERROR" + enum: + - value: "INFO" + description: "Info" + - value: "WARN" + description: "Warnings" + - value: "ERROR" + description: "Errors" + - value: "FATAL" + description: "Fatal Errors" + - value: "PANIC" + description: "Panics" + - value: "DEBUG" + description: "Debug" + - variable: format + label: "General Log format" + schema: + type: string + default: "common" + enum: + - value: "common" + description: "Common Log Format" + - value: "json" + description: "JSON" + - variable: access + label: "Access Logs" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabledFilters + label: "Enable Filters" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filters + label: "Filters" + schema: + additional_attrs: true + type: dict + attrs: + - variable: statuscodes + label: "Status codes" + schema: + type: string + default: "200,300-302" + - variable: retryattempts + label: "retryattempts" + schema: + type: boolean + default: true + - variable: minduration + label: "minduration" + schema: + type: string + default: "10ms" + - variable: fields + label: "Fields" + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: "General" + schema: + additional_attrs: true + type: dict + attrs: + - variable: defaultmode + label: "Default Mode" + schema: + type: string + default: "keep" + enum: + - value: "keep" + description: "Keep" + - value: "drop" + description: "Drop" + - variable: headers + label: "Headers" + schema: + additional_attrs: true + type: dict + attrs: + - variable: defaultmode + label: "Default Mode" + schema: + type: string + default: "drop" + enum: + - value: "keep" + description: "Keep" + - value: "drop" + description: "Drop" + - variable: format + label: "Access Log format" + schema: + type: string + default: "common" + enum: + - value: "common" + description: "Common Log Format" + - value: "json" + description: "JSON" + - variable: middlewares + label: "" + group: "Middlewares" + schema: + additional_attrs: true + type: dict + attrs: + - variable: basicAuth + label: basicAuth + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: users + label: Users + schema: + type: list + default: [] + items: + - variable: usersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: username + label: Username + schema: + type: string + required: true + default: "" + - variable: password + label: Password + schema: + type: string + required: true + default: "" + + - variable: forwardAuth + label: forwardAuth + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: address + label: Address + schema: + type: string + required: true + default: "" + - variable: trustForwardHeader + label: trustForwardHeader + schema: + type: boolean + default: false + - variable: tls + label: TLS + schema: + additional_attrs: true + type: dict + attrs: + - variable: insecureSkipVerify + label: insecureSkipVerify (expert) + description: >- + This disables all TLS certificate validation on communications with the authentication endpoint. + This could be a security risk and should only be used if you know what you are doing. + schema: + type: boolean + default: false + - variable: authResponseHeadersRegex + label: authResponseHeadersRegex + schema: + type: string + default: "" + - variable: authResponseHeaders + label: authResponseHeaders + schema: + type: list + default: [] + items: + - variable: authResponseHeadersEntry + label: "" + schema: + type: string + default: "" + - variable: authRequestHeaders + label: authRequestHeaders + schema: + type: list + default: [] + items: + - variable: authRequestHeadersEntry + label: "" + schema: + type: string + default: "" + + - variable: buffering + label: Buffering + schema: + type: list + default: [] + items: + - variable: bufferingEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: maxRequestBodyBytes + label: Max Request Body Bytes + description: Leave empty and it won't be set + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: memRequestBodyBytes + label: Mem Request Body Bytes + description: Leave empty and it won't be set + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: maxResponseBodyBytes + label: Max Response Body Bytes + description: Leave empty and it won't be set + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: memResponseBodyBytes + label: Mem Response Body Bytes + description: Leave empty and it won't be set + schema: + type: string + valid_chars: '^[0-9]*$' + default: "" + - variable: retryExpression + label: Retry Expression + description: Leave empty and it won't be set + schema: + type: string + default: "" + + - variable: customRequestHeaders + label: Custom Request Headers + schema: + type: list + default: [] + items: + - variable: customRequestHeadersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: headers + label: Headers to Add + schema: + type: list + default: [] + items: + - variable: headersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Header Name + description: Name of custom header to be added to requests, eg. X-Custom-Header + schema: + valid_chars: ^[a-zA-Z0-9_\-]*$ + type: string + required: true + default: "" + - variable: value + label: Header Value + description: The value of the header. If the value is empty, the header will be removed. + schema: + type: string + default: "" + + - variable: customResponseHeaders + label: Custom Response Headers + schema: + type: list + default: [] + items: + - variable: customResponseHeadersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: headers + label: Headers to Add + schema: + type: list + default: [] + items: + - variable: headersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Header Name + description: Name of custom header to be added to responses, eg. X-Custom-Header + schema: + valid_chars: ^[a-zA-Z0-9_\-]*$ + type: string + required: true + default: "" + - variable: value + label: Header Value + description: The value of the header. If the value is empty, the header will be removed. + schema: + type: string + default: "" + + - variable: rewriteResponseHeaders + label: Rewrite Response Headers + schema: + type: list + default: [] + items: + - variable: rewriteResponseHeadersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: headers + label: Headers To Rewrite + schema: + type: list + default: [] + items: + - variable: headersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Header Name + description: Name of a header to modified in responses, eg. X-Custom-Header + schema: + valid_chars: ^[a-zA-Z0-9_\-]*$ + type: string + required: true + default: "" + - variable: regex + label: Regex + description: The value of the header to match. Accepts regex expression. + schema: + type: string + default: "" + - variable: replacement + label: Replacement Regex + description: The new value of the header. Accepts regex expression. + schema: + type: string + default: "" + + - variable: customFrameOptionsValue + label: Custom Frame Options Value + schema: + type: list + default: [] + items: + - variable: customFrameOptionsValueEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: X-Frame-Options Header Value + description: The value of the header. + schema: + type: string + required: true + default: "" + + - variable: chain + label: Chain + schema: + type: list + default: [] + items: + - variable: chainEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: middlewares + label: Middlewares to Chain + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + + - variable: redirectScheme + label: redirectScheme + schema: + type: list + default: [] + items: + - variable: redirectSchemeEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: scheme + label: Scheme + schema: + type: string + required: true + default: https + enum: + - value: https + description: https + - value: http + description: http + - variable: permanent + label: Permanent + schema: + type: boolean + default: false + + - variable: rateLimit + label: rateLimit + schema: + type: list + default: [] + items: + - variable: rateLimitEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: average + label: Average + schema: + type: int + required: true + default: 300 + - variable: burst + label: Burst + schema: + type: int + required: true + default: 200 + + - variable: redirectRegex + label: redirectRegex + schema: + type: list + default: [] + items: + - variable: redirectRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: regex + label: Regex + schema: + type: string + required: true + default: "" + - variable: replacement + label: Replacement + schema: + type: string + required: true + default: "" + - variable: permanent + label: Permanent + schema: + type: boolean + default: false + + - variable: stripPrefixRegex + label: stripPrefixRegex + schema: + type: list + default: [] + items: + - variable: stripPrefixRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: regex + label: Regex + schema: + type: list + default: [] + items: + - variable: regexEntry + label: Regex + schema: + type: string + required: true + default: "" + + - variable: ipWhiteList + label: ipWhiteList + schema: + type: list + default: [] + items: + - variable: ipWhiteListEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: sourceRange + label: Source Range + schema: + type: list + default: [] + items: + - variable: sourceRangeEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: ipStrategy + label: IP Strategy + schema: + additional_attrs: true + type: dict + attrs: + - variable: depth + label: Depth + schema: + type: int + required: true + - variable: excludedIPs + label: Excluded IPs + schema: + type: list + default: [] + items: + - variable: excludedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + + - variable: themePark + label: theme.park + schema: + type: list + default: [] + items: + - variable: themeParkEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: This is a 3rd party plugin and not maintained by TrueCharts, + for more information go to
traefik-themepark + schema: + type: string + required: true + default: "" + - variable: appName + label: App Name + description: Lower case, name of the app to be themed. +
Go to https://docs.theme-park.dev/themes/ to see supported apps. + schema: + type: string + required: true + default: "" + - variable: themeName + label: Theme Name + description: Lower case, name of the theme to be applied. +
Go to https://docs.theme-park.dev/theme-options/ to see supported themes. + schema: + type: string + required: true + default: "" + - variable: baseUrl + label: Base URL + description: Replace `https://theme-park.dev` URL for self-hosting reference. + schema: + type: string + required: true + default: https://theme-park.dev + - variable: addons + label: Addons + schema: + type: list + default: [] + items: + - variable: addonEntry + label: Addon + description: Currently only supports 'darker' and '4k-logo' for *arr apps. +
Go to https://docs.theme-park.dev/themes/addons/ for Addon information. +
Go to https://github.com/packruler/traefik-themepark for more context on plugin + schema: + type: string + required: true + default: "" + + - variable: realIP + label: Real IP + schema: + type: list + default: [] + items: + - variable: realIPEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: excludedNetworks + label: Excluded Networks + schema: + type: list + default: [] + items: + - variable: excludedNetEntry + label: Excluded Network Entry + description: Network to exclude setting it to X-Real-Ip + schema: + type: string + required: true + default: "" + + - variable: geoBlock + label: GeoBlock + schema: + type: list + default: [] + items: + - variable: geoBlockEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: This is a 3rd party plugin and not maintained by TrueCharts, + for more information go to geoblock + schema: + type: string + required: true + default: "" + - variable: allowLocalRequests + label: Allow Local Requests + description: If set to true, will not block request from Private IP Ranges + schema: + type: boolean + default: true + - variable: logLocalRequests + label: Log Local Requests + description: If set to true, will log every connection from any IP in the private IP range + schema: + type: boolean + default: false + - variable: logAllowedRequests + label: Log Allowed Requests + description: If set to true, will show a log message with the IP and the country of origin if a request is allowed. + schema: + type: boolean + default: false + - variable: logApiRequests + label: Log API Requests + description: If set to true, will show a log message for every API hit. + schema: + type: boolean + default: false + - variable: api + label: API + description: Defines the API URL for the IP to Country resolution. The IP to fetch can be added with {ip} to the URL. + schema: + type: string + required: true + default: https://get.geojs.io/v1/ip/country/{ip} + - variable: apiTimeoutMs + label: API Timeout in ms + description: Timeout for the call to the api uri. + schema: + type: int + required: true + default: 500 + - variable: cacheSize + label: Cache Size + description: Defines the max size of the LRU (least recently used) cache. + schema: + type: int + required: true + default: 25 + - variable: forceMonthlyUpdate + label: Force Monthly Update + description: Even if an IP stays in the cache for a period of a month (about 30 x 24 hours), it must be fetch again after a month. + schema: + type: boolean + default: true + - variable: allowUnknownCountries + label: Allow Unknown Countries + description: Some IP addresses have no country associated with them. If this option is set to true, all IPs with no associated country are also allowed. + schema: + type: boolean + default: false + - variable: unknownCountryApiResponse + label: Unknown Countries API Response + description: The API uri can be customized. This options allows to customize the response string of the API when a IP with no associated country is requested. + schema: + type: string + required: true + default: nil + - variable: blackListMode + label: Blacklist Mode + description: When set to true the filter logic is inverted, i.e. requests originating from countries listed in the countries list are blocked. + schema: + type: boolean + default: false + - variable: countries + description: Country codes (2 characters) from which connections to the service should be allowed or blocked, based on the mode. + label: Countries + schema: + type: list + default: [] + items: + - variable: countryEntry + label: Country + description: Country codes (2 characters) from which connections to the service should be allowed or blocked, based on the mode. + schema: + type: string + required: true + # Allow only 2 Characters + valid_chars: '^[a-zA-Z]{2}$' + default: "" + + - variable: addPrefix + label: Add Prefix + schema: + type: list + default: [] + items: + - variable: addPrefixEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: prefix + label: Prefix + schema: + type: string + required: true + default: "" + + - variable: modsecurity + label: modsecurity + schema: + type: list + default: [] + items: + - variable: modsecurityEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: This is a 3rd party plugin and not maintained by TrueCharts, + for more information go to traefik-modsecurity-plugin + schema: + type: string + required: true + default: "" + - variable: modSecurityUrl + label: ModSecurity Url + description: It's the URL for the owasp/modsecurity container. + schema: + type: string + required: true + default: "https://someurl" + - variable: timeoutMillis + label: timeout Millis + description: timeout in milliseconds for the http client to talk with modsecurity container. ( + schema: + type: int + required: true + default: 2 + - variable: maxBodySize + label: maxBody Size + description: it's the maximum limit for requests body size. Requests exceeding this value will be rejected using HTTP 413 Request Entity Too Large. Zero means "use default value". + schema: + type: int + required: true + default: 0 + + - variable: service + group: "Networking and Services" + label: "Configure Service Entrypoint" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9000 + required: true + - variable: tcp + label: "TCP Service" + description: "The tcp Entrypoint service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: web + label: "web Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 80 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + default: "websecure" + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + + - variable: websecure + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 443 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + hidden: true + - variable: portsList + label: "Additional TCP Entrypoints" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom Entrypoints" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Entrypoints Name" + schema: + type: string + default: "" + - variable: protocol + label: "Entrypoints Type" + schema: + type: string + default: "tcp" + enum: + - value: http + description: "HTTP" + - value: "https" + description: "HTTPS" + - value: tcp + description: "TCP" + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + + - variable: warning + group: Documentation + label: 'WARNING: If installed, be sure to move the TrueNAS GUI to another port (not 80 or 443).' + description: 'See:
https://truecharts.org/charts/enterprise/traefik/how-to for more info.' + schema: + additional_attrs: true + type: dict + attrs: + - variable: warningconfim + label: I am aware that I will brick my system, if I did not follow the instructions. + schema: + type: boolean + default: true + required: true diff --git a/premium/traefik/26.7.4/templates/NOTES.txt b/premium/traefik/26.7.4/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/traefik/26.7.4/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/traefik/26.7.4/templates/_args.tpl b/premium/traefik/26.7.4/templates/_args.tpl new file mode 100644 index 00000000000..fbd7e0ae8c2 --- /dev/null +++ b/premium/traefik/26.7.4/templates/_args.tpl @@ -0,0 +1,198 @@ +{{/* Define the args */}} +{{- define "traefik.args" -}} +args: + {{/* merge all ports */}} + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{/* start of actual arguments */}} + {{- with .Values.globalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- range $name, $config := $ports }} + {{- if $config }} + {{- if or ( eq $config.protocol "http" ) ( eq $config.protocol "https" ) ( eq $config.protocol "tcp" ) }} + {{- $_ := set $config "protocol" "tcp" }} + {{- end }} + - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" + {{- end }} + {{- end }} + - "--api.dashboard=true" + - "--ping=true" + {{- if .Values.traefikMetrics }} + {{- if .Values.traefikMetrics.datadog }} + - "--metrics.datadog=true" + - "--metrics.datadog.address={{ .Values.traefikMetrics.datadog.address }}" + {{- end }} + {{- if .Values.traefikMetrics.influxdb }} + - "--metrics.influxdb=true" + - "--metrics.influxdb.address={{ .Values.traefikMetrics.influxdb.address }}" + - "--metrics.influxdb.protocol={{ .Values.traefikMetrics.influxdb.protocol }}" + {{- end }} + {{- if .Values.traefikMetrics.statsd }} + - "--metrics.statsd=true" + - "--metrics.statsd.address={{ .Values.traefikMetrics.statsd.address }}" + {{- if or .Values.traefikMetrics.prometheus }} + - "--metrics.prometheus=true" + - "--metrics.prometheus.entrypoint=metrics" + {{- end }} + {{- end }} + {{- end }} + {{- if or .Values.metrics.main.enabled }} + - "--metrics.prometheus=true" + - "--metrics.prometheus.entrypoint=metrics" + {{- end }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress" + {{- if .Values.providers.kubernetesIngress.publishedService.enabled }} + - "--providers.kubernetesingress.ingressendpoint.publishedservice={{ template "providers.kubernetesIngress.publishedServicePath" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.labelSelector }} + - "--providers.kubernetesingress.labelSelector={{ .Values.providers.kubernetesIngress.labelSelector }}" + {{- end }} + {{- end }} + {{- if and .Values.rbac.enabled .Values.rbac.namespaced }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd.namespaces={{ template "providers.kubernetesCRD.namespaces" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress.namespaces={{ template "providers.kubernetesIngress.namespaces" . }}" + {{- end }} + {{- end }} + {{- if $.Values.ingressClass.enabled }} + - "--providers.kubernetesingress.ingressclass={{ .Release.Name }}" + {{- end }} + {{- range $entrypoint, $config := $ports }} + {{/* add args for proxyProtocol support */}} + {{- if $config.proxyProtocol }} + {{- if $config.proxyProtocol.enabled }} + {{- if $config.proxyProtocol.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.insecure" + {{- end }} + {{- if not ( empty $config.proxyProtocol.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.trustedIPs={{ join "," $config.proxyProtocol.trustedIPs }}" + {{- end }} + {{- end }} + {{- end }} + {{/* add args for forwardedHeaders support */}} + {{- if $config.forwardedHeaders.enabled }} + {{- if not ( empty $config.forwardedHeaders.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.trustedIPs={{ join "," $config.forwardedHeaders.trustedIPs }}" + {{- end }} + {{- if $config.forwardedHeaders.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.insecure" + {{- end }} + {{- end }} + {{/* end forwardedHeaders configuration */}} + {{- if $config.redirectTo }} + {{- $toPort := index $ports $config.redirectTo }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.port }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- else if $config.redirectPort }} + {{ if gt $config.redirectPort 0.0 }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $config.redirectPort }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- end }} + {{- end }} + {{- if or ( $config.tls ) ( eq $config.protocol "https" ) }} + {{- if or ( $config.tls.enabled ) ( eq $config.protocol "https" ) }} + - "--entrypoints.{{ $entrypoint }}.http.tls=true" + {{- if $config.tls.options }} + - "--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}" + {{- end }} + {{- if $config.tls.certResolver }} + - "--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}" + {{- end }} + {{- if $config.tls.domains }} + {{- range $index, $domain := $config.tls.domains }} + {{- if $domain.main }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}" + {{- end }} + {{- if $domain.sans }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join "," $domain.sans }}" + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- with .Values.logs }} + - "--log.format={{ .general.format }}" + {{- if ne .general.level "ERROR" }} + - "--log.level={{ .general.level | upper }}" + {{- end }} + {{- if .access.enabled }} + - "--accesslog=true" + - "--accesslog.format={{ .access.format }}" + {{- if .access.bufferingsize }} + - "--accesslog.bufferingsize={{ .access.bufferingsize }}" + {{- end }} + {{- if .access.filters }} + {{- if .access.filters.statuscodes }} + - "--accesslog.filters.statuscodes={{ .access.filters.statuscodes }}" + {{- end }} + {{- if .access.filters.retryattempts }} + - "--accesslog.filters.retryattempts" + {{- end }} + {{- if .access.filters.minduration }} + - "--accesslog.filters.minduration={{ .access.filters.minduration }}" + {{- end }} + {{- end }} + - "--accesslog.fields.defaultmode={{ .access.fields.general.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.general.names }} + - "--accesslog.fields.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + - "--accesslog.fields.headers.defaultmode={{ .access.fields.headers.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.headers.names }} + - "--accesslog.fields.headers.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + {{- end }} + {{- end }} + {{/* + For new plugins, add them on the container also + https://github.com/truecharts/containers/blob/master/mirror/traefik/Dockerfile + moduleName must match on the container and here + */}} + {{- if .Values.middlewares.themePark }} + {{/* theme.park */}} + - "--experimental.localPlugins.traefik-themepark.modulename=github.com/packruler/traefik-themepark" + {{- end }} + {{/* End of theme.park */}} + {{/* GeoBlock */}} + {{- if .Values.middlewares.geoBlock }} + - "--experimental.localPlugins.GeoBlock.modulename=github.com/PascalMinder/geoblock" + {{- end }} + {{/* End of GeoBlock */}} + {{/* RealIP */}} + {{- if .Values.middlewares.realIP }} + - "--experimental.localPlugins.traefik-real-ip.modulename=github.com/jramsgz/traefik-real-ip" + {{- end }} + {{/* End of RealIP */}} + {{/* ModSecurity */}} + {{- if .Values.middlewares.modsecurity }} + - "--experimental.localPlugins.traefik-modsecurity-plugin.modulename=github.com/acouvreur/traefik-modsecurity-plugin" + {{- end }} + {{/* CrowdsecBouncer */}} + {{- if .Values.middlewares.bouncer }} + - "--experimental.localPlugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin" + {{- end }} + {{/* End of ModSecurity */}} + {{/* RewriteResponseHeaders */}} + {{- if .Values.middlewares.rewriteResponseHeaders }} + - "--experimental.localPlugins.rewriteResponseHeaders.modulename=github.com/XciD/traefik-plugin-rewrite-headers" + {{- end }} + {{/* End of RewriteResponseHeaders */}} + {{- with .Values.additionalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/_helpers.tpl b/premium/traefik/26.7.4/templates/_helpers.tpl new file mode 100644 index 00000000000..1345dcea39a --- /dev/null +++ b/premium/traefik/26.7.4/templates/_helpers.tpl @@ -0,0 +1,22 @@ +{{/* +Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. +By convention this will simply use the / to match the name of the +service generated. +Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` +*/}} +{{- define "providers.kubernetesIngress.publishedServicePath" -}} +{{- $fullName := include "tc.v1.common.lib.chart.names.fullname" . -}} +{{- $defServiceName := printf "%s/%s-tcp" .Release.Namespace $fullName -}} +{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }} +{{- print $servicePath | trimSuffix "-" -}} +{{- end -}} + +{{/* +Construct a comma-separated list of whitelisted namespaces +*/}} +{{- define "providers.kubernetesIngress.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesIngress.namespaces) }} +{{- end -}} +{{- define "providers.kubernetesCRD.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesCRD.namespaces) }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/_ingressclass.tpl b/premium/traefik/26.7.4/templates/_ingressclass.tpl new file mode 100644 index 00000000000..4213783865c --- /dev/null +++ b/premium/traefik/26.7.4/templates/_ingressclass.tpl @@ -0,0 +1,24 @@ +{{/* Define the ingressClass */}} +{{- define "traefik.ingressClass" -}} +--- +{{ if $.Values.ingressClass.enabled }} + {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} +apiVersion: networking.k8s.io/v1 + {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} +apiVersion: networking.k8s.io/v1beta1 + {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} +apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} + {{- else }} + {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} + {{- end }} +kind: IngressClass +metadata: + annotations: + ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} + labels: + {{- include "tc.v1.common.lib.metadata.allLabels" . | nindent 4 }} + name: {{ .Release.Name }} +spec: + controller: traefik.io/ingress-controller +{{- end }} +{{- end }} diff --git a/premium/traefik/26.7.4/templates/_ingressroute.tpl b/premium/traefik/26.7.4/templates/_ingressroute.tpl new file mode 100644 index 00000000000..8e1d0f4e3f9 --- /dev/null +++ b/premium/traefik/26.7.4/templates/_ingressroute.tpl @@ -0,0 +1,34 @@ +{{/* Define the ingressRoute */}} +{{- define "traefik.ingressRoute" -}} +{{ if .Values.ingressRoute.dashboard.enabled }} + +{{- $ingressRouteLabels := .Values.ingressRoute.dashboard.labels }} +{{- $ingressRouteAnnotations := .Values.ingressRoute.dashboard.annotations }} + +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: {{ include "tc.v1.common.lib.chart.names.fullname" . }}-dashboard + {{- $labels := (mustMerge ($ingressRouteLabels | default dict) (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml)) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + labels: + {{- . | nindent 4 }} + {{- end }} + {{- $annotations := (mustMerge ($ingressRouteAnnotations | default dict) (include "tc.v1.common.lib.metadata.allAnnotations" $ | fromYaml)) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "annotations" $annotations) | trim) }} + annotations: + {{- . | nindent 4 }} + {{- end }} + +spec: + entryPoints: + - main + routes: + - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) + kind: Rule + services: + - name: api@internal + kind: TraefikService +{{ end }} +{{- end }} diff --git a/premium/traefik/26.7.4/templates/_portalhook.tpl b/premium/traefik/26.7.4/templates/_portalhook.tpl new file mode 100644 index 00000000000..ec69a695ca6 --- /dev/null +++ b/premium/traefik/26.7.4/templates/_portalhook.tpl @@ -0,0 +1,24 @@ +{{/* Define the portalHook */}} +{{- define "traefik.portalhook" -}} +{{- if .Values.portalhook.enabled -}} + {{- $name := "portalhook" -}} + {{- if $.Values.ingressClass.enabled -}} + {{- $name = printf "portalhook-%v" .Release.Name -}} + {{- end }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ $name }} +data: + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{- range $name, $value := $ports }} + {{ $name }}: {{ $value.port | quote }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/_tlsoptions.tpl b/premium/traefik/26.7.4/templates/_tlsoptions.tpl new file mode 100644 index 00000000000..163b5364421 --- /dev/null +++ b/premium/traefik/26.7.4/templates/_tlsoptions.tpl @@ -0,0 +1,13 @@ +{{/* Define the tlsOptions */}} +{{- define "traefik.tlsOptions" -}} +{{- range $name, $config := .Values.tlsOptions }} + +--- +apiVersion: traefik.io/v1alpha1 +kind: TLSOption +metadata: + name: {{ $name }} +spec: + {{- toYaml $config | nindent 2 }} +{{- end }} +{{- end }} diff --git a/premium/traefik/26.7.4/templates/_tlsstore.tpl b/premium/traefik/26.7.4/templates/_tlsstore.tpl new file mode 100644 index 00000000000..bfd28a1fb70 --- /dev/null +++ b/premium/traefik/26.7.4/templates/_tlsstore.tpl @@ -0,0 +1,26 @@ +{{/* Define the tlsOptions */}} +{{- define "traefik.tlsstore" -}} +{{- if .Values.defaultCertificate }} +--- +apiVersion: traefik.io/v1alpha1 +kind: TLSStore +metadata: + name: default +spec: + certificates: + - secretName: certificate-issuer-{{ tpl .Values.defaultCertificate $ }} + defaultCertificate: + secretName: certificate-issuer-{{ tpl .Values.defaultCertificate $ }} +{{- end }} + +{{- range $name, $config := .Values.tlsStore }} + +--- +apiVersion: traefik.io/v1alpha1 +kind: TLSStore +metadata: + name: {{ $name }} +spec: + {{- toYaml $config | nindent 2 }} +{{- end }} +{{- end }} diff --git a/premium/traefik/26.7.4/templates/common.yaml b/premium/traefik/26.7.4/templates/common.yaml new file mode 100644 index 00000000000..d00c5ec4cc2 --- /dev/null +++ b/premium/traefik/26.7.4/templates/common.yaml @@ -0,0 +1,24 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- $newArgs := (include "traefik.args" . | fromYaml) }} +{{- $_ := set .Values "newArgs" $newArgs -}} +{{- $mergedargs := concat $.Values.workload.main.podSpec.containers.main.args .Values.newArgs.args }} +{{- $_ := set $.Values.workload.main.podSpec.containers.main "args" $mergedargs -}} + +{{- include "traefik.portalhook" . }} +{{- include "traefik.tlsstore" . }} +{{- include "traefik.tlsOptions" . }} +{{- include "traefik.ingressRoute" . }} +{{- include "traefik.ingressClass" . }} + +{{- with .Values.ingress -}} + {{- with .main -}} + {{- if .enabled -}} + {{- $_ := set $.Values.portal.open.override "protocol" "https" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/premium/traefik/26.7.4/templates/middlewares/addPrefix.yaml b/premium/traefik/26.7.4/templates/middlewares/addPrefix.yaml new file mode 100644 index 00000000000..47138233643 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/addPrefix.yaml @@ -0,0 +1,12 @@ +{{- range $index, $middlewareData := .Values.middlewares.addPrefix }} + +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + addPrefix: + prefix: {{ $middlewareData.prefix }} +{{- end }} diff --git a/premium/traefik/26.7.4/templates/middlewares/basic-middleware.yaml b/premium/traefik/26.7.4/templates/middlewares/basic-middleware.yaml new file mode 100644 index 00000000000..ef4671254ef --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/basic-middleware.yaml @@ -0,0 +1,57 @@ +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-compress" $.Release.Name) "compress" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + compress: {} +--- +# Here, an average of 300 requests per second is allowed. +# In addition, a burst of 200 requests is allowed. +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-basic-ratelimit" $.Release.Name) "basic-ratelimit" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + rateLimit: + average: 600 + burst: 400 +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-basic-secure-headers" $.Release.Name) "basic-secure-headers" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + referrerPolicy: same-origin + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-chain-basic" $.Release.Name) "chain-basic" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + chain: + middlewares: + - name: {{ ternary (printf "%v-basic-ratelimit" $.Release.Name) "basic-ratelimit" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-basic-secure-headers" $.Release.Name) "basic-secure-headers" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-compress" $.Release.Name) "compress" $.Values.ingressClass.enabled }} diff --git a/premium/traefik/26.7.4/templates/middlewares/basicauth.yaml b/premium/traefik/26.7.4/templates/middlewares/basicauth.yaml new file mode 100644 index 00000000000..1bbdc462b34 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/basicauth.yaml @@ -0,0 +1,30 @@ +{{- range $index, $middlewareData := .Values.middlewares.basicAuth -}} + + {{- $users := list -}} + {{- range $index, $userdata := $middlewareData.users -}} + {{- $users = append $users (htpasswd $userdata.username $userdata.password) -}} + {{- end }} + +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ printf "%v-%v" $middlewareData.name "secret" }} + namespace: {{ $.Release.Namespace }} +type: Opaque +stringData: + users: | + {{- range $index, $user := $users }} + {{ printf "%s" $user }} + {{- end }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + basicAuth: + secret: {{ printf "%v-%v" $middlewareData.name "secret" }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/bouncer.yaml b/premium/traefik/26.7.4/templates/middlewares/bouncer.yaml new file mode 100644 index 00000000000..2e3015297b9 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/bouncer.yaml @@ -0,0 +1,112 @@ +{{- range $index, $middlewareData := .Values.middlewares.bouncer }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + bouncer: + {{- with $middlewareData.enabled }} + enabled: {{ . }} + {{- end }} + {{- with $middlewareData.logLevel }} + logLevel: {{ . }} + {{- end }} + {{- with $middlewareData.updateIntervalSeconds }} + updateIntervalSeconds: {{ . }} + {{- end }} + {{- with $middlewareData.defaultDecisionSeconds }} + defaultDecisionSeconds: {{ . }} + {{- end }} + {{- with $middlewareData.httpTimeoutSeconds }} + httpTimeoutSeconds: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecMode }} + crowdsecMode: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecAppsecEnabled }} + crowdsecAppsecEnabled: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecAppsecHost }} + crowdsecAppsecHost: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecAppsecFailureBlock }} + crowdsecAppsecFailureBlock: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiKey }} + crowdsecLapiKey: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiKeyFile }} + crowdsecLapiKeyFile: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiHost }} + crowdsecLapiHost: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiScheme }} + crowdsecLapiScheme: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSInsecureVerify }} + crowdsecLapiTLSInsecureVerify: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecCapiMachineId }} + crowdsecCapiMachineId: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecCapiPassword }} + crowdsecCapiPassword: {{ . }} + {{- end }} + {{- if $middlewareData.crowdsecCapiScenarios }} + crowdsecCapiScenarios: + {{- range $middlewareData.crowdsecCapiScenarios }} + - {{ . }} + {{- end }} + {{- end }} + {{- if $middlewareData.forwardedHeadersTrustedIPs }} + forwardedHeadersTrustedIPs: + {{- range $middlewareData.forwardedHeadersTrustedIPs }} + - {{ . }} + {{- end }} + {{- end }} + {{- if $middlewareData.clientTrustedIPs }} + clientTrustedIPs: + {{- range $middlewareData.clientTrustedIPs }} + - {{ . }} + {{- end }} + {{- end }} + {{- with $middlewareData.forwardedHeadersCustomName }} + forwardedHeadersCustomName: {{ . }} + {{- end }} + {{- with $middlewareData.redisCacheEnabled }} + redisCacheEnabled: {{ . }} + {{- end }} + {{- with $middlewareData.redisCacheHost }} + redisCacheHost: {{ . }} + {{- end }} + {{- with $middlewareData.redisCachePassword }} + redisCachePassword: {{ . }} + {{- end }} + {{- with $middlewareData.redisCacheDatabase }} + redisCacheDatabase: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateAuthority }} + crowdsecLapiTLSCertificateAuthority: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateAuthorityFile }} + crowdsecLapiTLSCertificateAuthorityFile: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateBouncer }} + crowdsecLapiTLSCertificateBouncer: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerFile }} + crowdsecLapiTLSCertificateBouncerFile: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerKey }} + crowdsecLapiTLSCertificateBouncerKey: {{ . }} + {{- end }} + {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerKeyFile }} + crowdsecLapiTLSCertificateBouncerKeyFile: {{ . }} + {{- end }} + + +{{- end }} diff --git a/premium/traefik/26.7.4/templates/middlewares/buffering.yaml b/premium/traefik/26.7.4/templates/middlewares/buffering.yaml new file mode 100644 index 00000000000..eade09784e4 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/buffering.yaml @@ -0,0 +1,26 @@ +{{- range $index, $middlewareData := .Values.middlewares.buffering }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + buffering: {{/* Only render if its not and has a value of 0 or greater */}} + {{- if and (not (kindIs "invalid" $middlewareData.maxRequestBodyBytes)) (ge ($middlewareData.maxRequestBodyBytes | int) 0) }} + maxRequestBodyBytes: {{ $middlewareData.maxRequestBodyBytes }} + {{- end -}} + {{- if and (not (kindIs "invalid" $middlewareData.memRequestBodyBytes)) (ge ($middlewareData.memRequestBodyBytes | int) 0) }} + memRequestBodyBytes: {{ $middlewareData.memRequestBodyBytes }} + {{- end -}} + {{- if and (not (kindIs "invalid" $middlewareData.maxResponseBodyBytes)) (ge ($middlewareData.maxResponseBodyBytes | int) 0) }} + maxResponseBodyBytes: {{ $middlewareData.maxResponseBodyBytes }} + {{- end -}} + {{- if and (not (kindIs "invalid" $middlewareData.memResponseBodyBytes)) (ge ($middlewareData.memResponseBodyBytes | int) 0) }} + memResponseBodyBytes: {{ $middlewareData.memResponseBodyBytes }} + {{- end -}} + {{- if $middlewareData.retryExpression }} + retryExpression: {{ $middlewareData.retryExpression | quote }} + {{- end -}} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/chain.yaml b/premium/traefik/26.7.4/templates/middlewares/chain.yaml new file mode 100644 index 00000000000..17d8853fb05 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/chain.yaml @@ -0,0 +1,21 @@ +{{- $values := .Values -}} +{{- $namespace := $.Release.Namespace -}} +{{- if $.Values.ingressClass.enabled -}} + {{- $namespace := (printf "%v-%v" $namespace .Release.Name) -}} +{{- end -}} + +{{- range $index, $middlewareData := .Values.middlewares.chain }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + chain: + middlewares: + {{- range $index, $middleware := .middlewares }} + - name: {{ printf "%v-%v@%v" $namespace $middleware "kubernetescrd" }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/customFrameOptionsValue.yaml b/premium/traefik/26.7.4/templates/middlewares/customFrameOptionsValue.yaml new file mode 100644 index 00000000000..9b9f2b6606c --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/customFrameOptionsValue.yaml @@ -0,0 +1,12 @@ +{{- range $index, $middlewareData := .Values.middlewares.customFrameOptionsValue }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + customFrameOptionsValue: {{ $middlewareData.value }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/customRequestHeaders.yaml b/premium/traefik/26.7.4/templates/middlewares/customRequestHeaders.yaml new file mode 100644 index 00000000000..3c43a131a1d --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/customRequestHeaders.yaml @@ -0,0 +1,15 @@ +{{- range $index, $middlewareData := .Values.middlewares.customRequestHeaders }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + customRequestHeaders: + {{- range $index, $customRequestHeader := $middlewareData.headers }} + {{ $customRequestHeader.name }}: {{ $customRequestHeader.value | quote }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/customResponseHeaders.yaml b/premium/traefik/26.7.4/templates/middlewares/customResponseHeaders.yaml new file mode 100644 index 00000000000..a75db8a3382 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/customResponseHeaders.yaml @@ -0,0 +1,15 @@ +{{- range $index, $middlewareData := .Values.middlewares.customResponseHeaders }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + customResponseHeaders: + {{- range $index, $customResponseHeader := $middlewareData.headers }} + {{ $customResponseHeader.name }}: {{ $customResponseHeader.value | quote }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/forwardauth.yaml b/premium/traefik/26.7.4/templates/middlewares/forwardauth.yaml new file mode 100644 index 00000000000..787fa796823 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/forwardauth.yaml @@ -0,0 +1,29 @@ +{{- range $index, $middlewareData := .Values.middlewares.forwardAuth }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + forwardAuth: + address: {{ $middlewareData.address }} + {{- with $middlewareData.authResponseHeaders }} + authResponseHeaders: + {{- toYaml . | nindent 4 }} + {{- end -}} + {{- with $middlewareData.authRequestHeaders }} + authRequestHeaders: + {{- toYaml . | nindent 4 }} + {{- end -}} + {{- if $middlewareData.authResponseHeadersRegex }} + authResponseHeadersRegex: {{ $middlewareData.authResponseHeadersRegex }} + {{- end -}} + {{- if $middlewareData.trustForwardHeader }} + trustForwardHeader: true + {{- end -}} + {{- with $middlewareData.tls }} + tls: + insecureSkipVerify: {{ .insecureSkipVerify | default false }} + {{- end -}} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/geoblock.yaml b/premium/traefik/26.7.4/templates/middlewares/geoblock.yaml new file mode 100644 index 00000000000..2a647778e56 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/geoblock.yaml @@ -0,0 +1,29 @@ +{{- range $index, $middlewareData := .Values.middlewares.geoBlock }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + GeoBlock: + allowLocalRequests: {{ $middlewareData.allowLocalRequests }} + logLocalRequests: {{ $middlewareData.logLocalRequests }} + logAllowedRequests: {{ $middlewareData.logAllowedRequests }} + logApiRequests: {{ $middlewareData.logApiRequests }} + api: {{ $middlewareData.api }} + apiTimeoutMs: {{ $middlewareData.apiTimeoutMs }} + cacheSize: {{ $middlewareData.cacheSize }} + forceMonthlyUpdate: {{ $middlewareData.forceMonthlyUpdate }} + allowUnknownCountries: {{ $middlewareData.allowUnknownCountries }} + unknownCountryApiResponse: {{ $middlewareData.unknownCountryApiResponse }} + blackListMode: {{ $middlewareData.blackListMode }} + {{- if not $middlewareData.countries -}} + {{- fail "You have to define at least one country..." -}} + {{- end }} + countries: + {{- range $middlewareData.countries }} + - {{ . }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/ipwhitelist.yaml b/premium/traefik/26.7.4/templates/middlewares/ipwhitelist.yaml new file mode 100644 index 00000000000..fc876aca5fe --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/ipwhitelist.yaml @@ -0,0 +1,27 @@ +{{- range $index, $middlewareData := .Values.middlewares.ipWhiteList }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + ipWhiteList: + sourceRange: + {{- range $middlewareData.sourceRange }} + - {{ . }} + {{- end }} + {{- if $middlewareData.ipStrategy }} + ipStrategy: + {{- if $middlewareData.ipStrategy.depth }} + depth: {{ $middlewareData.ipStrategy.depth }} + {{- end -}} + {{- if $middlewareData.ipStrategy.excludedIPs }} + excludedIPs: + {{- range $middlewareData.ipStrategy.excludedIPs }} + - {{ . }} + {{- end }} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/modsecurity.yaml b/premium/traefik/26.7.4/templates/middlewares/modsecurity.yaml new file mode 100644 index 00000000000..07a8d5d358f --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/modsecurity.yaml @@ -0,0 +1,14 @@ +{{- range $index, $middlewareData := .Values.middlewares.modsecurity }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + traefik-modsecurity-plugin: + modSecurityUrl: {{ $middlewareData.modSecurityUrl }} + timeoutMillis: {{ $middlewareData.timeoutMillis }} + maxBodySize: {{ $middlewareData.maxBodySize }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/ratelimit.yaml b/premium/traefik/26.7.4/templates/middlewares/ratelimit.yaml new file mode 100644 index 00000000000..cd9117633f6 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/ratelimit.yaml @@ -0,0 +1,13 @@ +{{- range $index, $middlewareData := .Values.middlewares.rateLimit }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + rateLimit: + average: {{ $middlewareData.average }} + burst: {{ $middlewareData.burst }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/real-ip.yaml b/premium/traefik/26.7.4/templates/middlewares/real-ip.yaml new file mode 100644 index 00000000000..2877d9ce7f7 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/real-ip.yaml @@ -0,0 +1,15 @@ +{{- range $index, $middlewareData := .Values.middlewares.realIP }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + traefik-real-ip: + excludednets: + {{- range $middlewareData.excludedNetworks }} + - {{ . | quote }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/redirectScheme.yaml b/premium/traefik/26.7.4/templates/middlewares/redirectScheme.yaml new file mode 100644 index 00000000000..09f3093998a --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/redirectScheme.yaml @@ -0,0 +1,13 @@ +{{- range $index, $middlewareData := .Values.middlewares.redirectScheme }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + redirectScheme: + scheme: {{ $middlewareData.scheme }} + permanent: {{ $middlewareData.permanent }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/redirectregex.yaml b/premium/traefik/26.7.4/templates/middlewares/redirectregex.yaml new file mode 100644 index 00000000000..30f44f9081b --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/redirectregex.yaml @@ -0,0 +1,14 @@ +{{- range $index, $middlewareData := .Values.middlewares.redirectRegex }} +--- +# Declaring the user list +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + redirectRegex: + regex: {{ $middlewareData.regex | quote }} + replacement: {{ $middlewareData.replacement | quote }} + permanent: {{ $middlewareData.permanent }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/rewriteResponseHeaders.yaml b/premium/traefik/26.7.4/templates/middlewares/rewriteResponseHeaders.yaml new file mode 100644 index 00000000000..d7bfdcdbe07 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/rewriteResponseHeaders.yaml @@ -0,0 +1,17 @@ +{{- range $index, $middlewareData := .Values.middlewares.rewriteResponseHeaders }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + rewriteResponseHeaders: + rewrites: + {{- range $index, $rewriteResponseHeader := $middlewareData.headers }} + - header: {{ $rewriteResponseHeader.name }} + regex: {{ $rewriteResponseHeader.regex | quote }} + replacement: {{ $rewriteResponseHeader.replacement | quote }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/stripPrefixRegex.yaml b/premium/traefik/26.7.4/templates/middlewares/stripPrefixRegex.yaml new file mode 100644 index 00000000000..6fd4c8c9970 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/stripPrefixRegex.yaml @@ -0,0 +1,14 @@ +{{- range $index, $middlewareData := .Values.middlewares.stripPrefixRegex }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + stripPrefixRegex: + regex: + {{- range $middlewareData.regex }} + - {{ . | quote }} + {{- end }} +{{- end -}} diff --git a/premium/traefik/26.7.4/templates/middlewares/tc-chains.yaml b/premium/traefik/26.7.4/templates/middlewares/tc-chains.yaml new file mode 100644 index 00000000000..5566d77c146 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/tc-chains.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-chain") "tc-opencors-chain" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + chain: + middlewares: + - name: {{ ternary (printf "%v-%v" $.Release.Name "basic-ratelimit") "basic-ratelimit" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-headers") "tc-opencors-headers" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-%v" $.Release.Name "compress") "compress" $.Values.ingressClass.enabled }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-chain") "tc-closedcors-chain" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + chain: + middlewares: + - name: {{ ternary (printf "%v-%v" $.Release.Name "basic-ratelimit") "basic-ratelimit" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-headers") "tc-closedcors-headers" $.Values.ingressClass.enabled }} + - name: {{ ternary (printf "%v-%v" $.Release.Name "compress") "compress" $.Values.ingressClass.enabled }} diff --git a/premium/traefik/26.7.4/templates/middlewares/tc-headers.yaml b/premium/traefik/26.7.4/templates/middlewares/tc-headers.yaml new file mode 100644 index 00000000000..1b1a1e2f05d --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/tc-headers.yaml @@ -0,0 +1,59 @@ +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-headers") "tc-opencors-headers" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + accessControlAllowHeaders: + - '*' + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + - POST + accessControlAllowOriginList: + - '*' + accessControlMaxAge: 100 + browserXssFilter: true + contentTypeNosniff: true + frameDeny: true + customRequestHeaders: + X-Forwarded-Proto: https + customResponseHeaders: + server: "" + forceSTSHeader: true + referrerPolicy: same-origin + sslForceHost: true + sslRedirect: true + stsSeconds: 63072000 +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-headers") "tc-closedcors-headers" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + sslRedirect: true + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + sslForceHost: true + referrerPolicy: same-origin + contentSecurityPolicy: frame-ancestors 'self'; form-action 'self'; upgrade-insecure-requests​ + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' diff --git a/premium/traefik/26.7.4/templates/middlewares/tc-nextcloud.yaml b/premium/traefik/26.7.4/templates/middlewares/tc-nextcloud.yaml new file mode 100644 index 00000000000..fcb09becb98 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/tc-nextcloud.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-redirectregex-dav") "tc-nextcloud-redirectregex-dav" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + redirectRegex: + regex: "https://(.*)/.well-known/(card|cal)dav" + replacement: "https://${1}/remote.php/dav/" +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-chain") "tc-nextcloud-chain" $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + chain: + middlewares: + - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-redirectregex-dav") "tc-nextcloud-redirectregex-dav" $.Values.ingressClass.enabled }} diff --git a/premium/traefik/26.7.4/templates/middlewares/theme-park.yaml b/premium/traefik/26.7.4/templates/middlewares/theme-park.yaml new file mode 100644 index 00000000000..16abf2e2f34 --- /dev/null +++ b/premium/traefik/26.7.4/templates/middlewares/theme-park.yaml @@ -0,0 +1,20 @@ +{{- range $index, $middlewareData := .Values.middlewares.themePark }} +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} + namespace: {{ $.Release.Namespace }} +spec: + plugin: + traefik-themepark: + app: {{ $middlewareData.appName }} + theme: {{ $middlewareData.themeName }} + baseUrl: {{ $middlewareData.baseUrl }} + {{- if $middlewareData.addons }} + addons: + {{- range $middlewareData.addons }} + - {{ . | quote }} + {{- end }} + {{- end -}} +{{- end -}} diff --git a/premium/traefik/26.7.4/values.yaml b/premium/traefik/26.7.4/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/traefik/item.yaml b/premium/traefik/item.yaml new file mode 100644 index 00000000000..5d3714bcc16 --- /dev/null +++ b/premium/traefik/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/traefik.png +categories: + - network +screenshots: [] diff --git a/premium/vaultwarden/26.5.3/.helmignore b/premium/vaultwarden/26.5.3/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/premium/vaultwarden/26.5.3/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/premium/vaultwarden/26.5.3/CHANGELOG.md b/premium/vaultwarden/26.5.3/CHANGELOG.md new file mode 100644 index 00000000000..65d5888c821 --- /dev/null +++ b/premium/vaultwarden/26.5.3/CHANGELOG.md @@ -0,0 +1,17 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [vaultwarden-26.5.3](https://github.com/truecharts/charts/compare/vaultwarden-26.5.2...vaultwarden-26.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/vaultwarden/26.5.3/Chart.yaml b/premium/vaultwarden/26.5.3/Chart.yaml new file mode 100644 index 00000000000..2d96044bcc5 --- /dev/null +++ b/premium/vaultwarden/26.5.3/Chart.yaml @@ -0,0 +1,41 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: security + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: premium +apiVersion: v2 +appVersion: 1.30.5 +dependencies: + - name: common + version: 20.0.9 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Unofficial Bitwarden compatible server written in Rust +home: https://truecharts.org/charts/premium/vaultwarden +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png +keywords: + - bitwarden + - bitwardenrs + - bitwarden_rs + - vaultwarden + - password + - rust +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: vaultwarden +sources: + - https://github.com/dani-garcia/vaultwarden + - https://github.com/truecharts/charts/tree/master/charts/premium/vaultwarden + - https://hub.docker.com/r/vaultwarden/server +type: application +version: 26.5.3 diff --git a/premium/vaultwarden/26.5.3/README.md b/premium/vaultwarden/26.5.3/README.md new file mode 100644 index 00000000000..440d727b779 --- /dev/null +++ b/premium/vaultwarden/26.5.3/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/vaultwarden) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/premium/vaultwarden/26.5.3/app-changelog.md b/premium/vaultwarden/26.5.3/app-changelog.md new file mode 100644 index 00000000000..19d9f604458 --- /dev/null +++ b/premium/vaultwarden/26.5.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [vaultwarden-26.5.3](https://github.com/truecharts/charts/compare/vaultwarden-26.5.2...vaultwarden-26.5.3) (2024-03-16) + +### Chore + + + +- rename `enterprise`- train to `premium`-train \ No newline at end of file diff --git a/premium/vaultwarden/26.5.3/app-readme.md b/premium/vaultwarden/26.5.3/app-readme.md new file mode 100644 index 00000000000..436c777e024 --- /dev/null +++ b/premium/vaultwarden/26.5.3/app-readme.md @@ -0,0 +1,8 @@ +Unofficial Bitwarden compatible server written in Rust + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/premium/vaultwarden](https://truecharts.org/charts/premium/vaultwarden) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/premium/vaultwarden/26.5.3/charts/common-20.0.9.tgz b/premium/vaultwarden/26.5.3/charts/common-20.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..41a62ef2dc2cfa8bd99749034bbefcc9f318837f GIT binary patch literal 101329 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 O0RR6tQNzsukPHBGVfvu} literal 0 HcmV?d00001 diff --git a/premium/vaultwarden/26.5.3/ix_values.yaml b/premium/vaultwarden/26.5.3/ix_values.yaml new file mode 100644 index 00000000000..aecc21666d4 --- /dev/null +++ b/premium/vaultwarden/26.5.3/ix_values.yaml @@ -0,0 +1,152 @@ +image: + repository: docker.io/vaultwarden/server + pullPolicy: IfNotPresent + tag: 1.30.5@sha256:edb8e2bab9cbca22e555638294db9b3657ffbb6e5d149a29d7ccdb243e3c71e0 +manifestManager: + enabled: true +service: + main: + ports: + main: + port: 10102 + targetPort: 8080 +workload: + main: + podSpec: + containers: + main: + env: + DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" + DATABASE_URL: + secretKeyRef: + name: cnpg-main-urls + key: std + envFrom: + - configMapRef: + name: vaultwardenconfig + - secretRef: + name: vaultwardensecret +database: + # -- Database type, + # must be one of: 'sqlite', 'mysql' or 'postgresql'. + type: postgresql + # -- Enable DB Write-Ahead-Log for SQLite, + # disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled + wal: true + ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). + # url: "" + ## Set the size of the database connection pool. + # maxConnections: 10 + ## Connection retries during startup, 0 for infinite. 1 second between retries. + # retries: 15 +# Set Bitwarden_rs application variables +vaultwarden: + # -- Allow any user to sign-up + # see: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-registration-of-new-users + allowSignups: true + ## Whitelist domains allowed to sign-up. 'allowSignups' is ignored if set. + # signupDomains: + # - domain.tld + # -- Verify e-mail before login is enabled. + # SMTP must be enabled. + verifySignup: false + # When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled. + requireEmail: false + ## Maximum attempts before an email token is reset and a new email will need to be sent. + # emailAttempts: 3 + ## Email token validity in seconds. + # emailTokenExpiration: 600 + # Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-invitations + allowInvitation: true + # Show password hints: https://github.com/dani-garcia/bitwarden_rs/wiki/Password-hint-display + ## Default organization name in invitation e-mails that are not coming from a specific organization. + # defaultInviteName: "" + showPasswordHint: true + # Enable Web Vault (static content). https://github.com/dani-garcia/bitwarden_rs/wiki/Disabling-or-overriding-the-Vault-interface-hosting + enableWebVault: true + # Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users. + orgCreationUsers: all + ## Limit attachment disk usage per organization. + # attachmentLimitOrg: + ## Limit attachment disk usage per user. + # attachmentLimitUser: + ## HaveIBeenPwned API Key. Can be purchased at https://haveibeenpwned.com/API/Key. + # hibpApiKey: + + admin: + # Enable admin portal. + enabled: false + # Disabling the admin token will make the admin portal accessible to anyone, use carefully: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-admin-token + disableAdminToken: false + ## Token for admin login, will be generated if not defined. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page + # token: + # Enable SMTP. https://github.com/dani-garcia/bitwarden_rs/wiki/SMTP-configuration + smtp: + enabled: false + # SMTP hostname, required if SMTP is enabled. + host: "" + # SMTP sender e-mail address, required if SMTP is enabled. + from: "" + ## SMTP sender name, defaults to 'Bitwarden_RS'. + # fromName: "" + ## Enable SSL connection. + # security: starttls + ## SMTP port. Defaults to 587 with STARTTLS, 465 with FORCE_TLS, and 25 without SSL. + # port: 587 + ## SMTP Authentication Mechanisms. Comma-separated options: 'Plain', 'Login' and 'Xoauth2'. Defaults to 'Plain'. + # authMechanism: Plain + ## Hostname to be sent for SMTP HELO. Defaults to pod name. + # heloName: "" + ## SMTP timeout. + # timeout: 15 + ## Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidHostname: false + ## Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidCertificate: false + ## SMTP username. + # user: "" + ## SMTP password. Required is user is specified, ignored if no user provided. + # password: "" + ## Enable Yubico OTP authentication. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-Yubikey-OTP-authentication + yubico: + enabled: false + ## Yubico server. Defaults to YubiCloud. + # server: + ## Yubico ID and Secret Key. + # clientId: + # secretKey: + ## Enable Mobile Push Notifications. You must obtain and ID and Key here: https://bitwarden.com/host + push: + enabled: false + # installationId: + # installationKey: + ## Logging options. https://github.com/dani-garcia/bitwarden_rs/wiki/Logging + log: + # Log to file. + file: "" + # Log level. Options are "trace", "debug", "info", "warn", "error" or "off". + level: "trace" + ## Log timestamp format. See https://docs.rs/chrono/0.4.15/chrono/format/strftime/index.html. Defaults to time in milliseconds. + # timeFormat: "" + icons: + # Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache). TTL will default to zero. + disableDownload: false + ## Cache time-to-live for icons fetched. 0 means no purging. + # cache: 2592000 + ## Cache time-to-live for icons that were not available. 0 means no purging. + # cacheFailed: 259200 +persistence: + data: + enabled: true + mountPath: "/data" +cnpg: + main: + enabled: true + user: vaultwarden + database: vaultwarden +portal: + open: + enabled: true +ingress: + main: + required: true diff --git a/premium/vaultwarden/26.5.3/questions.yaml b/premium/vaultwarden/26.5.3/questions.yaml new file mode 100755 index 00000000000..eecafe2f80a --- /dev/null +++ b/premium/vaultwarden/26.5.3/questions.yaml @@ -0,0 +1,3599 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + + admin: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + + path: "/admin/" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: vaultwarden + label: "" + group: "App Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: yubico + label: "Yubico OTP authentication" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Yubico OTP authentication" + description: "Please refer to the manual at: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-Yubikey-OTP-authentication" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: server + label: "Yubico server" + description: "Defaults to YubiCloud" + schema: + type: string + default: "" + - variable: clientId + label: "Yubico ID" + schema: + type: string + default: "" + - variable: secretKey + label: "Yubico Secret Key" + schema: + type: string + default: "" + - variable: push + label: "Mobile Push Notifications" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Mobile Push Notifications" + description: "You must obtain and ID and Key here: https://bitwarden.com/host" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: installationId + label: "Installation ID" + schema: + type: string + default: "" + required: true + - variable: installationKey + label: "Installation Key" + schema: + type: string + default: "" + required: true + - variable: admin + label: "Admin Portal" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Admin Portal" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: disableAdminToken + label: "Make Accessible Without Password/Token" + schema: + type: boolean + default: false + - variable: token + label: "Admin Portal Password/Token" + description: "Will be automatically generated if not defined" + schema: + type: string + default: "" + - variable: icons + label: "Icon Download Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: disableDownload + label: "Disable Icon Download" + description: "Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache)" + schema: + type: boolean + default: false + - variable: cache + label: "Cache time-to-live" + description: "Cache time-to-live for icons fetched. 0 means no purging" + schema: + type: int + default: 2592000 + - variable: token + label: "Failed Downloads Cache time-to-live" + description: "Cache time-to-live for icons that were not available. 0 means no purging." + schema: + type: int + default: 2592000 + - variable: log + label: "Logging" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log level" + schema: + type: string + default: "info" + required: true + enum: + - value: "trace" + description: "trace" + - value: "debug" + description: "debug" + - value: "info" + description: "info" + - value: "warn" + description: "warn" + - value: "error" + description: "error" + - value: "off" + description: "off" + - variable: file + label: "Log-File Location" + schema: + type: string + default: "" + - variable: smtp + label: "SMTP Settings (Email)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable SMTP Support" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: "SMTP hostname" + schema: + type: string + required: true + default: "" + - variable: from + label: "SMTP sender e-mail address" + schema: + type: string + required: true + default: "" + - variable: fromName + label: "SMTP sender name" + schema: + type: string + required: true + default: "" + - variable: user + label: "SMTP username" + schema: + type: string + required: true + default: "" + - variable: password + label: "SMTP password" + description: "Required is user is specified, ignored if no user provided" + schema: + type: string + default: "" + - variable: security + label: "Enable SSL connection" + schema: + type: string + default: "starttls" + enum: + - value: "starttls" + description: "STARTTLS (587)" + - value: "force_tls" + description: "FORCE_TLS (465)" + - value: "off" + description: "OFF (25)" + - variable: port + label: "SMTP port" + description: "Usually: 587 with STARTTLS, 465 with FORCE_TLS, and 25 without SSL" + schema: + type: int + default: 587 + - variable: authMechanism + label: "SMTP Authentication Mechanisms" + description: "Comma-separated options: Plain, Login and Xoauth2" + schema: + type: string + default: "Plain" + - variable: heloName + label: "SMTP HELO - Hostname" + description: "Hostname to be sent for SMTP HELO. Defaults to pod name" + schema: + type: string + default: "" + - variable: timeout + label: "SMTP timeout" + schema: + type: int + default: 15 + - variable: invalidHostname + label: "Accept Invalid Hostname" + description: "Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: invalidCertificate + label: "Accept Invalid Certificate" + description: "Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: allowSignups + label: "Allow Signup" + description: "Allow any user to sign-up: https://github.com/dani-garcia/vaultwarden/wiki/Disable-registration-of-new-users" + schema: + type: boolean + default: true + - variable: allowInvitation + label: "Always allow Invitation" + description: "Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/vaultwarden/wiki/Disable-invitations" + schema: + type: boolean + default: true + - variable: defaultInviteName + label: "Default Invite Organisation Name" + description: "Default organization name in invitation e-mails that are not coming from a specific organization." + schema: + type: string + default: "" + - variable: showPasswordHint + label: "Show password hints" + description: "https://github.com/dani-garcia/vaultwarden/wiki/Password-hint-display" + schema: + type: boolean + default: true + - variable: signupwhitelistenable + label: "Enable Signup Whitelist" + description: "allowSignups is ignored if set" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: signupDomains + label: "Signup Whitelist Domains" + schema: + type: list + default: [] + items: + - variable: domain + label: "Domain" + schema: + type: string + default: "" + - variable: verifySignup + label: "Verifiy Signup" + description: "Verify e-mail before login is enabled. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: requireEmail + label: "Block Login if email fails" + description: "When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: emailAttempts + label: "Email token reset attempts" + description: "Maximum attempts before an email token is reset and a new email will need to be sent" + schema: + type: int + default: 3 + - variable: emailTokenExpiration + label: "Email token validity in seconds" + schema: + type: int + default: 600 + - variable: enableWebVault + label: "Enable Webvault" + description: "Enable Web Vault (static content). https://github.com/dani-garcia/vaultwarden/wiki/Disabling-or-overriding-the-Vault-interface-hosting" + schema: + type: boolean + default: true + - variable: orgCreationUsers + label: "Limit Organisation Creation to (users)" + description: "Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users." + schema: + type: string + default: "all" + - variable: attachmentLimitOrg + label: "Limit Attachment Disk Usage per Organisation" + schema: + type: string + default: "" + - variable: attachmentLimitUser + label: "Limit Attachment Disk Usage per User" + schema: + type: string + default: "" + - variable: hibpApiKey + label: "HaveIBeenPwned API Key" + description: "Can be purchased at https://haveibeenpwned.com/API/Key" + schema: + type: string + default: "" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10102 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + + - variable: cnpg + group: Postgresql + label: "CloudNative-PG (CNPG)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: mode + label: Mode + description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.' + schema: + type: string + default: "standalone" + enum: + - value: standalone + description: standalone + - value: replica + description: replica + - value: recovery + description: recovery + - variable: cluster + label: "Cluster Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 1 + - variable: singleNode + label: singleNode + schema: + type: boolean + default: true + hidden: true + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walStorage + label: "WAL Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: monitoring + label: "Monitoring Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: disableDefaultQueries + label: "disableDefaultQueries" + schema: + type: boolean + default: false + - variable: pooler + label: "Pooler Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: instances + label: Instances + schema: + type: int + show_if: [["enabled", "=", true]] + default: 1 + - variable: createRO + label: "Create ReadOnly Instance" + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: false + - variable: backups + label: "Backup Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: destinationPath + label: "destinationPath" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: retentionPolicy + label: "retentionPolicy" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "30d" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + - variable: recovery + label: "Recovery Settings (Experimental)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + - variable: serverName + label: "serverName" + schema: + type: string + default: "" + - variable: revision + label: "serverName" + schema: + type: int + - variable: endpointURL + label: "endpointURL" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: method + label: "method" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "object_store" + - variable: backupName + label: "backupName" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: provider + label: "provider" + schema: + type: string + show_if: [["enabled", "=", true]] + default: "s3" + enum: + - value: s3 + description: S3 + - value: azure + description: Azure + - value: google + description: Google + - variable: s3 + label: "s3" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "s3"]] + attrs: + - variable: region + label: "region" + schema: + type: string + default: "" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: accessKey + label: "accessKey" + schema: + type: string + default: "" + - variable: secretKey + label: "secretKey" + schema: + type: string + default: "" + - variable: azure + label: "azure (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "azure"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: connectionString + label: "connectionString" + schema: + type: string + default: "" + - variable: storageAccount + label: "storageAccount" + schema: + type: string + default: "" + - variable: storageKey + label: "storageKey" + schema: + type: string + default: "" + - variable: storageSasToken + label: "storageSasToken" + schema: + type: string + default: "" + - variable: containerName + label: "containerName" + schema: + type: string + default: "" + - variable: serviceName + label: "serviceName" + schema: + type: string + default: "blob" + - variable: inheritFromAzureAD + label: "inheritFromAzureAD" + schema: + type: boolean + default: false + - variable: google + label: "google (EXTREMELY EXPERIMENTAL)" + schema: + additional_attrs: true + type: dict + show_if: [["provider", "=", "google"]] + attrs: + - variable: path + label: "path" + schema: + type: string + default: "/" + - variable: bucket + label: "bucket" + schema: + type: string + default: "" + - variable: gkeEnvironment + label: "gkeEnvironment" + schema: + type: string + default: "" + - variable: applicationCredentials + label: "applicationCredentials" + schema: + type: string + default: "" + +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/premium/vaultwarden/26.5.3/templates/NOTES.txt b/premium/vaultwarden/26.5.3/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/premium/vaultwarden/26.5.3/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/premium/vaultwarden/26.5.3/templates/_configmap.tpl b/premium/vaultwarden/26.5.3/templates/_configmap.tpl new file mode 100644 index 00000000000..2749819b03b --- /dev/null +++ b/premium/vaultwarden/26.5.3/templates/_configmap.tpl @@ -0,0 +1,111 @@ +{{/* Define the configmap */}} +{{- define "vaultwarden.configmap" -}} +enabled: true +data: + ROCKET_PORT: "8080" + SIGNUPS_ALLOWED: {{ .Values.vaultwarden.allowSignups | quote }} + {{- if .Values.vaultwarden.signupDomains }} + SIGNUPS_DOMAINS_WHITELIST: {{ join "," .Values.vaultwarden.signupDomains | quote }} + {{- end }} + {{- if and (eq .Values.vaultwarden.verifySignup true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Signup verification requires SMTP to be enabled" nil}}{{end}} + SIGNUPS_VERIFY: {{ .Values.vaultwarden.verifySignup | quote }} + {{- if and (eq .Values.vaultwarden.requireEmail true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Requiring emails for login depends on SMTP" nil}}{{end}} + REQUIRE_DEVICE_EMAIL: {{ .Values.vaultwarden.requireEmail | quote }} + {{- if .Values.vaultwarden.emailAttempts }} + EMAIL_ATTEMPTS_LIMIT: {{ .Values.vaultwarden.emailAttempts | quote }} + {{- end }} + {{- if .Values.vaultwarden.emailTokenExpiration }} + EMAIL_EXPIRATION_TIME: {{ .Values.vaultwarden.emailTokenExpiration | quote }} + {{- end }} + INVITATIONS_ALLOWED: {{ .Values.vaultwarden.allowInvitation | quote }} + {{- if .Values.vaultwarden.defaultInviteName }} + INVITATION_ORG_NAME: {{ .Values.vaultwarden.defaultInviteName | quote }} + {{- end }} + SHOW_PASSWORD_HINT: {{ .Values.vaultwarden.showPasswordHint | quote }} + WEB_VAULT_ENABLED: {{ .Values.vaultwarden.enableWebVault | quote }} + ORG_CREATION_USERS: {{ .Values.vaultwarden.orgCreationUsers | quote }} + {{- if .Values.vaultwarden.attachmentLimitOrg }} + ORG_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitOrg | quote }} + {{- end }} + {{- if .Values.vaultwarden.attachmentLimitUser }} + USER_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitUser | quote }} + {{- end }} + {{- if .Values.vaultwarden.hibpApiKey }} + HIBP_API_KEY: {{ .Values.vaultwarden.hibpApiKey | quote }} + {{- end }} + {{- include "vaultwarden.dbTypeValid" . }} + {{- if .Values.database.retries }} + DB_CONNECTION_RETRIES: {{ .Values.database.retries | quote }} + {{- end }} + {{- if .Values.database.maxConnections }} + DATABASE_MAX_CONNS: {{ .Values.database.maxConnections | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.smtp.enabled true }} + SMTP_HOST: {{ required "SMTP host is required to enable SMTP" .Values.vaultwarden.smtp.host | quote }} + SMTP_FROM: {{ required "SMTP sender address ('from') is required to enable SMTP" .Values.vaultwarden.smtp.from | quote }} + {{- if .Values.vaultwarden.smtp.fromName }} + SMTP_FROM_NAME: {{ .Values.vaultwarden.smtp.fromName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.security }} + SMTP_SECURITY: {{ .Values.vaultwarden.smtp.security | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.port }} + SMTP_PORT: {{ .Values.vaultwarden.smtp.port | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.authMechanism }} + SMTP_AUTH_MECHANISM: {{ .Values.vaultwarden.smtp.authMechanism | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.heloName }} + HELO_NAME: {{ .Values.vaultwarden.smtp.heloName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.timeout }} + SMTP_TIMEOUT: {{ .Values.vaultwarden.smtp.timeout | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidHostname }} + SMTP_ACCEPT_INVALID_HOSTNAMES: {{ .Values.vaultwarden.smtp.invalidHostname | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidCertificate }} + SMTP_ACCEPT_INVALID_CERTS: {{ .Values.vaultwarden.smtp.invalidCertificate | quote }} + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.log.file }} + LOG_FILE: {{ .Values.vaultwarden.log.file | quote }} + {{- end }} + {{- if or .Values.vaultwarden.log.level .Values.vaultwarden.log.timeFormat }} + EXTENDED_LOGGING: "true" + {{- end }} + {{- if .Values.vaultwarden.log.level }} + {{- include "vaultwarden.logLevelValid" . }} + LOG_LEVEL: {{ .Values.vaultwarden.log.level | quote }} + {{- end }} + {{- if .Values.vaultwarden.log.timeFormat }} + LOG_TIMESTAMP_FORMAT: {{ .Values.vaultwarden.log.timeFormat | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.disableDownload }} + DISABLE_ICON_DOWNLOAD: {{ .Values.vaultwarden.icons.disableDownload | quote }} + {{- if and (not .Values.vaultwarden.icons.cache) (eq .Values.vaultwarden.icons.disableDownload "true") }} + ICON_CACHE_TTL: "0" + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.icons.cache }} + ICON_CACHE_TTL: {{ .Values.vaultwarden.icons.cache | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.cacheFailed }} + ICON_CACHE_NEGTTL: {{ .Values.vaultwarden.icons.cacheFailed | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.admin.enabled true }} + {{- if eq .Values.vaultwarden.admin.disableAdminToken true }} + DISABLE_ADMIN_TOKEN: "true" + {{- end }} + {{- end }} + {{- if eq .Values.vaultwarden.yubico.enabled true }} + {{- if .Values.vaultwarden.yubico.server }} + YUBICO_SERVER: {{ .Values.vaultwarden.yubico.server | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.database.type "sqlite" }} + ENABLE_DB_WAL: {{ .Values.database.wal | quote }} + {{- else }} + ENABLE_DB_WAL: "false" + {{- end }} +{{- end -}} diff --git a/premium/vaultwarden/26.5.3/templates/_secrets.tpl b/premium/vaultwarden/26.5.3/templates/_secrets.tpl new file mode 100644 index 00000000000..262fcffa1b4 --- /dev/null +++ b/premium/vaultwarden/26.5.3/templates/_secrets.tpl @@ -0,0 +1,37 @@ +{{/* Define the secrets */}} +{{- define "vaultwarden.secrets" -}} + +{{- $adminToken := "" }} +{{- if eq .Values.vaultwarden.admin.enabled true }} +{{- $adminToken = .Values.vaultwarden.admin.token | default (randAlphaNum 48) | quote }} +{{- end -}} + +{{- $smtpUser := "" }} +{{- if and (eq .Values.vaultwarden.smtp.enabled true ) (.Values.vaultwarden.smtp.user) }} +{{- $smtpUser = .Values.vaultwarden.smtp.user | quote }} +{{- end -}} + +{{- $yubicoClientId := "" }} +{{- if eq .Values.vaultwarden.yubico.enabled true }} +{{- $yubicoClientId = required "Yubico Client ID required" .Values.vaultwarden.yubico.clientId | toString | quote }} +{{- end -}} +enabled: true +data: + placeholder: placeholdervalue + {{- if ne $adminToken "" }} + ADMIN_TOKEN: {{ $adminToken }} + {{- end }} + {{- if ne $smtpUser "" }} + SMTP_USERNAME: {{ $smtpUser }} + SMTP_PASSWORD: {{ required "Must specify SMTP password" .Values.vaultwarden.smtp.password | quote }} + {{- end }} + {{- if ne $yubicoClientId "" }} + YUBICO_CLIENT_ID: {{ $yubicoClientId }} + YUBICO_SECRET_KEY: {{ required "Yubico Secret Key required" .Values.vaultwarden.yubico.secretKey | quote }} + {{- end }} + {{- if .Values.vaultwarden.push.enabled }} + PUSH_ENABLED: {{ .Values.vaultwarden.push.enabled | quote }} + PUSH_INSTALLATION_ID: {{ required "Installation ID required" .Values.vaultwarden.push.installationId | quote }} + PUSH_INSTALLATION_KEY: {{ required "Installation Key required" .Values.vaultwarden.push.installationKey | quote }} + {{- end }} +{{- end -}} diff --git a/premium/vaultwarden/26.5.3/templates/_validate.tpl b/premium/vaultwarden/26.5.3/templates/_validate.tpl new file mode 100644 index 00000000000..e4832c2f6e5 --- /dev/null +++ b/premium/vaultwarden/26.5.3/templates/_validate.tpl @@ -0,0 +1,17 @@ +{{/* +Ensure valid DB type is select, defaults to SQLite +*/}} +{{- define "vaultwarden.dbTypeValid" -}} +{{- if not (or (eq .Values.database.type "postgresql") (eq .Values.database.type "mysql") (eq .Values.database.type "sqlite")) }} +{{- required "Invalid database type" nil }} +{{- end -}} +{{- end -}} + +{{/* +Ensure log type is valid +*/}} +{{- define "vaultwarden.logLevelValid" -}} +{{- if not (or (eq .Values.vaultwarden.log.level "trace") (eq .Values.vaultwarden.log.level "debug") (eq .Values.vaultwarden.log.level "info") (eq .Values.vaultwarden.log.level "warn") (eq .Values.vaultwarden.log.level "error") (eq .Values.vaultwarden.log.level "off")) }} +{{- required "Invalid log level" nil }} +{{- end }} +{{- end }} diff --git a/premium/vaultwarden/26.5.3/templates/common.yaml b/premium/vaultwarden/26.5.3/templates/common.yaml new file mode 100644 index 00000000000..66c6adab5db --- /dev/null +++ b/premium/vaultwarden/26.5.3/templates/common.yaml @@ -0,0 +1,17 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for vaultwarden */}} +{{- $configmapFile := include "vaultwarden.configmap" . | fromYaml -}} +{{- if $configmapFile -}} + {{- $_ := set .Values.configmap "vaultwardenconfig" $configmapFile -}} +{{- end -}} + +{{/* Render secrets for vaultwarden */}} +{{- $secret := include "vaultwarden.secrets" . | fromYaml -}} +{{- if $secret -}} + {{- $_ := set .Values.secret "vaultwardensecret" $secret -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/premium/vaultwarden/26.5.3/values.yaml b/premium/vaultwarden/26.5.3/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/premium/vaultwarden/item.yaml b/premium/vaultwarden/item.yaml new file mode 100644 index 00000000000..2fed8eeae78 --- /dev/null +++ b/premium/vaultwarden/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png +categories: + - security +screenshots: [] diff --git a/system/cert-manager/4.5.4/app-changelog.md b/system/cert-manager/4.5.4/app-changelog.md deleted file mode 100644 index 70fe7f0d353..00000000000 --- a/system/cert-manager/4.5.4/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cert-manager-4.5.4](https://github.com/truecharts/charts/compare/cert-manager-4.5.3...cert-manager-4.5.4) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/cloudnative-pg/6.6.3/app-changelog.md b/system/cloudnative-pg/6.6.3/app-changelog.md deleted file mode 100644 index a5d25868d60..00000000000 --- a/system/cloudnative-pg/6.6.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cloudnative-pg-6.6.3](https://github.com/truecharts/charts/compare/cloudnative-pg-6.6.2...cloudnative-pg-6.6.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/grafana-agent-operator/1.5.3/app-changelog.md b/system/grafana-agent-operator/1.5.3/app-changelog.md deleted file mode 100644 index e57bd5b4dc2..00000000000 --- a/system/grafana-agent-operator/1.5.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [grafana-agent-operator-1.5.3](https://github.com/truecharts/charts/compare/grafana-agent-operator-1.5.2...grafana-agent-operator-1.5.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/kubeapps/2.7.3/app-changelog.md b/system/kubeapps/2.7.3/app-changelog.md deleted file mode 100644 index 9e264582ac2..00000000000 --- a/system/kubeapps/2.7.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kubeapps-2.7.3](https://github.com/truecharts/charts/compare/kubeapps-2.7.2...kubeapps-2.7.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/kubernetes-reflector/4.5.3/app-changelog.md b/system/kubernetes-reflector/4.5.3/app-changelog.md deleted file mode 100644 index 08c33ccca2e..00000000000 --- a/system/kubernetes-reflector/4.5.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kubernetes-reflector-4.5.3](https://github.com/truecharts/charts/compare/kubernetes-reflector-4.5.2...kubernetes-reflector-4.5.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/metallb/14.5.3/app-changelog.md b/system/metallb/14.5.3/app-changelog.md deleted file mode 100644 index b61cf899b2c..00000000000 --- a/system/metallb/14.5.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [metallb-14.5.3](https://github.com/truecharts/charts/compare/metallb-14.5.2...metallb-14.5.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/openebs/3.5.4/app-changelog.md b/system/openebs/3.5.4/app-changelog.md deleted file mode 100644 index aa84bbb5e21..00000000000 --- a/system/openebs/3.5.4/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openebs-3.5.4](https://github.com/truecharts/charts/compare/openebs-3.5.3...openebs-3.5.4) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/prometheus-operator/6.7.3/app-changelog.md b/system/prometheus-operator/6.7.3/app-changelog.md deleted file mode 100644 index 860bfb7c14d..00000000000 --- a/system/prometheus-operator/6.7.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [prometheus-operator-6.7.3](https://github.com/truecharts/charts/compare/prometheus-operator-6.7.2...prometheus-operator-6.7.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/traefik-crds/0.1.3/app-changelog.md b/system/traefik-crds/0.1.3/app-changelog.md deleted file mode 100644 index a7549743f32..00000000000 --- a/system/traefik-crds/0.1.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [traefik-crds-0.1.3](https://github.com/truecharts/charts/compare/traefik-crds-0.1.2...traefik-crds-0.1.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file diff --git a/system/velero/4.5.3/app-changelog.md b/system/velero/4.5.3/app-changelog.md deleted file mode 100644 index bee3d1029ff..00000000000 --- a/system/velero/4.5.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [velero-4.5.3](https://github.com/truecharts/charts/compare/velero-4.5.2...velero-4.5.3) (2024-03-16) - -### Chore - - - -- rename `operator`-train to `system`-train \ No newline at end of file

\n ×Done!\n