--- # Source: opendesk-migrations/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-migrations-pre" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm automountServiceAccountToken: true ... --- # Source: opendesk-migrations/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-migrations-pre-environmentdetails" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation stringData: environmentDetails.yaml: | ai: apiKey: "" endpoint: "" model: "" annotations: cassandra: ingress: null pod: null serviceAccount: null coco: ingress: null pod: null serviceAccount: null collabora: ingress: null pod: null service: null serviceAccount: null cryptpad: ingress: null pod: null serviceAccount: null element: common: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeoboardWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeochoiceWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeodatefixBot: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null elementMatrixNeodatefixBotBootstrap: pod: null serviceAccount: null elementMatrixNeodatefixWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixUserVerificationService: additional: null pod: null service: null serviceAccount: null elementMatrixUserVerificationServiceBootstrap: pod: null serviceAccount: null elementSynapse: common: null federationIngress: null persistence: null pod: null service: null serviceAccount: null elementSynapseWeb: common: null ingress: null pod: null service: null serviceAccount: null elementWellKnown: common: null ingress: null pod: null service: null serviceAccount: null jitsi: pod: null serviceAccount: null jitsiGlobal: pod: null jitsiJibri: pod: null jitsiJicofo: pod: null jitsiJigasi: pod: null jitsiJitsiPatchJVB: serviceAccount: null jitsiJvb: metricsGrafana: null metricsPrometheus: null pod: null service: null jitsiProsody: pod: null jitsiWeb: ingress: null pod: null nextcloudAio: additional: null ingress: null pod: null service: null serviceAccount: null nextcloudExporter: additional: null ingress: null pod: null serviceAccount: null nextcloudNextcloudMgmt: additional: null pod: null serviceAccount: null notes: ingressAdmin: null ingressCollaborationAPI: null ingressCollaborationWS: null ingressMedia: null serviceMedia: null notesBackend: migrateJob: null pod: null service: null notesFrontend: pod: null service: null notesYProvider: pod: null service: null nubus: additional: null ingress: null nubusGuardian: authorizationApiPod: null globalPod: null ingressAuthorizationApi: null ingressIngress: null ingressManagementApi: null ingressManagementUi: null managementApiPod: null managementUiPod: null serviceAccount: null nubusIntercomService: additional: null ingress: null pod: null service: null serviceAccount: null nubusKeycloak: common: null pod: null service: null serviceAccount: null nubusKeycloakBootstrap: additional: null pod: null service: null serviceAccount: null nubusKeycloakBootstrapNubus: additional: null pod: null serviceAccount: null nubusKeycloakExtensions: handlerAdditional: null handlerPod: null handlerService: null handlerServiceAccount: null proxyAdditional: null proxyIngress: null proxyPod: null proxyService: null proxyServiceAccount: null nubusLdapNotifier: additional: null pod: null service: null serviceAccount: null nubusLdapServer: additional: null pod: null service: null serviceAccount: null nubusNginxS3Gateway: additional: null ingress: null pod: null service: null serviceAccount: null nubusNotificationsApi: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusOxConnector: pod: null serviceAccount: null nubusPortalConsumer: pod: null nubusPortalFrontend: additional: null ingressIngress: null ingressRedirects: null ingressRewrites: null persistence: null pod: null service: null serviceAccount: null nubusPortalServer: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusProvisioning: additional: null apiAdditional: null apiPod: null dispatcherAdditional: null dispatcherPod: null natsAdditional: null natsPod: null pod: null prefillAdditional: null prefillPod: null registerConsumersAdditional: null registerConsumersPod: null service: null serviceAccount: null udmTransformerAdditional: null udmTransformerPod: null nubusSelfserviceConsumer: pod: null serviceAccount: null nubusStackDataUms: additional: null pod: null serviceAccount: null nubusUdmListener: pod: null serviceAccount: null nubusUdmRestApi: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusUmcGateway: ingress: null pod: null serviceAccount: null nubusUmcServer: additional: null ingress: null pod: null serviceAccount: null opendeskMigrationsPost: additional: null pod: null serviceAccount: null opendeskMigrationsPre: additional: null pod: null serviceAccount: null opendeskServicesHome: additional: null ingress: null opendeskServicesOtterize: additional: null opendeskServicesStaticFiles: additional: null ingress: null pod: null service: null serviceAccount: null openproject: ingress: null openprojectTempVolumes: null pod: null seederJob: null serviceAccount: null openprojectBootstrap: additional: null pod: null openxchangeAppsuiteCoreDocumentconverter: pod: null openxchangeAppsuiteCoreGuidedtours: pod: null openxchangeAppsuiteCoreImageconverter: pod: null openxchangeAppsuiteCoreMw: gotenbergPod: null pod: null serviceAccount: null updatePod: null openxchangeAppsuiteCoreUi: pod: null openxchangeAppsuiteCoreUiMiddleware: pod: null openxchangeAppsuiteCoreUserGuide: pod: null openxchangeAppsuiteIngress: appsuitebase: null caldavWellKnownRedirect: null carddavWellKnownRedirect: null coreHelpRoute: null davInfostoreRoute: null davRootRoute: null documentsHelpRoute: null driveClientWindowsOxRoute: null driveHelpRoute: null guardApiRoute: null guardPgpRoute: null guardSupportApiRoute: null httpApiRoutesAjax: null httpApiRoutesApi: null httpApiRoutesAppRootApi: null httpApiRoutesAppsuiteApi: null ingress: null officeWebRoute: null restRoutesAdmin: null restRoutesAdvertisement: null restRoutesChronos: null restRoutesPreliminary: null restRoutesUserfeedback: null rootredirect: null rt2Route: null staticRoutesInfostore: null staticRoutesRealtime: null staticRoutesServlet: null staticRoutesWebservices: null trailslash: null wopiServerRoute: null openxchangeBootstrap: additional: null serviceAccount: null openxchangeDovecot: common: null persistence: null pod: null service: null serviceAccount: null openxchangeEnterpriseContactPicker: appsuiteCoreMw: null appsuiteCoreMwPod: null appsuiteCoreMwServiceAccount: null openxchangeNextcloudIntegrationUi: pod: null openxchangePostfix: pod: null service: null openxchangePublicSectorUi: pod: null servicesExternalClamavDistributed: clamdCommon: null clamdPod: null clamdService: null clamdServiceAccount: null freshclamCommon: null freshclamService: null freshclamServiceAccount: null milterCommon: null milterPod: null milterService: null milterServiceAccount: null persistence: null servicesExternalClamavSimple: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalDkimpy: additional: null pod: null service: null serviceAccount: null servicesExternalMariadb: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalMemcached: common: null pod: null service: null serviceAccount: null servicesExternalMinio: apiIngress: null common: null ingress: null persistence: null pod: null provisioningPod: null serviceAccount: null serviceHeadless: null serviceService: null servicesExternalPostfix: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalPostgresql: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalRedis: common: null masterMaster: null masterPersistence: null masterPod: null masterService: null masterServiceAccount: null replicaPersistence: null replicaPod: null replicaReplica: null replicaService: null replicaServiceAccount: null secret: null xwiki: common: null ingress: null persistence: null service: null serviceAccount: null antivirus: icap: host: null port: 1344 milter: host: null port: 7357 apps: cassandra: enabled: false namespace: null certificates: enabled: true namespace: null clamavDistributed: enabled: false namespace: null clamavSimple: enabled: true namespace: null collabora: enabled: true namespace: null collaboraController: enabled: false namespace: null cryptpad: enabled: true namespace: null dkimpy: enabled: false namespace: null dovecot: enabled: true namespace: null element: enabled: true namespace: null elementAdmin: enabled: false namespace: null elementGroupsync: enabled: false namespace: null home: enabled: true namespace: null jitsi: enabled: false namespace: null mariadb: enabled: true namespace: null memcached: enabled: true namespace: null migrations: enabled: true namespace: null minio: enabled: true namespace: null nextcloud: enabled: true namespace: null notes: enabled: true namespace: null nubus: enabled: true namespace: null openproject: enabled: true namespace: null oxAppSuite: enabled: true namespace: null postfix: enabled: true namespace: null postgresql: enabled: true namespace: null redis: enabled: true namespace: null staticFiles: enabled: true namespace: null xwiki: enabled: true namespace: null cache: intercomService: host: redis-headless password: "" port: 6379 username: default nextcloud: host: redis-headless password: "" port: 6379 tls: false username: default notes: host: redis-headless password: "" port: 6379 openproject: host: memcached port: 11211 oxAppSuite: host: redis-headless password: "" port: 6379 username: default umsSelfservice: host: memcached port: 11211 certificate: issuerRef: kind: ClusterIssuer name: letsencrypt-prod selfSigned: false wildcard: "false" charts: cassandra: name: cassandra registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 12.0.4 certificates: name: opendesk-certificates registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates verify: true version: 3.1.1 clamav: name: opendesk-clamav registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav verify: true version: 4.0.6 clamavSimple: name: clamav-simple registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav verify: true version: 4.0.6 collabora: name: collabora-online registry: registry.opencode.de repository: bmi/opendesk/components/supplier/collabora/charts-mirror verify: true version: 1.1.37 collaboraController: name: cool-controller registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror verify: false version: 1.1.2 cryptpad: name: cryptpad registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/charts-mirror verify: true version: 0.0.20 dkimpy: name: opendesk-dkimpy-milter registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter verify: true version: 1.0.0 dovecot: name: dovecot registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot verify: true version: 2.0.0 element: name: opendesk-element registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 elementWellKnown: name: opendesk-well-known registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 home: name: opendesk-home registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-home verify: true version: 1.0.2 intercomService: name: intercom-service registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 2.12.0 jitsi: name: opendesk-jitsi registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi verify: true version: 3.1.0 mariadb: name: mariadb registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb verify: true version: 3.0.3 matrixNeoboardWidget: name: matrix-neoboard-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeochoiceWidget: name: matrix-neochoice-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeodatefixBot: name: matrix-neodatefix-bot registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeodatefixWidget: name: matrix-neodatefix-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixUserVerificationService: name: opendesk-matrix-user-verification-service registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 memcached: name: memcached registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 6.7.1 migrations: name: opendesk-migrations registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations verify: true version: 1.6.0 minio: name: minio registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 14.10.1 nextcloud: name: opendesk-nextcloud registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud verify: true version: 4.0.3 nextcloudManagement: name: opendesk-nextcloud-management registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud verify: true version: 4.0.3 nginx: name: nginx registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 15.9.3 nginxS3Gateway: name: nginx-s3-gateway registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway verify: true version: 1.0.1 notes: name: impress registry: registry.opencode.de repository: bmi/opendesk/components/supplier/dinum/charts/notes verify: true version: 2.0.0 nubus: name: nubus registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 1.8.0 opendeskAlerts: name: opendesk-alerts registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts verify: true version: 1.1.1 opendeskDashboards: name: opendesk-dashboards registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards verify: true version: 1.1.1 opendeskKeycloakBootstrap: name: opendesk-keycloak-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap verify: true version: 2.6.0 opendeskStaticFiles: name: opendesk-static-files registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files verify: true version: 4.0.1 openproject: name: openproject registry: registry.opencode.de repository: bmi/opendesk/components/supplier/openproject/charts-mirror verify: true version: 9.9.0 openprojectBootstrap: name: opendesk-openproject-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap verify: true version: 2.2.0 otterize: name: opendesk-otterize registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize verify: true version: 2.1.3 oxAppSuite: name: appsuite-public-sector registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror verify: false version: 2.17.164 oxAppSuiteBootstrap: name: opendesk-open-xchange-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap verify: true version: 2.1.2 oxConnector: name: ox-connector registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 0.19.0 postfix: name: postfix registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix verify: true version: 3.0.1 postgresql: name: postgresql registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql verify: true version: 2.1.2 redis: name: redis registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 18.6.1 synapse: name: opendesk-synapse registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 synapseAdmin: name: opendesk-synapse-admin registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseAdminbotWeb: name: opendesk-synapse-adminbot-web registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseCreateAccount: name: opendesk-synapse-create-account registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 synapseGroupsync: name: opendesk-synapse-groupsync registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapsePipe: name: opendesk-synapse-pipe registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseWeb: name: opendesk-synapse-web registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 xwiki: name: xwiki registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/charts-mirror verify: false version: 1.4.4 cluster: container: engine: cri-o networking: cidr: - 10.0.0.0/8 domain: cluster.local incomingCIDR: [] ingressGatewayIP: "" ipFamilies: DualStack loadBalancerStatusField: ip persistence: readWriteMany: enabled: false service: type: LoadBalancer customization: release: cassandra: {} clamav: {} clamavSimple: {} collaboraController: {} collaboraOnline: {} cryptpad: {} dovecot: {} intercomService: {} jitsi: {} mariadb: {} matrixNeoboardWidget: {} matrixNeochoiceWidget: {} matrixNeodatefixBot: {} matrixNeodatefixBotBootstrap: {} matrixNeodatefixWidget: {} matrixUserVerificationService: {} matrixUserVerificationServiceBootstrap: {} memcached: {} migrationsPost: {} migrationsPre: {} minio: {} nginxS3Gateway: {} notes: {} opendeskAlerts: {} opendeskCertificates: {} opendeskDashboards: {} opendeskDkimpyMilter: {} opendeskElement: {} opendeskHome: {} opendeskKeycloakBootstrap: {} opendeskNextcloud: {} opendeskNextcloudManagement: {} opendeskOpenprojectBootstrap: {} opendeskOpenxchangeBootstrap: {} opendeskOtterize: {} opendeskStaticFiles: {} opendeskSynapse: {} opendeskSynapseAdmin: {} opendeskSynapseAdminbotBootstrap: {} opendeskSynapseAdminbotPipe: {} opendeskSynapseAdminbotWeb: {} opendeskSynapseAuditbotBootstrap: {} opendeskSynapseAuditbotPipe: {} opendeskSynapseGroupsync: {} opendeskSynapseWeb: {} opendeskWellKnown: {} openproject: {} openxchange: {} oxConnector: {} postfix: {} postgresql: {} redis: {} ums: {} xwiki: {} databases: defaults: userConnectionLimit: 100 dovecotACL: connectionLimit: null host: cassandra name: dovecot_acl password: "" port: 9042 type: cassandra username: dovecot_acl_user dovecotDictmap: connectionLimit: null host: cassandra name: dovecot_dictmap password: "" port: 9042 type: cassandra username: dovecot_dictmap_user keycloak: connectionLimit: null host: postgresql name: keycloak password: "" port: 5432 type: postgresql username: keycloak_user keycloakExtension: connectionLimit: null host: postgresql name: keycloak_extensions password: "" port: 5432 ssl: "false" type: postgresql username: keycloak_extensions_user nextcloud: connectionLimit: null host: postgresql name: nextcloud password: "" port: 5432 type: postgresql username: nextcloud_user notes: connectionLimit: null host: postgresql name: notes password: "" port: 5432 type: postgresql username: notes_user openproject: connectionLimit: null host: postgresql name: openproject password: "" port: 5432 type: postgresql username: openproject_user oxAppSuite: connectionLimit: null host: mariadb name: configdb password: "" port: 3306 readHost: null readPassword: null readUser: null type: mariadb username: root synapse: channelBinding: prefer clientEncoding: auto connectTimeout: 10 connectionLimit: null connectionPoolMax: "5" connectionPoolMin: "3" gssencmode: prefer host: postgresql keepalives: 1 keepalivesCount: 3 keepalivesIdle: 10 keepalivesInterval: 10 name: matrix password: "" port: 5432 replication: false requireAuth: [] sslMinProtocolVersion: TLSv1.2 sslcompression: 0 sslmode: prefer type: postgresql username: matrix_user umsGuardianManagementApi: connectionLimit: null host: postgresql name: guardianmanagementapi password: "" port: 5432 type: postgresql username: guardianmanagementapi_user umsNotificationsApi: connectionLimit: null host: postgresql name: notificationsapi password: "" port: 5432 type: postgresql username: notificationsapi_user umsSelfservice: connectionLimit: 10 host: postgresql name: selfservice password: "" port: 5432 type: postgresql username: selfservice_user xwiki: connectionLimit: null host: postgresql name: xwiki password: "" port: 5432 type: postgresql username: xwiki_user debug: cleanup: deletePodsOnSuccess: true deletePodsOnSuccessTimeout: 60 keepPVCOnDelete: false keepRessourceOnDelete: true enabled: false enterpriseFeatures: collabora: autoscaling: maxReplicas: 4 minReplicas: 1 scaleDownDisabled: false targetCPUUtilizationPercentage: 99 targetMemoryUtilizationPercentage: 99 enterpriseKeys: nextcloud: subscriptionData: "" subscriptionKey: "" openproject: token: null xwiki: opendeskEnterpriseLicense: "" proApplicationslicense: "" functional: admin: portal: deploymentTimestamp: enabled: true authentication: newDeviceLoginNotification: enabled: true oidc: clientScopes: null clients: null realmSettings: accessTokenLifespan: 300 clientOfflineSessionIdleTimeout: 0 clientOfflineSessionMaxLifespan: 0 clientSessionIdleTimeout: 0 clientSessionMaxLifespan: 0 offlineSessionIdleTimeout: 2592000 offlineSessionMaxLifespan: 5184000 offlineSessionMaxLifespanEnabled: false revokeRefreshToken: false ssoSessionIdleTimeout: 14400 ssoSessionMaxLifespan: 57600 ssoFederation: enabled: false enforceFederatedLogin: false idpDetails: {} name: My upstream IdP twoFactor: groups: - foo chat: matrix: profile: allowUsersToUpdateDisplayname: true useImmutableIdentifierForLocalpart: false dataProtection: jitsiRoomHistory: enabled: true matrixPresence: enabled: false externalServices: matrix: federation: domainAllowList: [] enabled: true nubus: udmRestApi: enabled: true filestore: nextcloud: retentionObligation: trashbin: auto versions: auto quota: default: 1 sharing: external: enabled: false enforcePasswords: false expiry: activeByDefault: true defaultDays: 30 enforced: false sendPasswordMail: true internal: expiry: activeByDefault: false defaultDays: 90 enforced: false migration: oxAppSuite: enabled: false portal: enforceLogin: true linkLegalNotice: https://opendesk.eu/impressum linkPrivacyStatement: https://zendis.de/datenschutzerklaerung global: additionalMailDomains: "" domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de helmRegistry: "" hosts: adminBot: adminbot collabora: office cryptpad: pad element: chat intercomService: ics jitsi: meet keycloak: id matrixNeoBoardWidget: matrix-neoboard-widget matrixNeoChoiceWidget: matrix-neochoice-widget matrixNeoDateFixBot: matrix-neodatefix-bot matrixNeoDateFixWidget: matrix-neodatefix-widget minioApi: objectstore minioConsole: objectstore-ui nextcloud: files notes: notes nubus: portal openproject: projects openxchange: webmail static: static synapse: matrix synapseAdmin: synapse-admin synapseFederation: matrix-federation whiteboard: whiteboard xwiki: wiki imagePullPolicy: IfNotPresent imagePullSecrets: [] imageRegistry: "" mailDomain: "" matrixDomain: "" systemInformation: releaseVersion: v1.3.2 images: bitnamiOSShell: registry: registry-1.docker.io repository: bitnami/os-shell tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 cassandra: registry: registry-1.docker.io repository: bitnami/cassandra tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea cassandraExporter: registry: registry-1.docker.io repository: bitnami/cassandra-exporter tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051 clamd: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f collabora: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f collaboraController: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c cryptpad: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17 dkimpy: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/dkimpy-milter tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f dovecot: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc dovecotBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 element: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1 elementAdminBot: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812 elementGroupsync: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846 elementHaProxy: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61 elementPipe: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4 elementSynapseAdmin: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350 elementSyncAdmins: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097 freshclam: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f icap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/clamav-icap tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a intercom: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1 jibri: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9 jicofo: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50 jigasi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f jitsi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306 jitsiKeycloakAdapter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697 jitsiPatchJVB: registry: registry-1.docker.io repository: bitnami/kubectl tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162 jvb: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022 mariadb: registry: registry-1.docker.io repository: library/mariadb tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f matrixNeoBoardWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5 matrixNeoChoiceWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb matrixNeoDateFixBot: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96 matrixNeoDateFixWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b matrixUserVerificationService: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008 memcached: registry: registry-1.docker.io repository: bitnami/memcached tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d migrations: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-migrations tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7 milter: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f minio: registry: registry-1.docker.io repository: bitnami/minio tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 nextcloud: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4 nextcloudExporter: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0 nginxS3Gateway: registry: registry-1.docker.io repository: nginxinc/nginx-s3-gateway tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4 notesBackend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-notes tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef notesFrontend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-notes tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887 notesYProvider: registry: registry-1.docker.io repository: lasuite/impress-y-provider tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1 nubusDataLoader: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb nubusGuardianAuthorizationApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5 nubusGuardianManagementApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 nubusGuardianManagementUi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf nubusGuardianProvisioning: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62 nubusKeycloak: registry: artifacts.software-univention.de repository: nubus/keycloak tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65 nubusKeycloakBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa nubusKeycloakExtensionHandler: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c nubusKeycloakExtensionProxy: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056 nubusLdapNotifier: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7 nubusLdapServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984 nubusLdapServerDhInitContainer: registry: registry-1.docker.io repository: natsio/nats-box tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 nubusLdapServerLeaderElector: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c nubusNats: registry: registry-1.docker.io repository: library/nats tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7 nubusNatsBox: registry: registry-1.docker.io repository: natsio/nats-box tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 nubusNatsReloader: registry: registry-1.docker.io repository: natsio/nats-server-config-reloader tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99 nubusNotificationsApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1 nubusOpenPolicyAgent: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4 nubusOpendeskExtension: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b nubusOpendeskExtensionA2gMapper: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d nubusOxExtension: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 nubusPortalConsumer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc nubusPortalExtension: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900 nubusPortalFrontend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b nubusPortalServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27 nubusProvisioningDispatcher: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd nubusProvisioningEventsAndConsumerApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a nubusProvisioningPrefill: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788 nubusProvisioningUdmListener: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7 nubusProvisioningUdmTransformer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e nubusSelfServiceConsumer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0 nubusUdmRestApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2 nubusUmcGateway: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1 nubusUmcServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d nubusUmcServerProxy: registry: registry-1.docker.io repository: library/traefik tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e nubusWaitForDependency: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8 opendeskKeycloakBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 opendeskStaticFiles: registry: registry-1.docker.io repository: library/nginx tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 openproject: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 openprojectBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d openprojectDbInit: registry: registry-1.docker.io repository: library/postgres tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0 openxchangeBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803 openxchangeCoreGuidedtours: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a openxchangeCoreMW: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 openxchangeCoreUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f openxchangeCoreUIMiddleware: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 openxchangeCoreUserGuide: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 openxchangeDocumentConverter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c openxchangeGotenberg: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172 openxchangeGuardUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b openxchangeImageConverter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 openxchangeNextcloudIntegrationUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e openxchangePublicSectorUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 oxConnector: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e postfix: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/postfix tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d postfixBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 postgresql: registry: registry-1.docker.io repository: library/postgres tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b prosody: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783 redis: registry: registry-1.docker.io repository: bitnami/redis tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 synapse: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/synapse tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc synapseCreateUser: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619 synapseGuestModule: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea synapseWeb: registry: registry-1.docker.io repository: rapidfort/haproxy-official tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c wellKnown: registry: registry-1.docker.io repository: library/nginx tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 xwikiMariadb: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf xwikiPostgres: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 ingress: enabled: true ingressClassName: nginx parameters: bodySize: collabora: 100M element: 100M nextcloud: 100M openproject: 100M oxAppSuite: 100M xwiki: 100M bodyTimeout: collabora: 600 element: 60 nextcloud: 600 openproject: 60 oxAppSuite: 60 xwiki: 60 tls: enabled: true secretName: opendesk-certificates-tls ldap: baseDn: dc=swp-ldap,dc=internal host: ums-ldap-server notifierHost: ums-ldap-notifier monitoring: grafana: dashboards: annotations: null enabled: false labels: grafana_dashboard: "1" prometheus: podMonitors: enabled: false labels: release: kube-prometheus-stack prometheusRules: annotations: {} enabled: false labels: release: kube-prometheus-stack serviceMonitors: enabled: false labels: release: kube-prometheus-stack objectstores: dovecot: bucket: dovecot endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: dovecot_user migrations: bucket: migrations endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: migration_user nextcloud: bucket: nextcloud endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: nextcloud_user notes: bucket: notes endpoint: "" port: 443 secretKey: "" username: notes_user nubus: bucket: ums endpoint: "" region: eu-west-1 secretKey: "" username: ums_user openproject: bucket: openproject directUploads: true enableSignatureV4Streaming: true endpoint: "" pathStyle: true region: eu-west-1 secretKey: "" useIamProfile: false username: openproject_user persistence: storageClassNames: RWO: "" RWX: "" storages: cassandra: commitLogsize: 256Mi size: 1Gi storageClassName: null clamav: size: 1Gi storageClassName: null dovecot: size: 1Gi storageClassName: null mariadb: size: 1Gi storageClassName: null matrixNeoDateFixBot: size: 1Gi storageClassName: null minio: size: 10Gi storageClassName: null nubusLdapServerData: size: 1Gi storageClassName: null nubusPortalConsumer: size: 1Gi storageClassName: null nubusProvisioningNats: size: 1Gi storageClassName: null oxConnector: size: 1Gi storageClassName: null postfix: size: 1Gi storageClassName: null postgresql: size: 1Gi storageClassName: null prosody: size: 1Gi storageClassName: null redis: size: 1Gi storageClassName: null synapse: size: 1Gi storageClassName: null xwiki: size: 1Gi storageClassName: null platform: realm: opendesk replicas: cassandra: 1 clamav: 1 clamd: 1 collabora: 1 collaboraController: 1 cryptpad: 1 dkimpy: 1 dovecot: 1 element: 1 freshclam: 1 icap: 1 intercomService: 1 jibri: 1 jicofo: 1 jigasi: 1 jitsi: 1 jitsiKeycloakAdapter: 1 jvb: 1 keycloak: 1 mariadb: 1 matrixNeoBoardWidget: 1 matrixNeoChoiceWidget: 1 matrixNeoDateFixBot: 1 matrixNeoDateFixWidget: 1 matrixUserVerificationService: 1 memcached: 1 milter: 1 minio: 1 nextcloud: 1 nextcloudExporter: 1 nginxS3Gateway: 1 notesBackend: 1 notesFrontend: 1 notesYProvider: 1 opendeskStaticFiles: 1 openprojectWeb: 1 openprojectWorker: 1 openxchangeCoreDocumentConverter: 1 openxchangeCoreGuidedtours: 1 openxchangeCoreImageConverter: 1 openxchangeCoreMW: 1 openxchangeCoreUI: 1 openxchangeCoreUIMiddleware: 1 openxchangeCoreUserGuide: 1 openxchangeGotenberg: 1 openxchangeGuardUI: 1 openxchangeNextcloudIntegrationUI: 1 openxchangePluginsUI: 1 openxchangePublicSectorUI: 1 oxConnector: 1 postfix: 1 postgres: 1 redis: 1 synapse: 1 synapseWeb: 1 umsGuardianAuthorizationApi: 1 umsGuardianManagementApi: 1 umsGuardianManagementUi: 1 umsGuardianOpenPolicyAgent: 1 umsKeycloakExtensionsHandler: 1 umsKeycloakExtensionsProxy: 1 umsLdapNotifier: 1 umsLdapServerPrimary: 2 umsLdapServerProxy: 2 umsLdapServerSecondary: 2 umsNotificationsApi: 1 umsPortalConsumer: 1 umsPortalFrontend: 1 umsPortalServer: 1 umsProvisioningApi: 1 umsProvisioningDispatcher: 1 umsProvisioningNats: 1 umsProvisioningPrefill: 1 umsProvisioningUdmTransformer: 1 umsSelfserviceConsumer: 1 umsUdmListener: 1 umsUdmRestApi: 1 umsUmcGateway: 1 umsUmcServer: 1 umsUmcServerProxy: 1 wellKnown: 1 xwiki: 1 repositories: clamav: auth: {} customURLs: - scheme: https url: ftp.swin.edu.au/sanesecurity/badmacro.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/blurl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb - scheme: https url: ftp.swin.edu.au/sanesecurity/junk.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/lott.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb - scheme: https url: ftp.swin.edu.au/sanesecurity/phish.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/phishtank.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/porcupine.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/rogue.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/scam.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/shelter.ldb - scheme: https url: ftp.swin.edu.au/sanesecurity/spamattach.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/spamimg.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/spear.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/spearl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb - scheme: https url: urlhaus.abuse.ch/downloads/urlhaus.ndb mirror: scheme: https url: clamavdb.c3sl.ufpr.br helm: registryOpencodeDe: "" registryOpencodeDeEnterprise: registry.opencode.de image: dockerHub: "" registryOpencodeDe: "" registryOpencodeDeEnterprise: "" resources: cassandra: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1Gi clamd: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1.5Gi collabora: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 512Mi collaboraController: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi cryptpad: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi dkimpy: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi dovecot: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi element: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi freshclam: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 96Mi icap: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi intercomService: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 64Mi jibri: limits: cpu: 99 memory: 3Gi requests: cpu: 0.1 memory: 384Mi jicofo: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 256Mi jigasi: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 256Mi jitsi: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 32Mi jitsiKeycloakAdapter: limits: cpu: 99 memory: 128Mi requests: cpu: 0.01 memory: 48Mi jvb: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 384Mi mariadb: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 384Mi matrixNeoBoardWidget: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 48Mi matrixNeoChoiceWidget: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi matrixNeoDateFixBot: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 128Mi matrixNeoDateFixWidget: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi matrixUserVerificationService: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi memcached: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi milter: limits: cpu: 99 memory: 96Mi requests: cpu: 0.1 memory: 16Mi minio: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 256Mi nextcloud: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi nextcloudCron: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi nextcloudExporter: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi nginxS3Gateway: limits: cpu: 99 memory: 64Mi requests: cpu: 100m memory: 16Mi notesBackend: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 512Mi notesFrontend: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi notesYProvider: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi opendeskKeycloakBootstrap: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi opendeskStaticFiles: limits: cpu: 99 memory: 64Mi requests: cpu: 0.01 memory: 16Mi openproject: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 768Mi openprojectAppInit: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectDbInit: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectSeederJob: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectWorkers: limits: cpu: 99 memory: 4Gi requests: cpu: 0.25 memory: 512Mi openxchangeCoreDocumentConverter: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 1.25Gi openxchangeCoreGuidedtours: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeCoreImageConverter: limits: cpu: 99 memory: 2Gi requests: cpu: 0.5 memory: 1.25Gi openxchangeCoreMW: limits: cpu: 99 memory: 8Gi requests: cpu: 1 memory: 1.25Gi openxchangeCoreUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeCoreUIMiddleware: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi openxchangeCoreUIMiddlewareUpdater: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi openxchangeCoreUserGuide: limits: cpu: 99 memory: 96Mi requests: cpu: 0.02 memory: 32Mi openxchangeGotenberg: limits: cpu: 99 memory: 96Mi requests: cpu: 0.05 memory: 32Mi openxchangeGuardUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeNextcloudIntegrationUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangePluginsUI: limits: cpu: 99 memory: 256Mi requests: cpu: 0.05 memory: 32Mi openxchangePublicSectorUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi oxConnector: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 64Mi postfix: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi postgresql: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi prosody: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 32Mi redis: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi synapse: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 256Mi synapseWeb: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 64Mi umsGuardianAuthorizationApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsGuardianManagementApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsGuardianManagementUi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsKeycloak: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi umsKeycloakBootstrap: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi umsKeycloakExtensionHandler: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi umsKeycloakExtensionProxy: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi umsLdapNotifier: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsLdapServer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsNotificationsApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsOpenPolicyAgent: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalConsumer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalConsumerDependencies: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalFrontend: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalServer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 100Mi umsProvisioningDispatcher: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningNats: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 128Mi umsProvisioningPrefill: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningRegisterConsumers: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi umsProvisioningUdmTransformer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi umsSelfserviceConsumer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsStackDataUms: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmListener: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmRestApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmRestApiInit: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUmcGateway: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUmcServer: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi wellKnown: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi xwiki: limits: cpu: 99 memory: 8Gi requests: cpu: 0.1 memory: 1.5Gi sample: withTemplating: "" withoutTemplating: my_value seLinuxOptions: cassandra: null clamav: null clamavSimple: null clamd: null collabora: null collaboraController: null cryptpad: null dkimpy: null dovecot: null element: null freshclam: null icap: null intercom: null jicofo: null jigasi: null jitsi: null jitsiKeycloakAdapter: null jitsiPatchJVB: null jvb: null mariadb: null matrixNeoBoardWidget: null matrixNeoChoiceWidget: null matrixNeoDateFixBot: null matrixNeoDateFixWidget: null matrixUserVerificationService: null memcached: null migrations: null milter: null minio: null nextcloud: null nextcloudExporter: null nextcloudManagement: null notesBackend: null notesFrontend: null notesYProvider: null opendeskKeycloakBootstrap: null opendeskStaticFiles: null openproject: null openprojectBootstrap: null openprojectDbInit: null openxchangeBootstrap: null openxchangeCoreGuidedtours: null openxchangeCoreMW: null openxchangeCoreUI: null openxchangeCoreUIMiddleware: null openxchangeCoreUserGuide: null openxchangeDocumentConverter: null openxchangeGotenberg: null openxchangeGuardUI: null openxchangeImageConverter: null openxchangeNextcloudIntegrationUI: null openxchangePluginsUI: null openxchangePublicSectorUI: null oxConnector: null postfix: null postgresql: null prosody: null redis: null synapse: null synapseCreateUser: null synapseGuestModule: null synapseWeb: null umsGuardianAuthorizationApi: null umsGuardianManagementApi: null umsGuardianManagementUi: null umsGuardianOpenPolicyAgent: null umsKeycloak: null umsKeycloakBootstrap: null umsKeycloakExtensionHandler: null umsKeycloakExtensionProxy: null umsLdapNotifier: null umsLdapServer: null umsNotificationsApi: null umsPortalConsumer: null umsPortalFrontend: null umsPortalServer: null umsProvisioning: null umsProvisioningNats: null umsSelfserviceConsumer: null umsStackDataUms: null umsUdmListener: null umsUdmRestApi: null umsUmcGateway: null umsUmcServer: null wellKnown: null xwiki: null secrets: cassandra: dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86 dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6 rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a centralnavigation: apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52 certificates: password: d4434074a779300dbbef2c812c66fbba163e3818 collabora: adminPassword: 1f18028954368652aa70c5498a52f194e721b145 dovecot: doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9 intercom: secret: 3eb73e36131cd6a817564c2144363875cf63a490 synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f jitsi: jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4 jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab keycloak: adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db clientSecret: as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45 dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f intercom: d42f6afee33e28f01222383c86e8741b98e14924 jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73 matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04 ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87 openproject: 3621e456b58b341fe12689612e0ca7820974d274 xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab mariadb: nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb matrixAdminBot: backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4 synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f matrixAuditBot: backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a password: 76fd3d48911fb1e18c6e477c922339279268debd synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31 matrixGroupsync: synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164 matrixNeoDateFixBot: password: f14e2756afd0fba205bd037f1d2363e7cedc8f89 matrixUserVerificationService: password: 3187b7b18610762c770a46421965e3a7e6ce93f7 minio: dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174 migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8 nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902 openprojectUser: 200f449601dec2cd474d0695f4f802493413f322 rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544 nats: natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5 nextcloud: adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65 metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9 notes: collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a nubus: guardian: udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5 ldapSearch: dovecot: 40290e376095d33c0c650723efa007abec1ee3fd element: 96380258a941863a5f9ecf74f3f88f1b563cae35 keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0 nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f ox: 57356bf92e475164a8c4522dfd8453bb162094d4 xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284 ldapSecret: b63d4de0d8766a932cad776066f76211906f8967 masterpassword: OpenDeskTest portalConsumer: provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879 provisioning: api: adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521 natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10 udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93 dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201 prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252 selfserviceConsumer: provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0 systemAccounts: administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411 sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6 openproject: adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239 apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb oxAppSuite: adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0 hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8 jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294 migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA= oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q= sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521 synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d oxConnector: provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2 postfix: opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f postgresql: keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0 keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e matrixUser: 5cd0a266029154912dd660f748137982a924e6f5 nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8 postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0 umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652 umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104 xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28 redis: password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e synapse: registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5 whiteboard: apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4 xwiki: superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551 security: clusterPostfix: enabled: false namespace: "" ingressController: namespace: ingress-nginx podSelector: matchLabels: app.kubernetes.io/name: ingress-nginx otterizeIntents: enabled: false service: type: dovecot: null jitsiVideoBridge: null postfix: null sip: jigasi: enabled: false password: null port: "5060" server: "" transport: TCP uri: "" smtp: dkim: key: secret: key: "" name: "" value: "" selector: rsa useED25519: false host: "" localpartNoReply: no-reply password: "" port: 587 username: "" technical: collabora: numPrespawnChildren: 4 turn: credentials: "" server: host: "" port: "3478" tls: host: "" port: "5349" transport: udp ... --- # Source: opendesk-migrations/templates/role.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "Role" metadata: name: opendesk-migrations-pre labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm rules: # # All Migrations: Allow self management of configmap # - apiGroups: [""] resources: ["configmaps"] verbs: ["create"] - apiGroups: [""] resources: ["configmaps"] resourceNames: ["migrations-status"] verbs: ["get", "patch"] # # run_4.py # # Delete StatefulSet of Nubus Portal Consumer - apiGroups: ["apps"] resources: ["statefulsets"] resourceNames: ["ums-portal-consumer"] verbs: ["delete"] # Delete PVC of Nubus Portal Consumer to allow running as non-root - apiGroups: [""] resources: ["persistentvolumeclaims"] resourceNames: ["group-membership-cache-ums-portal-consumer-0"] verbs: ["delete"] # Execute slacpcat in LDAP Pod - apiGroups: [""] resources: ["pods/exec"] resourceNames: ["ums-provisioning-nats-0"] verbs: ["get", "create"] # Restart of Deployments - apiGroups: ["apps"] resources: ["deployments"] resourceNames: ["ums-provisioning-udm-transformer"] verbs: ["update", "patch"] # Restart of StatefulSets - apiGroups: ["apps"] resources: ["statefulsets"] resourceNames: ["ums-provisioning-udm-listener"] verbs: ["update", "patch"] # Delete the Ingress - apiGroups: ["networking.k8s.io"] resources: ["ingresses"] resourceNames: ["ums-minio-rewrites"] verbs: ["delete"] ... --- # Source: opendesk-migrations/templates/rolebinding.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "RoleBinding" metadata: name: opendesk-migrations-pre labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm roleRef: apiGroup: "rbac.authorization.k8s.io" kind: "Role" name: opendesk-migrations-pre subjects: - kind: "ServiceAccount" name: opendesk-migrations-pre ... --- # Source: opendesk-migrations/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-migrations-pre-1" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation spec: ttlSecondsAfterFinished: 60 template: metadata: annotations: labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-pre app.kubernetes.io/managed-by: Helm spec: restartPolicy: "Never" securityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch serviceAccountName: opendesk-migrations-pre containers: - name: "opendesk-migrations" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7" imagePullPolicy: IfNotPresent command: - "/app/odmigs.py" volumeMounts: - name: "environmentdetails-volume" mountPath: "/app/etc/" readOnly: true resources: limits: memory: 256Mi requests: cpu: 100m memory: 128Mi env: - name: "MIGRATIONS_LOGLEVEL" value: "INFO" - name: "MIGRATIONS_CLEANUP" value: "false" - name: "MIGRATIONS_STAGE" value: "PRE" - name: "MIGRATIONS_RUN_ID" value: "4" - name: "MIGRATIONS_NAMESPACE" value: "yschmidt-opendesk-argo" - name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE" value: "true" volumes: - name: "environmentdetails-volume" secret: secretName: "opendesk-migrations-pre-environmentdetails" ... --- # Source: opendesk-home/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-home" labels: app.kubernetes.io/name: opendesk-home helm.sh/chart: opendesk-home-1.0.2 app.kubernetes.io/instance: opendesk-home app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/server-snippet: | location ~* "^/$" { return 302 https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; } nginx.org/server-snippets: | location ~* "^/$" { return 302 https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; } haproxy.org/request-redirect: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" haproxy-ingress.github.io/redirect-to: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" spec: ingressClassName: "nginx" tls: - hosts: - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ... --- # Source: opendesk-certificates/templates/certificate.yaml apiVersion: "cert-manager.io/v1" kind: "Certificate" metadata: name: "opendesk-certificates" annotations: "helm.sh/resource-policy": "keep" labels: app.kubernetes.io/name: opendesk-certificates helm.sh/chart: opendesk-certificates-3.1.1 app.kubernetes.io/instance: opendesk-certificates app.kubernetes.io/managed-by: Helm spec: dnsNames: - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "objectstore-ui.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "whiteboard.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" issuerRef: kind: "ClusterIssuer" name: "letsencrypt-prod" ... --- # Source: opendesk-static-files/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: opendesk-static-files namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-element-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0/////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//tki//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/9Wmsv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/1aay///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP/VprL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2WM//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9q8D/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//9q8D//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//9ucv//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/7Ncc//Ol6b/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7pqgP/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+eL03/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pT5a//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5cgQP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/ctL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/q0tj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////58wTv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/58wTv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////9Wmsv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////+PDy/8iJmv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8F6jf/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/1qez/8iJmv+zXHT/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/s1x0/8iJmv/Wp7P/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-jitsi-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: b3ea2c80d902061a870360ef1c69dead0b0abff7.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-keycloak-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= f26f33840612e492ead45fc5e75896de016f48b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjkzLjI1IDIxNC4wMiI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEyNi4xNCwxNDAuMzJ2Mi4xM2MwLDguOTktNy4zMSwxNi4zLTE2LjMsMTYuM2gtMzguMjZjLTguOTksMC0xNi4zLTcuMzEtMTYuMy0xNi4zdi0zOC4yNmMwLTguOTksNy4zMS0xNi4zLDE2LjMtMTYuM2gyLjEzdjUyLjQ0aDUyLjQ0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI2Ljg1LDEyNy41NmgtNDAuMzl2LTQ0LjY1YzAtMTUuMjQsMTIuNC0yNy42NCwyNy42NC0yNy42NGgxMi43NmMxNy41OCwwLDMxLjg5LDE0LjMxLDMxLjg5LDMxLjg5djguNWMwLDE3LjU4LTE0LjMxLDMxLjg5LTMxLjg5LDMxLjg5Wk0xMDQuODgsMTA5LjEzaDIxLjk3YzcuNDIsMCwxMy40Ni02LjA0LDEzLjQ2LTEzLjQ2di04LjVjMC03LjQyLTYuMDQtMTMuNDYtMTMuNDYtMTMuNDZoLTEyLjc2Yy01LjA4LDAtOS4yMSw0LjEzLTkuMjEsOS4yMXYyNi4yMloiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBkPSJNMjEwLjgyLDkwLjc2YzE0Ljg1LDAsMjQuMzQsMTAuOSwyNC4zNCwyNC4yNXMtOS40OSwyNC4yNS0yNC4zNCwyNC4yNS0yNC40NC0xMC45LTI0LjQ0LTI0LjI1LDkuNDktMjQuMjUsMjQuNDQtMjQuMjVaTTIxMC44MiwxMzMuMzRjMTEuMzcsMCwxNy4zOS04LjQ2LDE3LjM5LTE4LjMzcy02LjAyLTE4LjMzLTE3LjM5LTE4LjMzLTE3LjQ4LDguNDYtMTcuNDgsMTguMzMsNi4wMSwxOC4zMywxNy40OCwxOC4zM1oiLz4KICAgIDxwYXRoIGQ9Ik0yNDQuMTksOTEuN2g2Ljk2djExLjg0YzMuMjktNy44LDEwLjI1LTEyLjc4LDIwLjQtMTIuNzgsMTMuMDcsMCwyMS45LDkuODcsMjEuOSwyNC4zNHMtOC44MywyNC4xNi0yMS45LDI0LjE2Yy0xMC4zNCwwLTE3LjItNS4xNy0yMC40LTEyLjc4djI4Ljk1aC02Ljk2di02My43M1pNMjY5LjM4LDEzMy4zNGM5LjQsMCwxNy4xMS01LjgzLDE3LjExLTE4LjI0cy03LjcxLTE4LjQyLTE3LjExLTE4LjQyLTE3Ljk1LDYuMTEtMTcuOTUsMTguNDIsOC42NSwxOC4yNCwxNy45NSwxOC4yNFoiLz4KICAgIDxwYXRoIGQ9Ik0zMjIuOTYsOTAuNzZjMTMuMzUsMCwyMi4yOCw4LjM3LDIyLjI4LDIyLjY1djIuODJoLTM3LjVjLjI4LDkuNzgsNS4yNiwxNy4yOSwxNS42LDE3LjI5LDguNTUsMCwxMy41NC00LjUxLDE1LjIzLTExLjQ3aDYuODZjLTEuOTcsOC4yNy03LjYxLDE3LjItMjEuOSwxNy4yLTE1LjEzLDAtMjIuNDYtMTEuMjgtMjIuNDYtMjQuOTEsMC0xNS4wNCw4Ljc0LTIzLjU5LDIxLjktMjMuNTlaTTMzOC4zNywxMTAuNzhjLS42Ni05LjEyLTYuNzctMTQuMjktMTUuNTEtMTQuMjktOC4xOCwwLTE0LjI5LDUuMjYtMTUuMDQsMTQuMjloMzAuNTVaIi8+CiAgICA8cGF0aCBkPSJNMzU1LjAxLDkxLjdoNi45NnYxMi45N2MyLjU0LTguNjUsOS4xMi0xMy45MSwxOS4zNi0xMy45MXMxNi43Myw2Ljc3LDE2LjczLDE4Ljk5djI4LjU3aC03LjA1di0yOC4wMWMwLTkuNjgtMy43Ni0xMy42My0xMi4wMy0xMy42My0xMC41MywwLTE3LjAxLDguODQtMTcuMDEsMjEuMzR2MjAuM2gtNi45NnYtNDYuNjJaIi8+CiAgICA8cGF0aCBkPSJNNDA5LjgxLDcyLjA1aDI0LjM1YzYuODksMCwxMi45Ny44NSwxOC4yNCwyLjU0LDUuMjYsMS42OSw5LjU3LDQuOTgsMTIuOTIsOS44NywzLjM1LDQuODksNS4wMywxMS43OCw1LjAzLDIwLjY4cy0xLjY4LDE1Ljg5LTUuMDMsMjAuNzdjLTMuMzUsNC44OS03LjY2LDguMTgtMTIuOTIsOS44Ny01LjI3LDEuNjktMTEuMzQsMi41NC0xOC4yNCwyLjU0aC0yNC4zNXYtNjYuMjdaTTQzNC4xNiwxMjUuMDdjNC43NiwwLDguNTctLjM4LDExLjQyLTEuMTNzNS4xNy0yLjU1LDYuOTYtNS40MWMxLjc5LTIuODUsMi42OC03LjMyLDIuNjgtMTMuMzlzLS45MS0xMC40Ni0yLjcyLTEzLjM1Yy0xLjgyLTIuODgtNC4xNC00LjctNi45Ni01LjQ1cy02LjYxLTEuMTMtMTEuMzctMS4xM2gtOS4zMXYzOS44Nmg5LjMxWiIvPgogICAgPHBhdGggZD0iTTQ4MC4xNywxMDEuMzNjMi4xLTMuNjcsNS4wMS02LjQ3LDguNzQtOC40MXM4LjAxLTIuOTEsMTIuODMtMi45MWM3LjksMCwxNC4wNywyLjEsMTguNTIsNi4zLDQuNDUsNC4yLDYuNjcsMTAsNi42NywxNy4zOXYzLjk1aC0zNS41M2MuMjUsMy4zOCwxLjMyLDYuMDMsMy4yLDcuOTQsMS44OCwxLjkxLDQuNDUsMi44Nyw3LjcxLDIuODcsMi44MiwwLDUuMTUtLjU5LDctMS43OSwxLjg1LTEuMTksMy4wMi0yLjg4LDMuNTMtNS4wOGgxNC4xOWMtLjc1LDUuMjYtMy4yOCw5LjUzLTcuNTcsMTIuNzgtNC4yOSwzLjI2LTkuOTgsNC44OS0xNy4wNiw0Ljg5LTUuMiwwLTkuNzEtMS4wNS0xMy41NC0zLjE1LTMuODItMi4xLTYuNzUtNS4wMy04Ljc5LTguNzktMi4wNC0zLjc2LTMuMDUtOC4wOC0zLjA1LTEyLjk3czEuMDUtOS4zNSwzLjE1LTEzLjAyWk01MTMuMDIsMTA5LjkzYy0uMjUtMy4wMS0xLjM2LTUuMzMtMy4zNC02Ljk2LTEuOTctMS42My00LjUzLTIuNDQtNy42Ni0yLjQ0cy01LjU2LjgyLTcuNDcsMi40NGMtMS45MSwxLjYzLTIuOTksMy45NS0zLjI0LDYuOTZoMjEuNzFaIi8+CiAgICA8cGF0aCBkPSJNNTM5LjYyLDEzNC42NWMtNC4xNC0zLjA3LTYuMjEtNy41OC02LjIxLTEzLjU0aDE0LjI5YzAsMi43Ljg1LDQuNjksMi41NCw1Ljk3LDEuNjksMS4yOSw0LjI5LDEuOTMsNy44LDEuOTMsMi41NywwLDQuNDMtLjMzLDUuNTktLjk5LDEuMTYtLjY2LDEuNzQtMS43MSwxLjc0LTMuMTUsMC0xLS4zNC0xLjgyLTEuMDMtMi40NC0uNjktLjYzLTEuNzktMS4xNi0zLjI5LTEuNmwtMTQuNDgtMy45NWMtMy4yLS44MS01Ljk1LTIuMjctOC4yNy00LjM3LTIuMzItMi4xLTMuNDgtNS0zLjQ4LTguNywwLTQuNDUsMS44My03Ljg2LDUuNS0xMC4yNSwzLjY3LTIuMzgsOC43OS0zLjU3LDE1LjM3LTMuNTcsNy4yNywwLDEyLjk0LDEuNDYsMTcuMDEsNC4zN3M2LjExLDcuMTMsNi4xMSwxMi42NGgtMTQuMjljMC00LjU3LTIuOTEtNi44Ni04Ljc0LTYuODYtMi4wNywwLTMuNy4zNS00Ljg5LDEuMDMtMS4xOS42OS0xLjc5LDEuNi0xLjc5LDIuNzMsMCwxLjk0LDEuNzIsMy4zNSw1LjE3LDQuMjNsMTEuMDksMi43M2M0LjMyLDEuMDcsNy43OSwyLjcxLDEwLjM5LDQuOTQsMi42LDIuMjIsMy45LDUuMzQsMy45LDkuMzUsMCw0LjU4LTEuODMsOC4wNy01LjUsMTAuNDgtMy42NywyLjQxLTkuMSwzLjYyLTE2LjMxLDMuNjItOC4wMiwwLTE0LjEtMS41NC0xOC4yNC00LjYxWiIvPgogICAgPHBhdGggZD0iTTU4Ny41Niw2OS4yM2gxNC4yOXY0MC4wNGwxOC44OS0xOC4zM2gxNy40OGwtMjMuNTksMjMuMDMsMjMuNSwyNC4zNWgtMTcuMzlsLTE4Ljg5LTE5LjkzdjE5LjkzaC0xNC4yOXYtNjkuMDlaIi8+CiAgPC9nPgo8L3N2Zz4= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-nextcloud-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: 17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64: iVBORw0KGgoAAAANSUhEUgAAAG8AAABvCAYAAADixZ5gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASWSURBVHgB7Z0/aBtXHMe/J3dKIHUGd2kDlw4dQocMGQIdfFoypENToqFQiOV2KrRQD10b1K1DccdCh8aTKfXglHQoLfgCDU0pbg0FN2TJETvx4CH/SCCE6PL7SWchOZIl+3RP99N9P/DzO8snC+mj3+/de+908pCSOI4npQkktPVB+hElseZ53n2kwMMBEGGBNO9JnAOFpSGSCCUWRGSIfbIveSKtKs0MmplGhkskUROJlwa9w0Dykky7CEpzQSRRFolRvx1L/XYQcSptBRTnCl/iVvK670nPzEsOROYlqiCjYllitteBTVd5iTjNtpMgo2YNzTL6ksBeZfMHUFxeUA/z3f7wkryk1p4DyRPVbn1gR9mUHXxpboHklXL7eHB35q2A5JmO7GvJSwbgPkieCRJPDVplU27UcumD5J1QSmdZNxqZl8yg+CAWCBJfrbI5A2KJxmigUTZZMs0RSek87iWzKfdArHFUyyZnUmwSqDwfxCKTlGcXv+96HskvlGcYyjPMKxgBjx48xeofm9jaeNTY3g/Bu2/irbenQBzL27r9ELVPf8fqtU0clH/kvt/9fB7EYdm8svg/PgwWU4lTVq/dSf0/xgUn8m7+ty0Z99u+S2Qvvv/6LxBH8r648AuGCbOvSebyriyu4670dcOG2edE3g1kAbPPgbytjeFn3Q5Fzz7Tg/SiZ5/5GZYiZ595eUXOvrGY2yxq9o2FvKJmX+Zzm5f/rYJkA5eEDEN5hqE8w1CeYSjPMJRnmMyHCtubMcaZqTcOdBGpoZC5vK8+eI7tjfEVePiIh1NnPFTmJkQknMKymZLHD2NcXarjs3eeYWn+OVxCeUNk6du6U4GUN2RU4Pr1OlxAeRmwNE95Zlm/Hjs5yqa8jFj/k/LIHlCeYSjPMJRnGMozDOUZhvIMQ3mGoTzDUJ5hKM8wlGcYyjMM5RmG8gxDeYahPMNQnmEozzCUZxjKMwzlGYbyDEN5hqE8w2Qub+p1FJKpY8iczOWdOF285D58xM3zzvwRzn5cajyZInHqjJs3bOaPckjEnZ+bQFHQz6hX5sZEnnL2o5LE+AtUcV/+OOHsIgPOvhTjwsUSDr0KXP2pPpZXiDhx2sMn30w4vTqE0280qXxewnTFa3z48O9f63iS3eWnnaBdwmvHvEYfp/Jc4/y7hPSdqQKnKxxipoWvoGEozzCUZxjKMwzlGYbyDEN5hqE8w6i8CMQikcq7D2KRyIvjeFI27oFY42jJ8zzNvAjEEpF62zlguQxiiVB/7MhbBrHEgv5oLUJJ37ciTQCSd7RkHteN9nHeAogFajsbHcu/zL7c08o6ZfcMSw0kz5Tbf+mQJ1ZDUGBeqYmfqP2GrmfNSPm8JM0MSF5YFnHv776xlzydddH+7yTIqFmTKCeTKR10XVVIdtT6yvHfaNERQFdxSs8lIb1DkqrsA0eD9nHVXuKUgc4UlTLqo1lGfZCsCdEUF/bbcaDFWD3KScYXs+AkdlaEErPyOpcHEacc6BxtycRAmqrENJiNaYjQXBRYHlRYO6lPsE+OTPWo1AdFDkKE5gJ4uFd/NggvAPEyPHpVADmrAAAAAElFTkSuQmCC 778ebecebb8b69848f38b3342d29d3ac755d2521.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//2qwP/7ZIv/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//yAoP/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yctf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1eB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYv/7c5b//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+zXHP/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nzBO/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x4eX/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jw8v/jxM3/z5im/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/+rS2P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-notes-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: 3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9uMr/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7c5b//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8j6v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////24yv/6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bnL//tzlv/7V4H/+1eB//tzlv/9ucv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-openproject-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: 1116991e86385dc68a295b155053cb5c731f644d.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-openxchange-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+6aoD/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv/Ol6b/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////q0tj/ni9N/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA/86Xpv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+XIED/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6aoD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8eHl/5cgQP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/zpem/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s1xz/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ctL//kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7Ncc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv/////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj///////////////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v//////////////////////////////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////cbV//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ol6b/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/8F5jP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//ydtv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2rwP/7c5b/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/8nbb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= 070273f978a249ae8a3ab5196d22d18dae244b05.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-portal-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= e7f9d1ad04d1efe6154644a19056586e13a734b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== cdea6e921a3ea56e326074499de783647258c796.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4= 3c57131cb5aba5437f541c362619f0d2d924fb78.b64: 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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9k= ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-xwiki-assets" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: 5ad21d258634828e615c1fa334356fd0ae2bac5c.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K b7b42874d0e274093e028cacac11373e1fb9b60c.b64: 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 ... --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-entrypoint" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: entrypoint.sh: | #!/bin/sh cd /mnt/assets cat /cm/element/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64 | base64 -d > fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico cat /cm/jitsi/b3ea2c80d902061a870360ef1c69dead0b0abff7.b64 | base64 -d > b3ea2c80d902061a870360ef1c69dead0b0abff7.svg cat /cm/keycloak/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico cat /cm/keycloak/f26f33840612e492ead45fc5e75896de016f48b7.b64 | base64 -d > f26f33840612e492ead45fc5e75896de016f48b7.svg cat /cm/nextcloud/17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64 | base64 -d > 17f7a005ac01ada220723048c5b1f5b7fbd20eba.png cat /cm/nextcloud/778ebecebb8b69848f38b3342d29d3ac755d2521.b64 | base64 -d > 778ebecebb8b69848f38b3342d29d3ac755d2521.ico cat /cm/notes/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64 | base64 -d > 3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico cat /cm/openproject/1116991e86385dc68a295b155053cb5c731f644d.b64 | base64 -d > 1116991e86385dc68a295b155053cb5c731f644d.svg cat /cm/openxchange/a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64 | base64 -d > a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico cat /cm/openxchange/070273f978a249ae8a3ab5196d22d18dae244b05.b64 | base64 -d > 070273f978a249ae8a3ab5196d22d18dae244b05.svg cat /cm/portal/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico cat /cm/portal/e7f9d1ad04d1efe6154644a19056586e13a734b7.b64 | base64 -d > e7f9d1ad04d1efe6154644a19056586e13a734b7.svg cat /cm/portal/cdea6e921a3ea56e326074499de783647258c796.b64 | base64 -d > cdea6e921a3ea56e326074499de783647258c796.svg cat /cm/portal/3c57131cb5aba5437f541c362619f0d2d924fb78.b64 | base64 -d > 3c57131cb5aba5437f541c362619f0d2d924fb78.jpg cat /cm/xwiki/5ad21d258634828e615c1fa334356fd0ae2bac5c.b64 | base64 -d > 5ad21d258634828e615c1fa334356fd0ae2bac5c.svg cat /cm/xwiki/b7b42874d0e274093e028cacac11373e1fb9b60c.b64 | base64 -d > b7b42874d0e274093e028cacac11373e1fb9b60c.png --- # Source: opendesk-static-files/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-static-files-nginx" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm data: nginx.conf: |- worker_processes auto; error_log stderr warn; pid /tmp/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/log/nginx/access.log main; server_names_hash_bucket_size 128; # Health-Endpoint server { listen 8080; location = /health { access_log off; allow all; default_type 'application/json'; return 200 '{"status": "ok"}'; } } # assets-Endpoints server { listen 8081; server_name chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/vector-icons/favicon.........ico$ { alias /mnt/assets/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico; } } server { listen 8081; server_name meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/images/favicon.svg$ { alias /mnt/assets/b3ea2c80d902061a870360ef1c69dead0b0abff7.svg; } } server { listen 8081; server_name id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/resources/...../login/UCS/img/favicon.ico$ { alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico; } location ~ ^/static-files/login/logo.svg$ { alias /mnt/assets/f26f33840612e492ead45fc5e75896de016f48b7.svg; } } server { listen 8081; server_name files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/core/img/favicon-touch.png$ { alias /mnt/assets/17f7a005ac01ada220723048c5b1f5b7fbd20eba.png; } location ~ ^/core/img/favicon.ico$ { alias /mnt/assets/778ebecebb8b69848f38b3342d29d3ac755d2521.ico; } } server { listen 8081; server_name notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/favicon.ico$ { alias /mnt/assets/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico; } } server { listen 8081; server_name projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/custom_style/........../favicon/favicon.svg$ { alias /mnt/assets/1116991e86385dc68a295b155053cb5c731f644d.svg; } } server { listen 8081; server_name webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/appsuite/favicon.ico$ { alias /mnt/assets/a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico; } location ~ ^/appsuite/favicon.svg$ { alias /mnt/assets/070273f978a249ae8a3ab5196d22d18dae244b05.svg; } } server { listen 8081; server_name portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/favicon.ico$ { alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico; } location ~ ^/static-files/portal/background.svg$ { alias /mnt/assets/e7f9d1ad04d1efe6154644a19056586e13a734b7.svg; } location ~ ^/static-files/portal/waiting-spinner.svg$ { alias /mnt/assets/cdea6e921a3ea56e326074499de783647258c796.svg; } location ~ ^/static-files/login/background.jpg$ { alias /mnt/assets/3c57131cb5aba5437f541c362619f0d2d924fb78.jpg; } } server { listen 8081; server_name wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; location ~ ^/resources/icons/xwiki/favicon.svg$ { alias /mnt/assets/5ad21d258634828e615c1fa334356fd0ae2bac5c.svg; } location ~ ^/resources/icons/xwiki/favicon16.png$ { alias /mnt/assets/b7b42874d0e274093e028cacac11373e1fb9b60c.png; } } } ... --- # Source: opendesk-static-files/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-static-files" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "assets" port: 8081 targetPort: "assets" protocol: "TCP" - name: "status" port: 8080 targetPort: "status" protocol: "TCP" selector: app.kubernetes.io/name: opendesk-static-files app.kubernetes.io/instance: opendesk-static-files ... --- # Source: opendesk-static-files/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: "opendesk-static-files" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: opendesk-static-files app.kubernetes.io/instance: opendesk-static-files strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 05dcf3ad549e7a7c30fac3a8eb771c9c7188255ba8fc2fa9c0b29b55c5b14f82 labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: opendesk-static-files initContainers: - name: "init" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" command: - "/bin/sh" - "-c" - "/entrypoint.sh" imagePullPolicy: IfNotPresent env: resources: limits: cpu: 99 memory: 64Mi requests: cpu: 0.01 memory: 16Mi volumeMounts: - name: "element-assets" mountPath: "/cm/element" - name: "jitsi-assets" mountPath: "/cm/jitsi" - name: "keycloak-assets" mountPath: "/cm/keycloak" - name: "nextcloud-assets" mountPath: "/cm/nextcloud" - name: "notes-assets" mountPath: "/cm/notes" - name: "openproject-assets" mountPath: "/cm/openproject" - name: "openxchange-assets" mountPath: "/cm/openxchange" - name: "portal-assets" mountPath: "/cm/portal" - name: "xwiki-assets" mountPath: "/cm/xwiki" - name: "assets" mountPath: "/mnt/assets" readOnly: false - name: "entrypoint" mountPath: "/entrypoint.sh" subPath: "entrypoint.sh" containers: - name: "nginx" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" imagePullPolicy: IfNotPresent env: livenessProbe: httpGet: path: "/health" port: 8080 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/health" port: 8080 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 startupProbe: httpGet: path: "/health" port: 8080 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: assets containerPort: 8081 protocol: TCP - name: status containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 64Mi requests: cpu: 0.01 memory: 16Mi volumeMounts: - name: "config" mountPath: "/etc/nginx/nginx.conf" subPath: "nginx.conf" - name: "cache" mountPath: "/var/cache/nginx/" - name: "run" mountPath: "/var/run/" - name: "tmp" mountPath: "/tmp" - name: "assets" mountPath: "/mnt/assets" readOnly: true volumes: - name: "element-assets" configMap: name: "opendesk-static-files-element-assets" - name: "jitsi-assets" configMap: name: "opendesk-static-files-jitsi-assets" - name: "keycloak-assets" configMap: name: "opendesk-static-files-keycloak-assets" - name: "nextcloud-assets" configMap: name: "opendesk-static-files-nextcloud-assets" - name: "notes-assets" configMap: name: "opendesk-static-files-notes-assets" - name: "openproject-assets" configMap: name: "opendesk-static-files-openproject-assets" - name: "openxchange-assets" configMap: name: "opendesk-static-files-openxchange-assets" - name: "portal-assets" configMap: name: "opendesk-static-files-portal-assets" - name: "xwiki-assets" configMap: name: "opendesk-static-files-xwiki-assets" - name: "config" configMap: name: "opendesk-static-files-nginx" - name: "entrypoint" configMap: name: "opendesk-static-files-entrypoint" items: - key: "entrypoint.sh" path: "entrypoint.sh" defaultMode: 0755 - name: "cache" emptyDir: {} - name: "run" emptyDir: {} - name: "tmp" emptyDir: {} - name: "assets" emptyDir: {} ... --- # Source: opendesk-static-files/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-static-files" labels: app.kubernetes.io/name: opendesk-static-files helm.sh/chart: opendesk-static-files-4.0.1 app.kubernetes.io/instance: opendesk-static-files app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/session-cookie-path: "/" spec: ingressClassName: "nginx" tls: - hosts: - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /vector-icons/favicon.........ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /images/favicon.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /resources/...../login/UCS/img/favicon.ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /static-files/login/logo.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /core/img/favicon-touch.png pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /core/img/favicon.ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /favicon.ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /custom_style/........../favicon/favicon.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /appsuite/favicon.ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /appsuite/favicon.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /favicon.ico pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /static-files/portal/background.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /static-files/portal/waiting-spinner.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /static-files/login/background.jpg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /resources/icons/xwiki/favicon.svg pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets - path: /resources/icons/xwiki/favicon16.png pathType: "Exact" backend: service: name: opendesk-static-files port: name: assets ... --- # Source: redis/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount automountServiceAccountToken: true metadata: name: redis namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 --- # Source: redis/templates/secret.yaml apiVersion: v1 kind: Secret metadata: name: redis namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 type: Opaque data: redis-password: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ==" --- # Source: redis/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: redis-configuration namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 data: redis.conf: |- # User-supplied common configuration: # Enable AOF https://redis.io/topics/persistence#append-only-file appendonly yes # Disable RDB persistence, AOF persistence already enabled. save "" # End of common configuration master.conf: |- dir /data # User-supplied master configuration: rename-command FLUSHDB "" rename-command FLUSHALL "" # End of master configuration replica.conf: |- dir /data # User-supplied replica configuration: rename-command FLUSHDB "" rename-command FLUSHALL "" # End of replica configuration --- # Source: redis/templates/health-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: redis-health namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 data: ping_readiness_local.sh: |- #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" response=$( timeout -s 15 $1 \ redis-cli \ -h localhost \ -p $REDIS_PORT \ ping ) if [ "$?" -eq "124" ]; then echo "Timed out" exit 1 fi if [ "$response" != "PONG" ]; then echo "$response" exit 1 fi ping_liveness_local.sh: |- #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" response=$( timeout -s 15 $1 \ redis-cli \ -h localhost \ -p $REDIS_PORT \ ping ) if [ "$?" -eq "124" ]; then echo "Timed out" exit 1 fi responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ] && [ "$responseFirstWord" != "MASTERDOWN" ]; then echo "$response" exit 1 fi ping_readiness_master.sh: |- #!/bin/bash [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" response=$( timeout -s 15 $1 \ redis-cli \ -h $REDIS_MASTER_HOST \ -p $REDIS_MASTER_PORT_NUMBER \ ping ) if [ "$?" -eq "124" ]; then echo "Timed out" exit 1 fi if [ "$response" != "PONG" ]; then echo "$response" exit 1 fi ping_liveness_master.sh: |- #!/bin/bash [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" response=$( timeout -s 15 $1 \ redis-cli \ -h $REDIS_MASTER_HOST \ -p $REDIS_MASTER_PORT_NUMBER \ ping ) if [ "$?" -eq "124" ]; then echo "Timed out" exit 1 fi responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ]; then echo "$response" exit 1 fi ping_readiness_local_and_master.sh: |- script_dir="$(dirname "$0")" exit_status=0 "$script_dir/ping_readiness_local.sh" $1 || exit_status=$? "$script_dir/ping_readiness_master.sh" $1 || exit_status=$? exit $exit_status ping_liveness_local_and_master.sh: |- script_dir="$(dirname "$0")" exit_status=0 "$script_dir/ping_liveness_local.sh" $1 || exit_status=$? "$script_dir/ping_liveness_master.sh" $1 || exit_status=$? exit $exit_status --- # Source: redis/templates/scripts-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: redis-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 data: start-master.sh: | #!/bin/bash [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" if [[ -f /opt/bitnami/redis/mounted-etc/master.conf ]];then cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf fi if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf fi ARGS=("--port" "${REDIS_PORT}") ARGS+=("--requirepass" "${REDIS_PASSWORD}") ARGS+=("--masterauth" "${REDIS_PASSWORD}") ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf") exec redis-server "${ARGS[@]}" --- # Source: redis/templates/headless-svc.yaml apiVersion: v1 kind: Service metadata: name: redis-headless namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 annotations: spec: type: ClusterIP clusterIP: None ports: - name: tcp-redis port: 6379 targetPort: redis selector: app.kubernetes.io/instance: redis app.kubernetes.io/name: redis --- # Source: redis/templates/master/service.yaml apiVersion: v1 kind: Service metadata: name: redis-master namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 app.kubernetes.io/component: master spec: type: ClusterIP internalTrafficPolicy: Cluster sessionAffinity: None ports: - name: tcp-redis port: 6379 targetPort: redis nodePort: null selector: app.kubernetes.io/instance: redis app.kubernetes.io/name: redis app.kubernetes.io/component: master --- # Source: redis/templates/master/application.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-master namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 app.kubernetes.io/component: master spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: redis app.kubernetes.io/name: redis app.kubernetes.io/component: master serviceName: redis-headless updateStrategy: type: RollingUpdate template: metadata: labels: app.kubernetes.io/instance: redis app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: redis app.kubernetes.io/version: 7.2.3 helm.sh/chart: redis-18.6.1 app.kubernetes.io/component: master annotations: checksum/configmap: 86bcc953bb473748a3d3dc60b7c11f34e60c93519234d4c37f42e22ada559d47 checksum/health: aff24913d801436ea469d8d374b2ddb3ec4c43ee7ab24663d5f8ff1a1b6991a9 checksum/scripts: 560c33ff34d845009b51830c332aa05fa211444d1877d3526d3599be7543aaa5 checksum/secret: ab6bcf8974601f2d1c9598fc3f77f21fe3df4848bb3f714847f3f85935fd7822 spec: securityContext: fsGroup: 1001 serviceAccountName: redis automountServiceAccountToken: true affinity: podAffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/instance: redis app.kubernetes.io/name: redis app.kubernetes.io/component: master topologyKey: kubernetes.io/hostname weight: 1 nodeAffinity: enableServiceLinks: true terminationGracePeriodSeconds: 30 containers: - name: redis image: registry-1.docker.io/bitnami/redis:7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault command: - /bin/bash args: - -c - /opt/bitnami/scripts/start-scripts/start-master.sh env: - name: BITNAMI_DEBUG value: "false" - name: REDIS_REPLICATION_MODE value: master - name: ALLOW_EMPTY_PASSWORD value: "no" - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: redis key: redis-password - name: REDIS_TLS_ENABLED value: "no" - name: REDIS_PORT value: "6379" ports: - name: redis containerPort: 6379 livenessProbe: initialDelaySeconds: 20 periodSeconds: 5 # One second longer than command timeout should prevent generation of zombie processes. timeoutSeconds: 6 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_liveness_local.sh 5 readinessProbe: initialDelaySeconds: 20 periodSeconds: 5 timeoutSeconds: 2 successThreshold: 1 failureThreshold: 5 exec: command: - sh - -c - /health/ping_readiness_local.sh 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: start-scripts mountPath: /opt/bitnami/scripts/start-scripts - name: health mountPath: /health - name: redis-data mountPath: /data - name: config mountPath: /opt/bitnami/redis/mounted-etc - name: redis-tmp-conf mountPath: /opt/bitnami/redis/etc/ - name: tmp mountPath: /tmp volumes: - name: start-scripts configMap: name: redis-scripts defaultMode: 0755 - name: health configMap: name: redis-health defaultMode: 0755 - name: config configMap: name: redis-configuration - name: redis-tmp-conf emptyDir: {} - name: tmp emptyDir: {} volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redis-data labels: app.kubernetes.io/instance: redis app.kubernetes.io/name: redis app.kubernetes.io/component: master spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" --- # Source: memcached/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount automountServiceAccountToken: true metadata: name: memcached namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: memcached app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: memcached app.kubernetes.io/version: 1.6.22 helm.sh/chart: memcached-6.7.1 --- # Source: memcached/templates/service.yaml apiVersion: v1 kind: Service metadata: name: memcached namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: memcached app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: memcached app.kubernetes.io/version: 1.6.22 helm.sh/chart: memcached-6.7.1 spec: type: ClusterIP ports: - name: memcache port: 11211 targetPort: memcache nodePort: null selector: app.kubernetes.io/instance: memcached app.kubernetes.io/name: memcached --- # Source: memcached/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: memcached namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: memcached app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: memcached app.kubernetes.io/version: 1.6.22 helm.sh/chart: memcached-6.7.1 spec: selector: matchLabels: app.kubernetes.io/instance: memcached app.kubernetes.io/name: memcached replicas: 1 strategy: rollingUpdate: {} type: RollingUpdate template: metadata: labels: app.kubernetes.io/instance: memcached app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: memcached app.kubernetes.io/version: 1.6.22 helm.sh/chart: memcached-6.7.1 annotations: spec: affinity: podAffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/instance: memcached app.kubernetes.io/name: memcached topologyKey: kubernetes.io/hostname weight: 1 nodeAffinity: securityContext: fsGroup: 1001 serviceAccountName: memcached containers: - name: memcached image: registry-1.docker.io/bitnami/memcached:1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault env: - name: BITNAMI_DEBUG value: "false" - name: MEMCACHED_PORT_NUMBER value: "11211" ports: - name: memcache containerPort: 11211 livenessProbe: failureThreshold: 6 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 tcpSocket: port: memcache readinessProbe: failureThreshold: 6 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 tcpSocket: port: memcache resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: tmp mountPath: /tmp volumes: - name: tmp emptyDir: {} --- # Source: postgresql/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "postgresql" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: postgresql/templates/secret-job.yaml apiVersion: "v1" kind: "Secret" metadata: name: "postgresql-job" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm stringData: init-wait.sh: | RETRIES=60 until psql -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq "0" ]; do echo "Waiting 5s for postgres server, $((RETRIES--)) remaining attempts..." sleep 5 done if [ ${RETRIES} -eq "0" ]; then echo "Maximum wait attempts exceeded, aborting". exit 1; fi init-user.sh: | CURRENT_MAX_CONNECTIONS=$(psql -t -c "SHOW max_connections;" | xargs) echo "Current set max_connections ($CURRENT_MAX_CONNECTIONS)." echo "Working on keycloak_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100"; fi echo "Working on notes_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notes_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100"; fi echo "Working on openproject_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'openproject_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100"; fi echo "Working on keycloak_extensions_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_extensions_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100"; fi echo "Working on matrix_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'matrix_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100"; fi echo "Working on notificationsapi_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notificationsapi_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100"; fi echo "Working on guardianmanagementapi_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'guardianmanagementapi_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100"; fi echo "Working on selfservice_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'selfservice_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10"; else echo "User does not exist, creating." psql -c "CREATE USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10"; fi echo "Working on nextcloud_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'nextcloud_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100"; fi echo "Working on xwiki_user..." if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'xwiki_user'" | grep -q 1; then echo "User already exists, updating." psql -c "ALTER USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100"; else echo "User does not exist, creating." psql -c "CREATE USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100"; fi echo "Final required max_connections: 925" if [[ "$CURRENT_MAX_CONNECTIONS" -ne "925" ]]; then echo "Updating required limits from current $CURRENT_MAX_CONNECTIONS to 925" psql -c "ALTER SYSTEM SET MAX_CONNECTIONS = 925"; # echo "Restarting the postgres Service." # pg_ctl restart fi init-db.sh: | psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak'" | grep -q 1 || psql -c "CREATE DATABASE keycloak "; psql -c "ALTER DATABASE keycloak OWNER TO keycloak_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak_extensions'" | grep -q 1 || psql -c "CREATE DATABASE keycloak_extensions "; psql -c "ALTER DATABASE keycloak_extensions OWNER TO keycloak_extensions_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak_extensions TO keycloak_extensions_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notes'" | grep -q 1 || psql -c "CREATE DATABASE notes "; psql -c "ALTER DATABASE notes OWNER TO notes_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE notes TO notes_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'openproject'" | grep -q 1 || psql -c "CREATE DATABASE openproject "; psql -c "ALTER DATABASE openproject OWNER TO openproject_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE openproject TO openproject_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'matrix'" | grep -q 1 || psql -c "CREATE DATABASE matrix ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 "; psql -c "ALTER DATABASE matrix OWNER TO matrix_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'guardianmanagementapi'" | grep -q 1 || psql -c "CREATE DATABASE guardianmanagementapi "; psql -c "ALTER DATABASE guardianmanagementapi OWNER TO guardianmanagementapi_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE guardianmanagementapi TO guardianmanagementapi_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notificationsapi'" | grep -q 1 || psql -c "CREATE DATABASE notificationsapi "; psql -c "ALTER DATABASE notificationsapi OWNER TO notificationsapi_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE notificationsapi TO notificationsapi_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'selfservice'" | grep -q 1 || psql -c "CREATE DATABASE selfservice "; psql -c "ALTER DATABASE selfservice OWNER TO selfservice_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE selfservice TO selfservice_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'nextcloud'" | grep -q 1 || psql -c "CREATE DATABASE nextcloud "; psql -c "ALTER DATABASE nextcloud OWNER TO nextcloud_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud_user"; psql -tc "SELECT 1 FROM pg_database WHERE datname = 'xwiki'" | grep -q 1 || psql -c "CREATE DATABASE xwiki ENCODING 'UNICODE' template=template0 "; psql -c "ALTER DATABASE xwiki OWNER TO xwiki_user"; psql -c "GRANT ALL PRIVILEGES ON DATABASE xwiki TO xwiki_user"; ... --- # Source: postgresql/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postgresql" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm data: ... --- # Source: postgresql/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "postgresql" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "postgresql" port: 5432 targetPort: postgresql protocol: "TCP" selector: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: postgresql ... --- # Source: postgresql/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: postgresql namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm spec: replicas: 1 serviceName: postgresql updateStrategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: postgresql template: metadata: annotations: argocd.argoproj.io/hook: PostSync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 1001 fsGroupChangePolicy: OnRootMismatch serviceAccountName: postgresql terminationGracePeriodSeconds: 120 hostNetwork: false hostIPC: false containers: - name: "postgresql" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b" imagePullPolicy: IfNotPresent env: - name: "POSTGRES_PASSWORD" value: "e5c38aa93bd3191b54a288db3e820c103ebb52e0" - name: "POSTGRES_USER" value: "postgres" - name: "PGPORT" value: "5432" - name: "PGDATA" value: "/mnt/postgresql/data" ports: - name: postgresql containerPort: 5432 protocol: TCP startupProbe: failureThreshold: 15 initialDelaySeconds: 15 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 exec: command: - /bin/sh - -c - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 livenessProbe: failureThreshold: 6 initialDelaySeconds: 15 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -c - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 readinessProbe: failureThreshold: 6 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -c - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: "tmp" mountPath: "/tmp" - name: "var-run-postgresql" mountPath: "/var/run/postgresql" - name: "data" mountPath: "/mnt/postgresql" volumes: - name: "tmp" emptyDir: {} - name: "var-run-postgresql" emptyDir: {} volumeClaimTemplates: - metadata: name: data spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: postgresql/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "postgresql-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "post-install,post-upgrade" "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" spec: ttlSecondsAfterFinished: 60 template: metadata: labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-2.1.2 app.kubernetes.io/instance: postgresql app.kubernetes.io/managed-by: Helm annotations: spec: securityContext: fsGroup: 1001 fsGroupChangePolicy: OnRootMismatch serviceAccountName: "postgresql" containers: - name: "psql" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b" imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - "/mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh && /mnt/bootstrap/init-db.sh" volumeMounts: - mountPath: "/mnt/bootstrap/" name: "bootstrap" readOnly: true env: - name: "PGHOST" value: "postgresql" - name: "PGPORT" value: "5432" - name: "PGUSER" value: "postgres" - name: "PGPASSWORD" value: "e5c38aa93bd3191b54a288db3e820c103ebb52e0" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: "bootstrap" secret: secretName: "postgresql-job" defaultMode: 0550 restartPolicy: Never backoffLimit: 4 ... --- # Source: mariadb/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: "mariadb" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: mariadb/templates/secret-job.yaml apiVersion: "v1" kind: "Secret" metadata: name: "mariadb-job" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm stringData: init-wait.sh: | RETRIES=10 until mariadb-admin status --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do echo "Waiting 30s for mariadb server, $((RETRIES--)) remaining attempts..." sleep 30 done if [ ${RETRIES} -eq "0" ]; then echo "Maximum wait attempts exceeded, aborting". exit 1; fi init-user-data.sql: | CREATE USER IF NOT EXISTS "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c"; ALTER USER "openxchange_user"@"%" WITH MAX_USER_CONNECTIONS 100; ALTER USER "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c"; init-user.sh: | mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} init-db.sh: | mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS openxchange_dummy;" mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e 'GRANT ALL PRIVILEGES ON openxchange_dummy.* TO "openxchange_user"@"%";' mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "FLUSH PRIVILEGES;" ... --- # Source: mariadb/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "mariadb" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm stringData: rootPassword: "e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59" ... --- # Source: mariadb/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "mariadb" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm data: ... --- # Source: mariadb/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "mariadb" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "mariadb" port: 3306 targetPort: mariadb protocol: "TCP" selector: app.kubernetes.io/name: mariadb app.kubernetes.io/instance: mariadb ... --- # Source: mariadb/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: mariadb namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm spec: replicas: 1 serviceName: mariadb updateStrategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: mariadb app.kubernetes.io/instance: mariadb template: metadata: annotations: argocd.argoproj.io/hook: PostSync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 1001 fsGroupChangePolicy: OnRootMismatch serviceAccountName: mariadb terminationGracePeriodSeconds: 120 hostNetwork: false hostIPC: false containers: - name: "mariadb" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f" imagePullPolicy: IfNotPresent env: - name: "MARIADB_ROOT_PASSWORD" valueFrom: secretKeyRef: name: mariadb key: rootPassword ports: - name: mariadb containerPort: 3306 protocol: TCP startupProbe: failureThreshold: 15 initialDelaySeconds: 15 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 exec: command: - /bin/sh - -ec - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" livenessProbe: failureThreshold: 6 initialDelaySeconds: 15 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -ec - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" readinessProbe: failureThreshold: 6 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -ec - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 384Mi volumeMounts: - name: "tmp" mountPath: "/tmp" - name: "run-mysqld" mountPath: "/run/mysqld" - name: "data" mountPath: "/var/lib/mysql" volumes: - name: "tmp" emptyDir: {} - name: "run-mysqld" emptyDir: {} volumeClaimTemplates: - metadata: name: data spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: mariadb/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "mariadb-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "post-install,post-upgrade" "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" spec: ttlSecondsAfterFinished: 60 template: metadata: labels: app.kubernetes.io/name: mariadb helm.sh/chart: mariadb-3.0.3 app.kubernetes.io/instance: mariadb app.kubernetes.io/managed-by: Helm annotations: spec: securityContext: fsGroup: 1001 fsGroupChangePolicy: OnRootMismatch serviceAccountName: mariadb containers: - name: "mariadb" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f" imagePullPolicy: IfNotPresent command: - "/bin/bash" - "-c" - "/mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh < /mnt/bootstrap/init-user-data.sql && /mnt/bootstrap/init-db.sh" volumeMounts: - mountPath: "/mnt/bootstrap/" name: "bootstrap" readOnly: true env: - name: "MARIADB_HOST" value: "mariadb" - name: "MARIADB_ROOT_PASSWORD" valueFrom: secretKeyRef: name: mariadb key: rootPassword resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 384Mi volumes: - name: "bootstrap" secret: secretName: "mariadb-job" defaultMode: 0550 restartPolicy: Never backoffLimit: 4 ... --- # Source: postfix/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: postfix labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm automountServiceAccountToken: true ... --- # Source: postfix/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "postfix" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm stringData: username: "opendesk-system" password: "1884bda7fb31c726adcd094399ab63319e9ca56f" ... --- # Source: postfix/templates/configmap-overrides.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-overrides" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: sasl_passwd.map: | : ... --- # Source: postfix/templates/configmap-scripts.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-scripts" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: init-postfix.sh: | #!/bin/bash function initPostfix { cp /etc/postfix/master.cf.template /etc/postfix/master.cf cp /etc/postfix/main.cf.template /etc/postfix/main.cf chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix chown postfix /var/lib/postfix if [ -f /overrides/postfix.cf ]; then while read line; do [[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}" done < /overrides/postfix.cf echo "Loaded '/overrides/postfix.cf'" else echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided." fi # Include table-map files if ls -A /overrides/*.map 1> /dev/null 2>&1; then cp /overrides/*.map /etc/postfix/ postmap /etc/postfix/*.map rm /etc/postfix/*.map chown root:root /etc/postfix/*.lmdb chmod 0600 /etc/postfix/*.lmdb echo "Loaded 'map files'" else echo "No extra map files loaded because optional '/overrides/*.map' not provided." fi echo -n ${AUTHDB_PASSWORD} | saslpasswd2 -c -u "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ${AUTHDB_USERNAME} chmod g+r /etc/sasl2/sasldb2 cp -a /etc/postfix/* /etc/postfix-copy/ echo "Init done" } initPostfix >> /proc/1/fd/1 start-postfix.sh: | #!/bin/bash function startPostfix { saslauthd -a sasldb -d -O /etc/postfix/sasl2/smtpd.conf & echo "Started Sasl Daemon Daemon" /usr/sbin/postfix start-fg } startPostfix &>> /proc/1/fd/1 namespace-watcher.sh: | #!/bin/bash DELAY=${DELAY:-10} DOMAIN=${DOMAIN:-"develop.souvap-univention.de"} INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"} KUBECTL_BIN="/usr/bin/env kubectl" MAILSERVER=${MAILSERVER:-"dovecot"} MAILSERVER_PORT=${MAILSERVER_PORT:-"24"} MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"} NAMESPACE=${NAMESPACE:-"default"} SERVICE_NAME=${SERVICE_NAME:-"dovecot"} TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"} VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"} WORKDIR=${WORKDIR:-"/namespace-watcher"} touch "${WORKDIR}/virtual_mailbox_domains.txt" touch "${WORKDIR}/transport.map" update-postfix() { echo "updating Postfix ..." cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt" cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map" ${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload" } while true; do # Get all namespaces containting a service called dovecot namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) ) rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp" rm -f "${WORKDIR}/transport.map.tmp" for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do # Get all mail domains from annotation IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' ) # Add default namespace domain domains+=("${ns}.${DOMAIN}") for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp" echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp" done done cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix sleep ${DELAY} echo "👀" done ... --- # Source: postfix/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-config" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: master.cf: | # service type private unpriv chroot wakeup maxproc command + args smtp inet n - n - 200 smtpd -o smtpd_client_connection_count_limit=15 -o smtpd_client_restrictions= -o smtpd_proxy_options=speed_adjust -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination -o smtpd_sender_restrictions= submission inet n - n - - smtpd -o smtpd_client_connection_count_limit=15 -o smtpd_proxy_options=speed_adjust -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o smtpd_reject_unlisted_recipient=no -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may -o syslog_name=postfix/submission pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd lmtps unix - - n - - lmtp -o lmtp_send_xforward_command=yes -o lmtp_tls_ciphers=high -o lmtp_tls_mandatory_ciphers=high -o lmtp_tls_mandatory_protocols=>=TLSv1.2 -o lmtp_tls_note_starttls_offer=yes -o lmtp_tls_protocols=>=TLSv1.2 -o lmtp_tls_security_level=encrypt main.cf: | compatibility_level=3.6 mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de myhostname = postfix myorigin = $mydomain inet_protocols = ipv4 # Message size limit message_size_limit = 50000000 # Relayed networks mynetworks = 127.0.0.1/32 [::1]/128 10.0.0.0/8 # Empty alias list to override the configuration variable and disable NIS alias_maps = # Only accept virtual emails mydestination = $myhostname, localhost.$mydomain, localhost # What mechanisms the Postfix lmtp/smtp client uses to look up a host's IP address lmtp_host_lookup = native smtp_host_lookup = native recipient_delimiter = + # Relayhost if any is configured relayhost = content_filter = smtp_sasl_auth_enable = yes smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd.map smtp_sasl_security_options = smtp_tls_CAfile = smtp_tls_mandatory_protocols = >=TLSv1.2 smtp_tls_security_level = encrypt smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de virtual_transport = lmtps:dovecot:24 transport_maps = ############### # Restrictions ############### # Delay all rejects until all information can be logged smtpd_delay_reject = yes # Allowed senders are: the user or one of the alias destinations smtpd_sender_login_maps = $virtual_alias_maps # Helo restrictions are specified for smtp only in master.cf smtpd_helo_required = yes # Sender restrictions smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unlisted_sender, reject_sender_login_mismatch, permit # Recipient restrictions: smtpd_recipient_restrictions = reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, permit # Relay restrictions smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_type = cyrus cyrus_sasl_config_path = "/etc/postfix/sasl" # smtpd_sasl_local_domain = $mydomain broken_sasl_auth_clients = yes smtpd_tls_cert_file = /etc/tls/tls.crt smtpd_tls_key_file = /etc/tls/tls.key smtpd_tls_mandatory_protocols = >=TLSv1.2 smtpd_tls_security_level = may smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache smtpd_milters = inet:clamav-simple:7357 milter_default_action = accept ############### # Extra Settings ############### maillog_file = /dev/stdout smtpd.conf: | pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM sasldb_path: /etc/postfix/sasldb ... --- # Source: postfix/templates/persistentvolumeclaim.yaml apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "postfix" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: postfix/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "postfix" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" spec: type: "ClusterIP" ports: - port: 25 targetPort: 25 protocol: "TCP" name: "smtp" - port: 587 targetPort: 587 protocol: "TCP" name: "smtps" selector: app.kubernetes.io/name: postfix app.kubernetes.io/instance: postfix ... --- # Source: postfix/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "postfix" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: postfix app.kubernetes.io/instance: postfix strategy: type: Recreate template: metadata: annotations: checksum/configmap: 81bd3ff9d37b21391b7f1c7fdbff68632f3e316f925edf32dcb1feb099ea9da8 checksum/configmapoverrides: a0519350f440fde8cd07d5b8babba5eb186ba501196ca95333fee0662dc10c10 checksum/configmapnamespacewatcherbin: e222c5e7d6e26b5151f6e35368cf32cb1a4e1f936f0e818d234fb97dfdaf9da7 labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix app.kubernetes.io/managed-by: Helm spec: imagePullSecrets: securityContext: fsGroup: 101 serviceAccountName: postfix volumes: - name: "postfix-scripts" configMap: name: "postfix-scripts" defaultMode: 0777 - name: "config-templates" configMap: name: "postfix-config" - name: "config-master" configMap: name: "postfix-config" items: - key: "master.cf" path: "master.cf" - name: "config-main" configMap: name: "postfix-config" items: - key: "main.cf" path: "main.cf" - name: "config" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "lib-postfix" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "tls" secret: secretName: "opendesk-certificates-tls" - name: "spool-postfix" persistentVolumeClaim: claimName: "postfix" - name: "config-sasl" configMap: name: "postfix-config" items: - key: "smtpd.conf" path: "smtpd.conf" - name: "run-saslauthd" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "sasl2" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "overrides" configMap: name: "postfix-overrides" initContainers: - name: "init-postfix" image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" imagePullPolicy: "IfNotPresent" command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"] resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi env: - name: "AUTHDB_USERNAME" valueFrom: secretKeyRef: name: "postfix" key: username - name: "AUTHDB_PASSWORD" valueFrom: secretKeyRef: name: "postfix" key: password volumeMounts: - name: "config" mountPath: "/etc/postfix-copy" - name: "config-templates" mountPath: "/etc/postfix/master.cf.template" subPath: "master.cf" - name: "config-templates" mountPath: "/etc/postfix/main.cf.template" subPath: "main.cf" - name: "lib-postfix" mountPath: "/var/lib/postfix" - name: "postfix-scripts" mountPath: "/usr/local/bin/init-postfix.sh" subPath: "init-postfix.sh" - name: "config-sasl" mountPath: "/etc/postfix/sasl/smtpd.conf" subPath: "smtpd.conf" - name: "sasl2" mountPath: "/etc/sasl2" - name: "tls" mountPath: "/etc/tls" - name: "spool-postfix" mountPath: "/var/spool/postfix" - name: "overrides" mountPath: "/overrides" containers: - name: "postfix" securityContext: allowPrivilegeEscalation: true capabilities: {} privileged: true readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" imagePullPolicy: "IfNotPresent" command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"] env: ports: - name: smtp containerPort: 25 protocol: "TCP" - name: smtps containerPort: 587 protocol: "TCP" readinessProbe: tcpSocket: port: 25 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 livenessProbe: tcpSocket: port: 25 initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi volumeMounts: - name: "config" mountPath: "/etc/postfix" readOnly: true - name: "postfix-scripts" mountPath: "/usr/local/bin/start-postfix.sh" subPath: "start-postfix.sh" - name: "config-sasl" mountPath: "/etc/postfix/sasl/smtpd.conf" subPath: "smtpd.conf" - name: "run-saslauthd" mountPath: "/run/saslauthd" - name: "sasl2" mountPath: "/etc/sasl2" - name: "lib-postfix" mountPath: "/var/lib/postfix" - name: "tls" mountPath: "/etc/tls" - name: "spool-postfix" mountPath: "/var/spool/postfix" ... --- # Source: clamav-simple/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: "clamav-simple" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: clamav-simple helm.sh/chart: clamav-simple-4.0.6 app.kubernetes.io/instance: clamav-simple app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: clamav-simple/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "clamav-simple" labels: app.kubernetes.io/name: clamav-simple helm.sh/chart: clamav-simple-4.0.6 app.kubernetes.io/instance: clamav-simple app.kubernetes.io/managed-by: Helm data: clamd.conf: | DatabaseDirectory /var/lib/clamav LogFileUnlock no LogFileMaxSize 1M LogTime no LogVerbose no LogSyslog yes LogFacility LOG_LOCAL6 LogRotate no LogClean no PreludeEnable no PreludeAnalyzerName ClamAV ExtendedDetectionInfo yes PidFile /tmp/clamd.pid TemporaryDirectory /var/tmp OfficialDatabaseOnly no LocalSocket /tmp/clamd.sock LocalSocketMode 660 FixStaleSocket yes TCPSocket 3310 TCPAddr 0.0.0.0 MaxConnectionQueueLength 200 StreamMaxLength 100M StreamMinPort 1024 StreamMaxPort 2048 MaxThreads 10 ReadTimeout 120 CommandReadTimeout 30 SendBufTimeout 500 MaxQueue 100 IdleTimeout 30 MaxDirectoryRecursion 15 FollowDirectorySymlinks no FollowFileSymlinks no CrossFilesystems yes SelfCheck 120 ConcurrentDatabaseReload yes VirusEvent no User clamav ExitOnOOM yes Foreground yes Debug no LeaveTemporaryFiles no GenerateMetadataJson yes AllowAllMatchScan yes DetectPUA no ForceToDisk yes DisableCache no HeuristicAlerts yes HeuristicScanPrecedence no AlertBrokenExecutables yes AlertBrokenMedia yes AlertEncrypted no AlertEncryptedArchive no AlertEncryptedDoc no AlertOLE2Macros no AlertPhishingSSLMismatch no AlertPhishingCloak no AlertPartitionIntersection no ScanPE yes DisableCertCheck no ScanELF yes ScanOLE2 yes ScanPDF yes ScanSWF yes ScanXMLDOCS yes ScanHWP3 yes ScanMail yes ScanPartialMessages no PhishingSignatures yes PhishingScanURLs yes StructuredDataDetection no StructuredMinCreditCardCount 3 StructuredCCOnly no StructuredMinSSNCount 3 StructuredSSNFormatNormal yes StructuredSSNFormatStripped no ScanHTML yes ScanArchive yes MaxScanTime 120000 MaxScanSize 400M MaxFileSize 100M MaxRecursion 17 MaxFiles 10000 MaxEmbeddedPE 40M MaxHTMLNormalize 40M MaxHTMLNoTags 8M MaxScriptNormalize 20M MaxZipTypeRcg 1M MaxPartitions 50 MaxIconsPE 100 MaxRecHWP3 16 PCREMatchLimit 100000 PCRERecMatchLimit 2000 PCREMaxFileSize 100M AlertExceedsMax no OnAccessMaxFileSize 5M OnAccessMaxThreads 5 OnAccessCurlTimeout 5000 OnAccessDisableDDD no OnAccessPrevention no OnAccessDenyOnError no OnAccessExtraScanning no OnAccessExcludeRootUID no OnAccessExcludeUname no Bytecode yes BytecodeSecurity TrustSigned BytecodeUnsigned no BytecodeTimeout 10000 freshclam.conf: | DatabaseDirectory /var/lib/clamav LogFileMaxSize 1M LogTime no LogVerbose no LogSyslog yes LogFacility LOG_LOCAL6 LogRotate no DatabaseOwner clamav MaxAttempts 3 ScriptedUpdates yes CompressLocalDatabase no NotifyClamd no Foreground yes Debug no ConnectTimeout 30 ReceiveTimeout 60 Bytecode yes Checks 12 DatabaseMirror https://clamavdb.c3sl.ufpr.br DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/badmacro.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/blurl.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/hackingteam.hsb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/junk.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbl.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbla.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/lott.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malwarehash.hsb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phish.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phishtank.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/porcupine.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/rogue.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/scam.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/shelter.ldb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamattach.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamimg.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spear.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spearl.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware.hdb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb DatabaseCustomURL https://urlhaus.abuse.ch/downloads/urlhaus.ndb clamav-milter.conf: | MilterSocket inet:7357 FixStaleSocket yes User clamav ReadTimeout 120 Foreground yes TemporaryDirectory /tmp ClamdSocket unix:/tmp/clamd.sock MaxFileSize 25M OnClean Accept OnInfected Quarantine OnFail Defer AddHeader no LogFileUnlock no LogFileMaxSize 1M LogTime no LogVerbose no LogSyslog yes LogFacility LOG_LOCAL6 LogRotate no SupportMultipleRecipients yes c-icap.conf: | PidFile /run/c-icap/c-icap.pid acl all src 0.0.0.0/0.0.0.0 icap_access allow all client_access allow all Port 1344 Timeout 300 MaxKeepAliveRequests 100 KeepAliveTimeout 600 StartServers 1 MaxServers 4 MinSpareThreads 10 MaxSpareThreads 20 ThreadsPerChild 10 ServerAdmin c-icap-admin ServerName c-icap TmpDir /var/tmp MaxMemObject 131072 DebugLevel 1 Pipelining on SupportBuggyClients off RemoteProxyUsers off ServerLog /dev/stdout AccessLog /dev/stdout ModulesDir /var/lib/clamav/lib/c_icap ServicesDir /var/lib/clamav/lib/c_icap TemplateDir /var/lib/clamav/share/c_icap/templates/ TemplateDefaultLanguage en LoadMagicFile /var/lib/clamav/etc/c-icap.magic RemoteProxyUsers off RemoteProxyUserHeader X-Authenticated-User RemoteProxyUserHeaderEncoded on Service echo srv_echo.so Include virus_scan.conf virus_scan.conf: | Service antivirus_module virus_scan.so ServiceAlias avscan virus_scan?allow204=on&sizelimit=off&mode=simple virus_scan.Allow204Responces on virus_scan.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE virus_scan.SendPercentData 5 virus_scan.StartSendPercentDataAfter 2M virus_scan.MaxObjectSize 500M Include clamd_mod.conf clamd_mod.conf: | Module common clamd_mod.so clamd_mod.ClamdSocket /tmp/clamd.sock ... --- # Source: clamav-simple/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "clamav-simple" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: clamav-simple helm.sh/chart: clamav-simple-4.0.6 app.kubernetes.io/instance: clamav-simple app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "clamd" port: 3310 targetPort: 3310 protocol: "TCP" - name: "icap" port: 1344 targetPort: 1344 protocol: "TCP" - name: "milter" port: 7357 targetPort: 7357 protocol: "TCP" selector: app.kubernetes.io/name: clamav-simple app.kubernetes.io/instance: clamav-simple ... --- # Source: clamav-simple/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: clamav-simple namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: clamav-simple helm.sh/chart: clamav-simple-4.0.6 app.kubernetes.io/instance: clamav-simple app.kubernetes.io/managed-by: Helm spec: serviceName: clamav-simple replicas: 1 selector: matchLabels: app.kubernetes.io/name: clamav-simple app.kubernetes.io/instance: clamav-simple updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: f140466c45580b59c5bb65ebdbc7126f93642bb7e6c6406adf40e003032a3586 labels: app.kubernetes.io/name: clamav-simple helm.sh/chart: clamav-simple-4.0.6 app.kubernetes.io/instance: clamav-simple app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: clamav-simple initContainers: - name: "chown" image: "registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f" securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: false seccompProfile: type: RuntimeDefault imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - "chown -R clamav:clamav /var/lib/clamav" volumeMounts: - name: "clamav-database" mountPath: "/var/lib/clamav/" resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1.5Gi containers: - name: "clamav" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 100 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f" imagePullPolicy: IfNotPresent env: - name: "CLAMAV_NO_CLAMD" value: "false" - name: "CLAMAV_NO_FRESHCLAMD" value: "false" - name: "CLAMAV_NO_MILTERD" value: "false" ports: - name: "clamd" containerPort: 3310 protocol: TCP - name: "milter" containerPort: 7357 protocol: TCP livenessProbe: tcpSocket: port: "clamd" initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: tcpSocket: port: "clamd" initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1.5Gi volumeMounts: - name: "config" mountPath: "/etc/clamav" - name: "clamav-database" mountPath: "/var/lib/clamav/" - name: "tmpfs-run-clamav" mountPath: "/run/clamav" - name: "tmpfs-run-lock" mountPath: "/run/lock" - name: "tmpfs-var-lock" mountPath: "/var/lock" - name: "tmpfs-var-log-clamav-log" mountPath: "/var/log/clamav/" - name: "tmpfs-tmp-dir" mountPath: "/var/tmp" - name: "tmpfs-tmp" mountPath: "/tmp" - name: "icap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 100 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/clamav-icap:0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a" imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - | while ! nc -z 127.0.0.1 3310; do echo 'Clamd not responding, please check if clamd is running'; sleep 5; done; /var/lib/clamav/bin/c-icap -N -D; env: ports: - name: "icap" containerPort: 1344 protocol: TCP livenessProbe: tcpSocket: port: "icap" initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: tcpSocket: port: "icap" initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1.5Gi volumeMounts: - name: "c-icap" mountPath: "/var/lib/clamav/etc/c-icap.conf" subPath: "c-icap.conf" - name: "virus-scan" mountPath: "/var/lib/clamav/etc/virus_scan.conf" subPath: "virus_scan.conf" - name: "clamd-mod" mountPath: "/var/lib/clamav/etc/clamd_mod.conf" subPath: "clamd_mod.conf" - name: "tmpfs-var-run" mountPath: "/var/run/c-icap" - name: "tmpfs-tmp" mountPath: "/tmp" - name: "tmpfs-tmp-dir" mountPath: "/var/tmp" volumes: - name: "config" configMap: name: "clamav-simple" - name: "c-icap" configMap: name: "clamav-simple" items: - key: "c-icap.conf" path: "c-icap.conf" - name: "virus-scan" configMap: name: "clamav-simple" items: - key: "virus_scan.conf" path: "virus_scan.conf" - name: "clamd-mod" configMap: name: "clamav-simple" items: - key: "clamd_mod.conf" path: "clamd_mod.conf" - name: "tmpfs-run-clamav" emptyDir: {} - name: "tmpfs-run-lock" emptyDir: {} - name: "tmpfs-var-lock" emptyDir: {} - name: "tmpfs-var-log-clamav-log" emptyDir: {} - name: "tmpfs-var-run" emptyDir: - name: "tmpfs-tmp" emptyDir: - name: "tmpfs-tmp-dir" emptyDir: sizeLimit: "1Gi" volumeClaimTemplates: - metadata: name: "clamav-database" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: minio/templates/provisioning-networkpolicy.yaml kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: minio-provisioning namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 spec: podSelector: matchLabels: app.kubernetes.io/component: minio-provisioning policyTypes: - Ingress - Egress egress: - {} ingress: --- # Source: minio/templates/pdb.yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 spec: maxUnavailable: 1 selector: matchLabels: app.kubernetes.io/instance: minio app.kubernetes.io/name: minio --- # Source: minio/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 automountServiceAccountToken: false secrets: - name: minio --- # Source: minio/templates/secrets.yaml apiVersion: v1 kind: Secret metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 type: Opaque data: root-user: "YWRtaW4=" root-password: "M2M4MGRiOTRiNjE0NTMwNjZjOWI5NjkzNjFkZTE0ZjY2ZDVhNjExYg==" --- # Source: minio/templates/provisioning-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: minio-provisioning namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 app.kubernetes.io/component: minio-provisioning data: policy-migrations-bucket-policy.json: | { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::migrations"] }, { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::migrations/*"] } ] } policy-nextcloud-bucket-policy.json: | { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::nextcloud"] }, { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::nextcloud/*"] } ] } policy-notes-bucket-policy.json: | { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::notes"] }, { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::notes/*"] } ] } policy-openproject-bucket-policy.json: | { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::openproject"] }, { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::openproject/*"] } ] } policy-ums-bucket-policy.json: | { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::ums"] }, { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::ums/*"] } ] } --- # Source: minio/templates/pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "10Gi" --- # Source: minio/templates/service.yaml apiVersion: v1 kind: Service metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 spec: type: ClusterIP ports: - name: minio-api port: 9000 targetPort: minio-api nodePort: null - name: minio-console port: 9001 targetPort: minio-console nodePort: null selector: app.kubernetes.io/instance: minio app.kubernetes.io/name: minio --- # Source: minio/templates/standalone/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: minio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 spec: selector: matchLabels: app.kubernetes.io/instance: minio app.kubernetes.io/name: minio strategy: type: Recreate template: metadata: labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 annotations: checksum/credentials-secret: 97b540812be151f47c01d33b7e977f90b6b76ba8c66b8c9d878b492ad396ae94 spec: serviceAccountName: minio affinity: podAffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/instance: minio app.kubernetes.io/name: minio topologyKey: kubernetes.io/hostname weight: 1 nodeAffinity: automountServiceAccountToken: false securityContext: fsGroup: 1001 fsGroupChangePolicy: OnRootMismatch supplementalGroups: [] sysctls: [] initContainers: - name: volume-permissions image: registry-1.docker.io/bitnami/os-shell:12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 imagePullPolicy: "IfNotPresent" command: - /bin/bash - -ec - | chown -R 1001:1001 /bitnami/minio/data securityContext: runAsUser: 0 seLinuxOptions: {} resources: limits: cpu: 150m ephemeral-storage: 2Gi memory: 192Mi requests: cpu: 100m ephemeral-storage: 50Mi memory: 128Mi volumeMounts: - name: empty-dir mountPath: /tmp subPath: tmp-dir - name: data mountPath: /bitnami/minio/data containers: - name: minio image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seccompProfile: type: RuntimeDefault env: - name: BITNAMI_DEBUG value: "false" - name: MINIO_SCHEME value: "http" - name: MINIO_FORCE_NEW_KEYS value: "no" - name: MINIO_API_PORT_NUMBER value: "9000" - name: MINIO_ROOT_USER valueFrom: secretKeyRef: name: minio key: root-user - name: MINIO_ROOT_PASSWORD valueFrom: secretKeyRef: name: minio key: root-password - name: MINIO_BROWSER value: "on" - name: MINIO_PROMETHEUS_AUTH_TYPE value: "public" - name: MINIO_CONSOLE_PORT_NUMBER value: "9001" - name: MINIO_DATA_DIR value: "/bitnami/minio/data" envFrom: ports: - name: minio-api containerPort: 9000 protocol: TCP - name: minio-console containerPort: 9001 protocol: TCP livenessProbe: httpGet: path: /minio/health/live port: minio-api scheme: "HTTP" initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 10 successThreshold: 1 failureThreshold: 5 readinessProbe: tcpSocket: port: minio-api initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 10 successThreshold: 1 failureThreshold: 5 startupProbe: tcpSocket: port: minio-console initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 10 successThreshold: 1 failureThreshold: 60 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 256Mi volumeMounts: - name: empty-dir mountPath: /tmp subPath: tmp-dir - name: empty-dir mountPath: /opt/bitnami/minio/tmp subPath: app-tmp-dir - name: empty-dir mountPath: /.mc subPath: app-mc-dir - name: data mountPath: /bitnami/minio/data volumes: - name: empty-dir emptyDir: {} - name: data persistentVolumeClaim: claimName: minio --- # Source: minio/templates/api-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: minio-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 annotations: nginx.ingress.kubernetes.io/proxy-body-size: 4G nginx.org/client-max-body-size: 4G spec: ingressClassName: "nginx" rules: - host: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: / pathType: ImplementationSpecific backend: service: name: minio port: name: minio-api tls: - hosts: - objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de secretName: opendesk-certificates-tls --- # Source: minio/templates/provisioning-job.yaml apiVersion: batch/v1 kind: Job metadata: name: minio-provisioning namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: minio app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: minio app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 app.kubernetes.io/component: minio-provisioning annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation spec: ttlSecondsAfterFinished: 60 parallelism: 1 template: metadata: labels: app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: 2024.12.13 helm.sh/chart: minio-14.10.1 app.kubernetes.io/component: minio-provisioning spec: restartPolicy: OnFailure terminationGracePeriodSeconds: 0 securityContext: fsGroup: 1001 fsGroupChangePolicy: Always supplementalGroups: [] sysctls: [] serviceAccountName: minio initContainers: - name: wait-for-available-minio image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: {} seccompProfile: type: RuntimeDefault command: - /bin/bash - -c - |- set -e; echo "Waiting for Minio"; wait-for-port \ --host=minio \ --state=inuse \ --timeout=120 \ 9000; echo "Minio is available"; resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 256Mi containers: - name: minio image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: {} seccompProfile: type: RuntimeDefault command: - /bin/bash - -c - |- set -e; echo "Start Minio provisioning"; function attachPolicy() { local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: \(.*\)$/\1/p'); IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp"; if [[ ! "${CURRENT_POLICIES[*]}" =~ "$3" ]]; then mc admin policy attach provisioning $3 --$1=$2; fi; }; function detachDanglingPolicies() { local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: \(.*\)$/\1/p'); IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp"; IFS=',' read -r -a DESIRED_POLICIES <<< "$3"; for current in "${CURRENT_POLICIES[@]}"; do if [[ ! "${DESIRED_POLICIES[*]}" =~ "${current}" ]]; then mc admin policy detach provisioning $current --$1=$2; fi; done; } function addUsersFromFile() { local username=$(grep -oP '^username=\K.+' $1); local password=$(grep -oP '^password=\K.+' $1); local disabled=$(grep -oP '^disabled=\K.+' $1); local policies_list=$(grep -oP '^policies=\K.+' $1); local set_policies=$(grep -oP '^setPolicies=\K.+' $1); mc admin user add provisioning "${username}" "${password}"; IFS=',' read -r -a POLICIES <<< "${policies_list}"; for policy in "${POLICIES[@]}"; do attachPolicy user "${username}" "${policy}"; done; if [ "${set_policies}" == "true" ]; then detachDanglingPolicies user "${username}" "${policies_list}"; fi; local user_status="enable"; if [[ "${disabled}" != "" && "${disabled,,}" == "true" ]]; then user_status="disable"; fi; mc admin user "${user_status}" provisioning "${username}"; }; mc alias set provisioning $MINIO_SCHEME://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD; mc admin service restart provisioning --wait --json; # Adding a sleep to ensure that the check below does not cause # a race condition. We check for the MinIO port because the # "mc admin service restart --wait" command is not working as expected sleep 5; echo "Waiting for Minio to be available after restart"; wait-for-port \ --host=minio \ --state=inuse \ --timeout=120 \ 9000; echo "Minio is available. Executing provisioning commands"; mc admin policy create provisioning migrations-bucket-policy /etc/ilm/policy-migrations-bucket-policy.json; mc admin policy create provisioning nextcloud-bucket-policy /etc/ilm/policy-nextcloud-bucket-policy.json; mc admin policy create provisioning notes-bucket-policy /etc/ilm/policy-notes-bucket-policy.json; mc admin policy create provisioning openproject-bucket-policy /etc/ilm/policy-openproject-bucket-policy.json; mc admin policy create provisioning ums-bucket-policy /etc/ilm/policy-ums-bucket-policy.json; mc admin user add provisioning migration_user 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8; attachPolicy user migration_user migrations-bucket-policy; detachDanglingPolicies user migration_user "migrations-bucket-policy"; mc admin user enable provisioning migration_user; mc admin user add provisioning nextcloud_user cd58fb1bf965a7605e316b394f11ae9c67b3220f; attachPolicy user nextcloud_user nextcloud-bucket-policy; detachDanglingPolicies user nextcloud_user "nextcloud-bucket-policy"; mc admin user enable provisioning nextcloud_user; mc admin user add provisioning notes_user 5c58820a84259ce3b869bfc267b53437f49d9902; attachPolicy user notes_user notes-bucket-policy; detachDanglingPolicies user notes_user "notes-bucket-policy"; mc admin user enable provisioning notes_user; mc admin user add provisioning openproject_user 200f449601dec2cd474d0695f4f802493413f322; attachPolicy user openproject_user openproject-bucket-policy; detachDanglingPolicies user openproject_user "openproject-bucket-policy"; mc admin user enable provisioning openproject_user; mc admin user add provisioning ums_user 915f15805278ef774a1cf3abfa6b8623c1fa4544; attachPolicy user ums_user ums-bucket-policy; detachDanglingPolicies user ums_user "ums-bucket-policy"; mc admin user enable provisioning ums_user; mc mb provisioning/migrations --ignore-existing ; mc version suspend provisioning/migrations; mc mb provisioning/nextcloud --ignore-existing ; mc version suspend provisioning/nextcloud; mc mb provisioning/notes --ignore-existing ; mc version enable provisioning/notes; mc mb provisioning/openproject --ignore-existing ; mc version suspend provisioning/openproject; mc mb provisioning/ums --ignore-existing ; mc version suspend provisioning/ums; mc anonymous set download provisioning/ums/portal-assets; echo "End Minio provisioning"; env: - name: MINIO_SCHEME value: "http" - name: MINIO_ROOT_USER valueFrom: secretKeyRef: name: minio key: root-user - name: MINIO_ROOT_PASSWORD valueFrom: secretKeyRef: name: minio key: root-password envFrom: resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 256Mi volumeMounts: - name: empty-dir mountPath: /.mc subPath: app-mc-dir - name: empty-dir mountPath: /opt/bitnami/minio/tmp subPath: app-tmp-dir - name: empty-dir mountPath: /tmp subPath: tmp-dir - name: minio-provisioning mountPath: /etc/ilm volumes: - name: empty-dir emptyDir: {} - name: minio-provisioning configMap: name: minio-provisioning --- # Source: nubus/charts/keycloak/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-keycloak namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak helm.sh/chart: keycloak-0.9.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-guardian namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-keycloak-bootstrap namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-handler.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-keycloak-extensions-handler labels: app.kubernetes.io/name: keycloak-extensions helm.sh/chart: nubusKeycloakExtensions-0.16.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "21.0.1" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-proxy.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-keycloak-extensions-proxy labels: app.kubernetes.io/name: keycloak-extensions helm.sh/chart: nubusKeycloakExtensions-0.16.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "21.0.1" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusLdapNotifier/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-ldap-notifier namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-notifier helm.sh/chart: nubusLdapNotifier-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "14.0.4" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: ums-ldap-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm --- # Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-portal-frontend namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-portal-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-server automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusProvisioning/charts/nats/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-provisioning-nats namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-provisioning-nats automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-provisioning namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-selfservice-listener namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: selfservice-listener helm.sh/chart: nubusSelfServiceConsumer-0.14.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-stack-data-ums namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusUdmListener/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-provisioning-udm-listener namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-udm-listener helm.sh/chart: nubusUdmListener-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusUdmRestApi/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-udm-rest-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: intended.usage: compliance intents.otterize.com/service-name: ums-udm-rest-api automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusUmcGateway/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-umc-gateway namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-gateway helm.sh/chart: nubusUmcGateway-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusUmcServer/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: ums-umc-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server automountServiceAccountToken: false ... --- # Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: ums-portal-consumer-common namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-consumer helm.sh/chart: nubusPortalConsumer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: machine_secret: "" ca_cert: "" cert_pem: "" --- # Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-stack-data-ums-context" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums type: Opaque stringData: context.yaml: | apps: cassandra: enabled: false namespace: null certificates: enabled: true namespace: null clamavDistributed: enabled: false namespace: null clamavSimple: enabled: true namespace: null collabora: enabled: true namespace: null collaboraController: enabled: false namespace: null cryptpad: enabled: true namespace: null dkimpy: enabled: false namespace: null dovecot: enabled: true namespace: null element: enabled: true namespace: null elementAdmin: enabled: false namespace: null elementGroupsync: enabled: false namespace: null home: enabled: true namespace: null jitsi: enabled: false namespace: null mariadb: enabled: true namespace: null memcached: enabled: true namespace: null migrations: enabled: true namespace: null minio: enabled: true namespace: null nextcloud: enabled: true namespace: null notes: enabled: true namespace: null nubus: enabled: true namespace: null openproject: enabled: true namespace: null oxAppSuite: enabled: true namespace: null postfix: enabled: true namespace: null postgresql: enabled: true namespace: null redis: enabled: true namespace: null staticFiles: enabled: true namespace: null xwiki: enabled: true namespace: null defaultGroupOtherObjects: cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal domainName: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' enableDefaultLogin: 'false' externalMailDomain: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' initialPasswordAdministrator: 937393b22852fc828b0d68283dddcb9f8fb97411 ldapBaseDn: 'dc=swp-ldap,dc=internal' ldapSearchUsers: - lastname: LDAP-Search-User password: 40290e376095d33c0c650723efa007abec1ee3fd username: ldapsearch_dovecot - lastname: LDAP-Search-User password: 96380258a941863a5f9ecf74f3f88f1b563cae35 username: ldapsearch_element - lastname: LDAP-Search-User password: 6f85092e969e10c851eef49367019d1e02a4a8a0 username: ldapsearch_keycloak - lastname: LDAP-Search-User password: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 username: ldapsearch_nextcloud - lastname: LDAP-Search-User password: 9c96f85df1170aaa929a6763111ff9472b2d109f username: ldapsearch_openproject - lastname: LDAP-Search-User password: 57356bf92e475164a8c4522dfd8453bb162094d4 username: ldapsearch_ox - lastname: LDAP-Search-User password: 8072148becdef928e46f5686560bbbcd9c9a4284 username: ldapsearch_xwiki ldapSystemUsers: [] loadDevData: true opendeskAdminAttributes: true opendeskEnterprise: null opendeskGroupAttributes: true opendeskUserAttributes: true oxContextHidden: true oxDefaultContext: "1" portalEnforceLogin: true portalFileshareLinkBase: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalGroupwareLinkBase: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalHeaderLogo: | PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg== portalLinkLegalNotice: https://opendesk.eu/impressum portalLinkPrivacyStatement: https://zendis.de/datenschutzerklaerung portalManagementKnowledgeLinkBase: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalManagementProjectLinkBase: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalNotesLinkBase: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalRealtimeCollaborationLinkBase: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalRealtimeVideoconferenceLinkBase: https://meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de portalTiles: adminAnnouncement: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNzE2LjkyLTQ2MHYtNDBoMTI5LjIzdjQwSDcxNi45MlptNDMuMzkgMjU4LjQ2LTEwMy4zOS03Ny41NCAyNC45My0zMS42OSAxMDMuMzggNzcuNTQtMjQuOTIgMzEuNjlabS04MS41NC00NTAuNzdMNjUzLjg1LTY4NGwxMDMuMzgtNzcuNTQgMjQuOTIgMzEuNjktMTAzLjM4IDc3LjU0Wk0yMjAtMjQxLjU0di0xNTIuMzFoLTQxLjU0cS0yNi44NCAwLTQ1LjczLTE4Ljg4LTE4Ljg4LTE4Ljg5LTE4Ljg4LTQ1Ljczdi00My4wOHEwLTI2Ljg0IDE4Ljg4LTQ1LjczIDE4Ljg5LTE4Ljg4IDQ1LjczLTE4Ljg4aDE0OS4yM0w0ODYuMTUtNjYwdjM2MGwtMTU4LjQ2LTkzLjg1SDI2MHYxNTIuMzFoLTQwWm0yMjYuMTUtMTI5LjY5di0yMTcuNTRsLTEwNy4yMyA2Mi42MkgxNzguNDZxLTkuMjMgMC0xNi45MiA3LjY5LTcuNjkgNy42OS03LjY5IDE2LjkydjQzLjA4cTAgOS4yMyA3LjY5IDE2LjkyIDcuNjkgNy42OSAxNi45MiA3LjY5aDE2MC40NmwxMDcuMjMgNjIuNjJabTExMC43NyA2Ljc3di0yMzEuMDhxMjAuMDggMTguNjIgMzIuMzUgNDguODkgMTIuMjcgMzAuMjcgMTIuMjcgNjYuNjUgMCAzNi4zOC0xMi4yNyA2Ni42NS0xMi4yNyAzMC4yNy0zMi4zNSA0OC44OVpNMzAwLTQ4MFoiLz48L3N2Zz4K adminContext: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== adminFunctionalmailbox: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNjAwLTI0MHY4OS4yM3EwIDEyLjM5LTkuMTkgMjEuNTgtOS4xOSA5LjE5LTIxLjU4IDkuMTlIMTUwLjc3cS0xMi4zOSAwLTIxLjU4LTkuMTktOS4xOS05LjE5LTkuMTktMjEuNTh2LTI1OC40NnEwLTEyLjM5IDkuMTktMjEuNTggOS4xOS05LjE5IDIxLjU4LTkuMTlIMjgwdi0yMDBxMC04My4wOCA1OC40Ni0xNDEuNTRRMzk2LjkyLTg0MCA0ODAtODQwaDE2MHE4My4wOCAwIDE0MS41NCA1OC40NlE4NDAtNzIzLjA4IDg0MC02NDB2NTIwaC00MHYtMTIwSDYwMFptMC00MGgyMDB2LTM2MHEwLTY2LTQ3LTExM3QtMTEzLTQ3SDQ4MHEtNjYgMC0xMTMgNDd0LTQ3IDExM3YyMDBoMjQ5LjIzcTEyLjM5IDAgMjEuNTggOS4xOSA5LjE5IDkuMTkgOS4xOSAyMS41OFYtMjgwWk00MjAtNTgwdi00MGgyODB2NDBINDIwWm0tNjAgMjk0IDIwMC0xMTRIMTYwbDIwMCAxMTRabTAgNDAuNzctMjAwLTExNFYtMTYwaDQwMHYtMTk5LjIzbC0yMDAgMTE0Wk0xNjAtNDAwdjI0MC0yNDBaIi8+PC9zdmc+ adminGroup: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTAzLjg1LTIxNS4zOHYtNjUuODVxMC0yNy44NSAxNC40Mi00Ny44OSAxNC40Mi0yMC4wMyAzOC43Ni0zMi4wMiA1Mi4wNS0yNC43OCAxMDMuMzUtMzkuNTEgNTEuMzEtMTQuNzMgMTIzLjQ3LTE0LjczIDcyLjE1IDAgMTIzLjQ2IDE0LjczIDUxLjMxIDE0LjczIDEwMy4zNSAzOS41MSAyNC4zNCAxMS45OSAzOC43NiAzMi4wMiAxNC40MyAyMC4wNCAxNC40MyA0Ny44OXY2NS44NWgtNTYwWm02NDAgMHYtNjcuN3EwLTM0Ljc3LTE0LjA4LTY1LjY0LTE0LjA3LTMwLjg3LTM5LjkyLTUyLjk3IDI5LjQ2IDYgNTYuNzcgMTYuNjUgMjcuMyAxMC42NiA1NCAyMy45NiAyNiAxMy4wOCA0MC43NyAzMy40NyAxNC43NiAyMC40IDE0Ljc2IDQ0LjUzdjY3LjdoLTExMi4zWm0tMzYwLTI4OS4yNHEtNDkuNSAwLTg0Ljc1LTM1LjI1dC0zNS4yNS04NC43NXEwLTQ5LjUgMzUuMjUtODQuNzV0ODQuNzUtMzUuMjVxNDkuNSAwIDg0Ljc1IDM1LjI1dDM1LjI1IDg0Ljc1cTAgNDkuNS0zNS4yNSA4NC43NXQtODQuNzUgMzUuMjVabTI5MC43Ny0xMjBxMCA0OS41LTM1LjI1IDg0Ljc1dC04NC43NSAzNS4yNXEtMi41NCAwLTYuNDctLjU3LTMuOTItLjU4LTYuNDYtMS4yNyAyMC4zMy0yNC45IDMxLjI0LTU1LjI0IDEwLjkyLTMwLjM0IDEwLjkyLTYzLjAxdC0xMS40My02Mi40NHEtMTEuNDItMjkuNzctMzAuNzMtNTUuNjIgMy4yMy0xLjE1IDYuNDYtMS41IDMuMjMtLjM1IDYuNDctLjM1IDQ5LjUgMCA4NC43NSAzNS4yNXQzNS4yNSA4NC43NVpNMTQzLjg1LTI1NS4zOGg0ODB2LTI1Ljg1cTAtMTQuMDgtNy4wNC0yNC42Mi03LjA0LTEwLjUzLTI1LjI3LTIwLjE1LTQ0Ljc3LTIzLjkyLTk0LjM5LTM2LjY1LTQ5LjYxLTEyLjczLTExMy4zLTEyLjczLTYzLjcgMC0xMTMuMzEgMTIuNzMtNDkuNjIgMTIuNzMtOTQuMzkgMzYuNjUtMTguMjMgOS42Mi0yNS4yNyAyMC4xNS03LjAzIDEwLjU0LTcuMDMgMjQuNjJ2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wIDI4OS4yNFptMC0zNjkuMjRaIi8+PC9zdmc+ adminResource: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTgwLTE2MHYtNDBoODB2LTYwMGgzMjB2NDBoMTIwdjU2MGg4MHY0MEg2NjB2LTU2MGgtODB2NTYwSDE4MFptMTIwLTYwMHY1NjAtNTYwWm0xNjAgMzEwLjc3cTEyLjM4IDAgMjEuNTgtOS4xOSA5LjE5LTkuMiA5LjE5LTIxLjU4IDAtMTIuMzgtOS4xOS0yMS41OC05LjItOS4xOS0yMS41OC05LjE5LTEyLjM4IDAtMjEuNTggOS4xOS05LjE5IDkuMi05LjE5IDIxLjU4IDAgMTIuMzggOS4xOSAyMS41OCA5LjIgOS4xOSAyMS41OCA5LjE5Wk0zMDAtMjAwaDI0MHYtNTYwSDMwMHY1NjBaIi8+PC9zdmc+ adminUser: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTUwNC42MnEtNDkuNSAwLTg0Ljc1LTM1LjI1VDM2MC02MjQuNjJxMC00OS41IDM1LjI1LTg0Ljc1VDQ4MC03NDQuNjJxNDkuNSAwIDg0Ljc1IDM1LjI1VDYwMC02MjQuNjJxMCA0OS41LTM1LjI1IDg0Ljc1VDQ4MC01MDQuNjJaTTIwMC0yMTUuMzh2LTY1Ljg1cTAtMjQuNzcgMTQuNDItNDYuMzUgMTQuNDMtMjEuNTcgMzguODEtMzMuNSA1Ni42Mi0yNy4xNSAxMTMuMzEtNDAuNzMgNTYuNjktMTMuNTcgMTEzLjQ2LTEzLjU3IDU2Ljc3IDAgMTEzLjQ2IDEzLjU3IDU2LjY5IDEzLjU4IDExMy4zMSA0MC43MyAyNC4zOCAxMS45MyAzOC44MSAzMy41UTc2MC0zMDYgNzYwLTI4MS4yM3Y2NS44NUgyMDBabTQwLTQwaDQ4MHYtMjUuODVxMC0xMy4zMS04LjU4LTI1LTguNTctMTEuNjktMjMuNzMtMTkuNzctNDkuMzgtMjMuOTItMTAxLjgzLTM2LjY1LTUyLjQ1LTEyLjczLTEwNS44Ni0xMi43M3QtMTA1Ljg2IDEyLjczUTMyMS42OS0zNDkuOTIgMjcyLjMxLTMyNnEtMTUuMTYgOC4wOC0yMy43MyAxOS43Ny04LjU4IDExLjY5LTguNTggMjV2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wLTgwWm0wIDM2OS4yNFoiLz48L3N2Zz4= anonymousLogin: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjguNjc3OCA4MC4xMTQ1VjgxLjY1NjVDNjguNjc3OCA4OC4xNjQ3IDYzLjQ0OTggOTMuNDU2NyA1Ny4wMjAzIDkzLjQ1NjdIMjkuNjU3NEMyMy4yMjc5IDkzLjQ1NjcgMTcuOTk5OSA4OC4xNjQ3IDE3Ljk5OTkgODEuNjU2NVY1My45NTg2QzE3Ljk5OTkgNDcuNDUwMyAyMy4yMjc5IDQyLjE1ODMgMjkuNjU3NCA0Mi4xNTgzSDMxLjE4MDdWODAuMTIxOEg2OC42ODQ5TDY4LjY3NzggODAuMTE0NVoiIGZpbGw9IiM4RTc1RkEiLz4KPHBhdGggZD0iTTY5LjE4NTYgNzAuODc3SDQwLjI5OTNWMzguNTUzQzQwLjI5OTMgMjcuNTIwMiA0OS4xNjc2IDE4LjU0MzMgNjAuMDY3IDE4LjU0MzNINjkuMTkyN0M4MS43NjU2IDE4LjU0MzMgOTEuOTk5OSAyOC45MDI5IDkxLjk5OTkgNDEuNjI5OFY0Ny43ODMzQzkxLjk5OTkgNjAuNTEwMiA4MS43NjU2IDcwLjg2OTcgNjkuMTkyNyA3MC44Njk3TDY5LjE4NTYgNzAuODc3Wk01My40NzMgNTcuNTM0OEg2OS4xODU2Qzc0LjQ5MjIgNTcuNTM0OCA3OC44MTE5IDUzLjE2MjIgNzguODExOSA0Ny43OTA1VjQxLjYzN0M3OC44MTE5IDM2LjI2NTQgNzQuNDkyMiAzMS44OTI4IDY5LjE4NTYgMzEuODkyOEg2MC4wNTk4QzU2LjQyNjcgMzEuODkyOCA1My40NzMgMzQuODgyNyA1My40NzMgMzguNTYwM1Y1Ny41NDJWNTcuNTM0OFoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg== empty: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== fileshareActivity: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== fileshareDirectdocOdp: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTQ4MFpNMjI0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE2MC0xOTcgMTYwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExOTctODAwIDIyNC42Mi04MDBoMjgwdjQwaC0yODBxLTEwLjc3IDAtMTcuNyA2LjkyLTYuOTIgNi45My02LjkyIDE3Ljd2NTEwLjc2cTAgMTAuNzcgNi45MiAxNy43IDYuOTMgNi45MiAxNy43IDYuOTJoNTEwLjc2cTEwLjc3IDAgMTcuNy02LjkyIDYuOTItNi45MyA2LjkyLTE3Ljd2LTI4MGg0MHYyODBxMCAyNy42Mi0xOC41IDQ2LjEyUTc2My0xNjAgNzM1LjM4LTE2MEgyMjQuNjJabTQ2LjE1LTE0NC42Mmg0MTguNDZMNTYwLTQ3Ni45MiA0NDAtMzI1LjM4bC04MC05Ni4xNi04OS4yMyAxMTYuOTJaTTY4MC02MDB2LTgwaC04MHYtNDBoODB2LTgwaDQwdjgwaDgwdjQwaC04MHY4MGgtNDBaIi8+PC9zdmc+ fileshareDirectdocOds: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS0xMC43NyAwLTE3LjcgNi45Mi02LjkyIDYuOTMtNi45MiAxNy43djUxMC43NnEwIDEwLjc3IDYuOTIgMTcuNyA2LjkzIDYuOTIgMTcuNyA2LjkyaDUxMC43NnExMC43NyAwIDE3LjctNi45MiA2LjkyLTYuOTMgNi45Mi0xNy43di0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlptODQuNjEtMTQwaDQwdi0yNDBoLTQwdjI0MFpNNDQwLTMwMGg0MHYtMzYwaC00MHYzNjBabTE1MC43NyAwaDQwdi0xMjBoLTQwdjEyMFpNNzAwLTY0MHYtODBoLTgwdi00MGg4MHYtODBoNDB2ODBoODB2NDBoLTgwdjgwaC00MFpNNDYwLTQ4MFoiLz48L3N2Zz4= fileshareDirectdocOdt: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS05LjI0IDAtMTYuOTMgNy42OS03LjY5IDcuNjktNy42OSAxNi45M3Y1MTAuNzZxMCA5LjI0IDcuNjkgMTYuOTMgNy42OSA3LjY5IDE2LjkzIDcuNjloNTEwLjc2cTkuMjQgMCAxNi45My03LjY5IDcuNjktNy42OSA3LjY5LTE2Ljkzdi0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlpNMzIwLTMwMHYtNDBoMjgwdjQwSDMyMFptMC0xMjB2LTQwaDI4MHY0MEgzMjBabTAtMTIwdi00MGgyODB2NDBIMzIwWm0zODAtMTAwdi04MGgtODB2LTQwaDgwdi04MGg0MHY4MGg4MHY0MGgtODB2ODBoLTQwWiIvPjwvc3ZnPg== fileshareFiles: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMDcxOCA0My44MjE0SDc4LjYxNDZDODIuOTEzNCA0My44MjE0IDg2LjQwOTYgNDcuMzE3NiA4Ni40MDk2IDUxLjYxNjRWNzQuOTkwM0M4Ni40MDk2IDc5LjI4OTEgODIuOTEzNCA4Mi43ODUyIDc4LjYxNDYgODIuNzg1MkgzMS44NjY3QzI3LjU2OCA4Mi43ODUyIDI0LjA3MTggNzkuMjg5MSAyNC4wNzE4IDc0Ljk5MDNWNDMuODIxNFoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTUwLjU1NzEgMzYuMDI2NkgyNC4wNzE4VjMxLjM1NEMyNC4wNzE4IDI3LjA0NDIgMjcuNTU3IDIzLjU1OSAzMS44NjY3IDIzLjU1OUg0NC4zMzQzTDUwLjU2ODEgMzYuMDI2Nkg1MC41NTcxWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K groupwareCalendar: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzYuNzk3OSA2MC4yMjAzSDE0Ljk4NDFWODMuNTk1M0gzNi43OTc5VjYwLjIyMDNaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Ni40MDY5IDYwLjIyMDNINDQuNTkzMVY4My41OTUzSDY2LjQwNjlWNjAuMjIwM1oiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTM2Ljc5NzkgMjkuMDYwOUgxNC45ODQxVjUyLjQzNTlIMzYuNzk3OVYyOS4wNjA5WiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNNjYuNDA2OSAyOS4wNjA5SDQ0LjU5MzFWNTIuNDM1OUg2Ni40MDY5VjI5LjA2MDlaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Ni4wMTU5IDI5LjA2MDlINzQuMjAyMVY1Mi40MzU5SDk2LjAxNTlWMjkuMDYwOVoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg== groupwareContacts: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzMuNjg2MyA1My45ODYxQzQwLjE0MTEgNTMuOTg2MSA0NS4zNzM4IDQ4Ljc1MzQgNDUuMzczOCA0Mi4yOTg2QzQ1LjM3MzggMzUuODQzOCA0MC4xNDExIDMwLjYxMTEgMzMuNjg2MyAzMC42MTExQzI3LjIzMTUgMzAuNjExMSAyMS45OTg4IDM1Ljg0MzggMjEuOTk4OCA0Mi4yOTg2QzIxLjk5ODggNDguNzUzNCAyNy4yMzE1IDUzLjk4NjEgMzMuNjg2MyA1My45ODYxWiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNzcuMzEzNyA1My45ODYxQzgzLjc2ODUgNTMuOTg2MSA4OS4wMDEyIDQ4Ljc1MzQgODkuMDAxMiA0Mi4yOTg2Qzg5LjAwMTIgMzUuODQzOCA4My43Njg1IDMwLjYxMTEgNzcuMzEzNyAzMC42MTExQzcwLjg1ODkgMzAuNjExMSA2NS42MjYyIDM1Ljg0MzggNjUuNjI2MiA0Mi4yOTg2QzY1LjYyNjIgNDguNzUzNCA3MC44NTg5IDUzLjk4NjEgNzcuMzEzNyA1My45ODYxWiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNMTQuOTg0MSA4MC40ODM2QzE0Ljk4NDEgNzAuMTU5NCAyMy4zNTEyIDYxLjc4MTQgMzMuNjg2MyA2MS43ODE0QzQ0LjAyMTUgNjEuNzgxNCA1Mi4zODg1IDcwLjE0ODQgNTIuMzg4NSA4MC40ODM2SDE0Ljk4NDFaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik01OC42MTE2IDgwLjQ4MzZDNTguNjExNiA3MC4xNTk0IDY2Ljk3ODYgNjEuNzgxNCA3Ny4zMTM4IDYxLjc4MTRDODcuNjQ4OSA2MS43ODE0IDk2LjAxNiA3MC4xNDg0IDk2LjAxNiA4MC40ODM2SDU4LjYxMTZaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= groupwareMail: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== groupwareTasks: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjYuNjcxNiA1Mi40MzZDMzMuMTI2NSA1Mi40MzYgMzguMzU5MSA0Ny4yMDMzIDM4LjM1OTEgNDAuNzQ4NUMzOC4zNTkxIDM0LjI5MzYgMzMuMTI2NSAyOS4wNjEgMjYuNjcxNiAyOS4wNjFDMjAuMjE2OCAyOS4wNjEgMTQuOTg0MSAzNC4yOTM2IDE0Ljk4NDEgNDAuNzQ4NUMxNC45ODQxIDQ3LjIwMzMgMjAuMjE2OCA1Mi40MzYgMjYuNjcxNiA1Mi40MzZaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Mi45MDQzIDM2Ljg0NTVINDYuMTU0M1Y0NC42NDA4SDkyLjkwNDNWMzYuODQ1NVoiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTI2LjY3MTYgODIuMDM0MUMzMy4xMjY1IDgyLjAzNDEgMzguMzU5MSA3Ni44MDE0IDM4LjM1OTEgNzAuMzQ2NkMzOC4zNTkxIDYzLjg5MTcgMzMuMTI2NSA1OC42NTkxIDI2LjY3MTYgNTguNjU5MUMyMC4yMTY4IDU4LjY1OTEgMTQuOTg0MSA2My44OTE3IDE0Ljk4NDEgNzAuMzQ2NkMxNC45ODQxIDc2LjgwMTQgMjAuMjE2OCA4Mi4wMzQxIDI2LjY3MTYgODIuMDM0MVoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTkyLjkwNDMgNjYuNDU0M0g0Ni4xNTQzVjc0LjI0OTdIOTIuOTA0M1Y2Ni40NTQzWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K managementKnowledge: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K managementProject: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= notes: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNODMuNTQ3OSA3OC45MjI1SDI3LjU5NTJWODYuNzE3OEg4My41NDc5Vjc4LjkyMjVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik02Ni41NDk3IDI2LjUyMTFMNzIuMDU4MiAzMi4wMjk1Qzc1LjEwMzcgMzUuMDc1MSA3NS4xMDM3IDQwLjAwMDggNzIuMDU4MiA0My4wNDYzTDY2LjIwODkgNDguODk1Nkw0My45Nzc0IDcxLjEyNzFIMjcuNDUyMVY1NC42MDE5TDQ5LjY4MzcgMzIuMzcwNEw1NS41MzI5IDI2LjUyMTFDNTguNTc4NSAyMy40NzU1IDYzLjUwNDIgMjMuNDc1NSA2Ni41NDk3IDI2LjUyMTFaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo= realtimeCollaboration: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSA0Ny43NTIxQzYyLjkxMDUgNDcuNzUyMSA2Ni40MDY5IDQ0LjI2NjcgNjYuNDA2OSAzOS45NTY4VjMyLjE2MTRDNjYuNDA2OSAyNy44NjI0IDYyLjkyMTUgMjQuMzY2MSA1OC42MTE1IDI0LjM2NjFIMjcuNDQxMkMyMy4xNDIyIDI0LjM2NjEgMTkuNjQ1OSAyNy44NTE0IDE5LjY0NTkgMzIuMTYxNFY2My4zMzE3TDM1LjIyNTUgNDcuNzUyMUg1OC42MDA1SDU4LjYxMTVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik04My41NDc4IDU1LjU0NzZINTIuMzc3NUM0OC4wNzg1IDU1LjU0NzYgNDQuNTgyMiA1OS4wMzMgNDQuNTgyMiA2My4zNDI5VjcxLjEzODNDNDQuNTgyMiA3NS40MzcyIDQ4LjA2NzUgNzguOTMzNiA1Mi4zNzc1IDc4LjkzMzZINzUuNzUyNUw5MS4zMzIxIDk0LjUxMzNWNjMuMzQyOUM5MS4zMzIxIDU5LjA0NCA4Ny44NDY4IDU1LjU0NzYgODMuNTM2OCA1NS41NDc2SDgzLjU0NzhaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo= realtimeVideoconference: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== selfserviceChangepassword: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== selfserviceEditprofile: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== selfserviceProtectaccount: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== portalTitleDE: Portal - openDesk portalTitleEN: Portal - openDesk portaltileGroupFileshare: - cn=managed-by-attribute-Fileshare,cn=groups,dc=swp-ldap,dc=internal portaltileGroupGroupware: - cn=managed-by-attribute-Groupware,cn=groups,dc=swp-ldap,dc=internal portaltileGroupLiveCollaboration: - cn=managed-by-attribute-Livecollaboration,cn=groups,dc=swp-ldap,dc=internal portaltileGroupManagementKnowledge: - cn=managed-by-attribute-Knowledgemanagement,cn=groups,dc=swp-ldap,dc=internal portaltileGroupManagementLearn: - cn=managed-by-attribute-Learnmanagement,cn=groups,dc=swp-ldap,dc=internal portaltileGroupManagementProject: - cn=managed-by-attribute-Projectmanagement,cn=groups,dc=swp-ldap,dc=internal portaltileGroupNotes: - cn=managed-by-attribute-Notes,cn=groups,dc=swp-ldap,dc=internal portaltileGroupUserAdmin: - cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal - cn=Support,cn=groups,dc=swp-ldap,dc=internal portaltileGroupUserAll: - cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal - cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal portaltileGroupUserStandard: - cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal portaltileGroupVideoconference: - cn=managed-by-attribute-Videoconference,cn=groups,dc=swp-ldap,dc=internal readonlyUserPassword: '9fbafb70b3be33694fe8409400f3843ef6b9dd06' showUmc: 'true' subDomainsKeycloak: 'id' svcPortalServerUserPassword: fe6ca21673a27ff0c1741c00a1873cd3017c2cf8 systemInformation: deployDate: 'Deployed: 2025-05-10T21:07:43+0200' releaseVersion: 'Release: v1.3.2' udmCustomFinalizer: [] udmCustomInitializer: [] --- # Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-stack-data-ums-svc-portal-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums type: Opaque stringData: password: "fe6ca21673a27ff0c1741c00a1873cd3017c2cf8" --- # Source: nubus/charts/nubusStackDataUms/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-stack-data-ums" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums type: Opaque stringData: udm_secret: "" --- # Source: nubus/charts/nubusUdmListener/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: ums-provisioning-udm-listener namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-udm-listener helm.sh/chart: nubusUdmListener-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: ldap_secret: "" ca_cert: "" ... --- # Source: nubus/charts/nubusUmcServer/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: ums-umc-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server stringData: ldap_secret: machine_secret: ca_cert: "" cert_pem: private_key: db_password: "" memcached_password: "" smtp_password: "" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-opendesk-portal-server-central-navigation" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-opendesk-guardian-client-secret" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: managementApiClientSecret: "cdfd791d2b9460c15334d4b8e46df698b3e3bd9f" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-opendesk-keycloak-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: admin_password: "81d3190e7a7467137ccb11c6fdd2c296986275db" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-keycloak-postgresql-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: keycloakDatabasePassword: "2a27e8e8f1148830c04a97d765173021337b738e" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-guardian-postgresql-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: guardianDatabasePassword: "37b03322fc23defff213fe18e95448bd27f92652" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-notifications-api-postgresql-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "d1f34090031fd52de9518c2665090822a0d1e17b" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-umc-server-postgresql-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: umcServerDatabasePassword: "09af664fe11f675880a6dc980f0276f70d001104" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-umc-server-memcached-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: umcServerMemcachedPassword: "" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-keycloak-extensions-postgresql-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: umcKeycloakExtensionsDatabasePassword: "a7125d58b42fc935fd603c362ddecbfafd92bca0" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-keycloak-extensions-smtp-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: umcKeycloakExtensionsSmtpPassword: "1884bda7fb31c726adcd094399ab63319e9ca56f" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-keycloak-bootstrap-ldap-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "6f85092e969e10c851eef49367019d1e02a4a8a0" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-portal-server-minio-opendesk-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: access-key-id: "ums_user" secret-key-id: "915f15805278ef774a1cf3abfa6b8623c1fa4544" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-umc-server-smtp-credentials-custom" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "1884bda7fb31c726adcd094399ab63319e9ca56f" ... --- # Source: nubus/templates/extraSecrets.yaml kind: "Secret" apiVersion: "v1" metadata: name: "ums-provisioning-ox-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }" ... --- # Source: nubus/templates/nubusMinioProvisioningSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH--- kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "nubus-minio-provisioning" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: portal-consumer-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-readwrite\nsetPolicies=false" portal-server-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-read\nsetPolicies=false" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-nubus-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: administrator_password: "937393b22852fc828b0d68283dddcb9f8fb97411" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: admin_password: "5766e50d31dcf035c440e207b6a70f8cdbb73f6c" replication_password: "d31873679d935c4d8a2780f4ef358098dbf72409" user_password: "44f4bfadb6c82d4b7632d7b155a931fa4fd326b4" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-ldap-server-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: adminPassword: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: admin_password: "706676bc3cd8c020813f4a97beac99a44b45484f" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-minio-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: root-password: "62c6470f313bec082fc99d7a35fc3c5ae47b3f94" root-user: "admin" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-consumer-minio-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: accessKey: "ums_user" secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-server-minio-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: accessKey: "ums_user" secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-server-central-navigation-shared-secret" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "91bad5c377c1eb2610b68790571f5afee8570bd2" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "33ece5da171ae2827d8b664332565a870a425775" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-notifications-api-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "c071f4f6d38c633b570e8e0ae6411b907794ee29" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "d9854482f04c2af2e4c9b432423160b7f1f4093f" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-extensions-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "3a8d434286750942928391011fe07f41574aa481" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-extensions-keycloak-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "706676bc3cd8c020813f4a97beac99a44b45484f" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-extensions-smtp-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "3a8d434286750942928391011fe07f41574aa481" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-bootstrap-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "9fbafb70b3be33694fe8409400f3843ef6b9dd06" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-keycloak-bootstrap-keycloak-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "706676bc3cd8c020813f4a97beac99a44b45484f" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-udm-listener-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-stack-data-swp-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-selfservice-listener-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-udm-rest-api-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-self-service-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "937393b22852fc828b0d68283dddcb9f8fb97411" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-stack-data-udm-rest-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-udm-rest-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-consumer-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-listener-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-consumer-udm-rest-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-readonly-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "7edb027e32df3da6b956102c4c5367bfe1a9ab86" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-events-and-consumer-api-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "95d501c0387cf0eec31aa80bb17f95f830a6251d" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-dispatcher-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "b4b9a0246a4ad460f600be8b77af5861cde06201" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-prefill-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-transformer-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252" NATS_USER: udmtransformer ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-transformer-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" EVENTS_USERNAME_UDM: udm ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-transformer-ldap-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: LDAP_BIND_PW: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-selfservice-listener-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-udm-rest-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-memcached-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: memcached-password: "33ece5da171ae2827d8b664332565a870a425775" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-smtp-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "33ece5da171ae2827d8b664332565a870a425775" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-umc-server-ldap-tls" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ca.crt: tls.crt: tls.key: ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-consumer-ldap-tls" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ca.crt: tls.crt: tls.key: ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-listener-ldap-tls" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ca.crt: tls.crt: tls.key: ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-selfservice-listener-ldap-tls" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ca.crt: tls.crt: tls.key: ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-nats-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: admin_password: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-api-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ADMIN_NATS_PASSWORD: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5" ADMIN_NATS_USER: admin ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521" ADMIN_USERNAME: admin EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" EVENTS_USERNAME_UDM: udm NATS_PASSWORD: "95d501c0387cf0eec31aa80bb17f95f830a6251d" NATS_USER: api PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10" PREFILL_USERNAME: prefill ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-dispatcher-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: NATS_PASSWORD: "b4b9a0246a4ad460f600be8b77af5861cde06201" NATS_USER: dispatcher ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-prefill-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: NATS_PASSWORD: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d" NATS_USER: prefill PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10" PREFILL_USERNAME: prefill UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967" UDM_USERNAME: cn=admin ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-listener-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" EVENTS_USERNAME_UDM: udm NATS_PASSWORD: "0acadb5b0a2e885081a0ad98d44c0884c6aa517e" NATS_USER: udmlistener ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-udm-transformer-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" EVENTS_USERNAME_UDM: udm NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252" NATS_USER: udmtransformer ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-register-consumers-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521" ADMIN_USERNAME: admin UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967" UDM_USERNAME: cn=admin ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-selfservice-listener-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: NATS_PASSWORD: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde" NATS_USER: selfservice PROVISIONING_API_PASSWORD: "903594f7a3da64ac8573b35933f0546f2fb4d1e0" UMC_ADMIN_PASSWORD: "937393b22852fc828b0d68283dddcb9f8fb97411" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-portal-consumer-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: PROVISIONING_API_PASSWORD: "285e53cfa767e8788935963e6d60186f31a36879" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-provisioning-register-consumers-json-secrets" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }" portal-consumer.json: "{ \"name\": \"portal-consumer\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"portals/portal\"}, {\"realm\": \"udm\", \"topic\": \"portals/category\"}, {\"realm\": \"udm\", \"topic\": \"portals/entry\"}, {\"realm\": \"udm\", \"topic\": \"portals/folder\"}, {\"realm\": \"udm\", \"topic\": \"portals/announcement\"}], \"request_prefill\": false, \"password\": \"285e53cfa767e8788935963e6d60186f31a36879\" }" selfservice.json: "{ \"name\": \"selfservice\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"users/user\"}], \"request_prefill\": true, \"password\": \"903594f7a3da64ac8573b35933f0546f2fb4d1e0\" }" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-guardian-keycloak-client-secret" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: oauthAdapterM2mSecret: "109f406de749f9d8588bc4144c738143023def37" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-guardian-udm-secret" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: udmDataAdapterPassword: "b63d4de0d8766a932cad776066f76211906f8967" udmDataAdapterUsername: cn=admin ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-guardian-provisioning-secret" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: adminPassword: "706676bc3cd8c020813f4a97beac99a44b45484f" managementApiClientSecret: "109f406de749f9d8588bc4144c738143023def37" ... --- # Source: nubus/templates/nubusSecrets.yaml kind: "Secret" apiVersion: "v1" type: "Opaque" metadata: name: "ums-guardian-management-api-postgresql-credentials" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm stringData: password: "9e1704c5a20a9a0e781f4537e37395663e1299fb" ... --- # Source: nubus/charts/keycloak/templates/configmap.yaml apiVersion: "v1" kind: ConfigMap metadata: name: "ums-keycloak" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak helm.sh/chart: keycloak-0.9.2 data: KEYCLOAK_PASSWORD_CHANGE_ENDPOINT: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" KC_LOG_LEVEL: "INFO" KC_HOSTNAME: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" KC_PROXY: "edge" KC_DB: "postgres" # https://www.keycloak.org/server/caching KC_CACHE: "ispn" # https://www.keycloak.org/server/caching#_available_transport_stacks KC_CACHE_STACK: "kubernetes" KC_METRICS_ENABLED: "true" KC_HOSTNAME_BACKCHANNEL_DYNAMIC: "true" KC_DB_URL_HOST: "postgresql" KC_DB_URL_PORT: "5432" KC_DB_URL_DATABASE: "keycloak" UNIVENTION_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/theme.css" UNIVENTION_CUSTOM_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/css/custom.css" UNIVENTION_FAVICON: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/favicon.ico" CACHE_OWNERS_COUNT: "1" CACHE_OWNERS_AUTH_SESSIONS_COUNT: "1" # Needed for the headless service PROXY_ADDRESS_FORWARDING: "true" JAVA_OPTS_APPEND: -Djgroups.dns.query=ums-keycloak.yschmidt-opendesk-argo.svc.cluster.local ... --- # Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-guardian-authorization-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" data: HOME: "/guardian_service_dir" GUARDIAN__AUTHZ__CORS__ALLOWED_ORIGINS: "*" GUARDIAN__AUTHZ__ADAPTER__SETTINGS_PORT: "env" GUARDIAN__AUTHZ__ADAPTER__PERSISTENCE_PORT: "udm_data" GUARDIAN__AUTHZ__ADAPTER__POLICY_PORT: "opa" GUARDIAN__AUTHZ__ADAPTER__AUTHENTICATION_PORT: "fast_api_oauth" IS_UNIVENTION_APPCENTER: "0" UDM_DATA_ADAPTER__URL: "http://ums-udm-rest-api:9979/udm/" UDM_DATA_ADAPTER__USERNAME_FILE: "/var/secrets/udmDataAdapterUsername" UDM_DATA_ADAPTER__PASSWORD_FILE: "/var/secrets/udmDataAdapterPassword" OPA_ADAPTER__URL: "http://ums-guardian-open-policy-agent/" GUARDIAN__AUTHZ__LOGGING__LEVEL: "INFO" GUARDIAN__AUTHZ__LOGGING__STRUCTURED: "true" GUARDIAN__AUTHZ__LOGGING__FORMAT: "{time:YYYY-MM-DD HH:mm:ss.SSS ZZ} | {level} | {message} | {extra}" OAUTH_ADAPTER__WELL_KNOWN_URL: "http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration" ... --- # Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-guardian-nginx-conf namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" data: nginx.conf: | server { listen 8080; listen [::]:8080; server_name management-ui; root /app; location /univention/guardian/management-ui { alias /app/; try_files $uri /index.html; } location /univention/guardian/management-ui/favicon.ico { alias /app/favicon.ico; try_files $uri =404; } location /univention/guardian/management-ui/config.json { alias /app/config/config.json; try_files $uri =404; } location /univention/guardian/management-ui/assets/ { alias /app/assets/; try_files $uri =404; } } ... --- # Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-guardian-management-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" data: HOME: "/guardian_service_dir" GUARDIAN__MANAGEMENT__CORS__ALLOWED_ORIGINS: "*" GUARDIAN__MANAGEMENT__ADAPTER__SETTINGS_PORT: "env" GUARDIAN__MANAGEMENT__ADAPTER__APP_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__CONDITION_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__CONTEXT_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__NAMESPACE_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__PERMISSION_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__ROLE_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__CAPABILITY_PERSISTENCE_PORT: "sql" GUARDIAN__MANAGEMENT__ADAPTER__AUTHENTICATION_PORT: "fast_api_oauth" GUARDIAN__MANAGEMENT__ADAPTER__AUTHORIZATION_API_URL: "http://ums-guardian-authorization-api/guardian/authorization" GUARDIAN__MANAGEMENT__ADAPTER__RESOURCE_AUTHORIZATION_PORT: "guardian" # NOTE: Seems to be only used during stopping the containers for univention-app command # We can probably drop it, since it is used on some bash termiation script IS_UNIVENTION_APPCENTER: "0" OAUTH_ADAPTER__WELL_KNOWN_URL: "http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration" OAUTH_ADAPTER__M2M_SECRET_FILE: "/var/secrets/oauthAdapterM2mSecret" GUARDIAN__MANAGEMENT__LOGGING__LEVEL: "DEBUG" GUARDIAN__MANAGEMENT__LOGGING__STRUCTURED: "true" GUARDIAN__MANAGEMENT__LOGGING__FORMAT: "{time:YYYY-MM-DD HH:mm:ss.SSS ZZ} | {level} | {message} | {extra}" GUARDIAN__MANAGEMENT__BASE_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" SQL_PERSISTENCE_ADAPTER__DIALECT: "postgresql" SQL_PERSISTENCE_ADAPTER__HOST: "postgresql" SQL_PERSISTENCE_ADAPTER__PORT: "5432" SQL_PERSISTENCE_ADAPTER__USERNAME: "guardianmanagementapi_user" SQL_PERSISTENCE_ADAPTER__DB_NAME: "guardianmanagementapi" ... --- # Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-guardian-management-ui namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" data: VITE__MANAGEMENT_UI__ADAPTER__AUTHENTICATION_PORT: "keycloak" VITE__MANAGEMENT_UI__ADAPTER__DATA_PORT: "api" VITE__API_DATA_ADAPTER__URI: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/guardian/management" VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__SSO_URI: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__REALM: "opendesk" VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__CLIENT_ID: "guardian-ui" ... --- # Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-guardian-open-policy-agent namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: guardian helm.sh/chart: nubusGuardian-0.17.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "2.0.0" data: IS_UNIVENTION_APPCENTER: "0" OPA_DATA_BUNDLE: "bundles/GuardianDataBundle.tar.gz" OPA_POLICY_BUNDLE: "bundles/GuardianPolicyBundle.tar.gz" OPA_POLLING_MIN_DELAY: "10" OPA_POLLING_MAX_DELAY: "15" OPA_GUARDIAN_MANAGEMENT_URL: "http://ums-guardian-management-api/guardian/management" ... --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-keycloak-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: argocd.argoproj.io/hook: Sync data: DEBUG: "false" DOMAIN: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" SUBDOMAIN_PORTAL: "portal" KEYCLOAK_HOST: "ums-keycloak" KEYCLOAK_REALM: "opendesk" KEYCLOAK_URL: "http://ums-keycloak:8080" UNIVENTION_KEYCLOAK_BOOTSTRAP_TEMP_DIR: "/tmp" UNIVENTION_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START: "0" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" LDAP_URI: "ldap://ums-ldap-server:389" SAML_SERVICE_PROVIDER_HOSTNAME: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ... --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-keycloak-bootstrap-bootstrap-data" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: argocd.argoproj.io/hook: Sync data: ldap.mappers.yaml: | - ldapAndUserModelAttributeName: opendeskProjectmanagementAdmin - ldapAndUserModelAttributeName: oxContextIDNum loginlinks.yaml: | - link_number: 1 language: "de" description: "Passwort vergessen?" href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten" - link_number: 1 language: "en" description: "Forgot password?" href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten" 2fa.yaml: | enabled: true group: 2fa-users ... --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-keycloak-bootstrap-init namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: argocd.argoproj.io/hook: Sync data: KEYCLOAK_URL: "http://ums-keycloak:8080/realms/master" wait-for-keycloak.py: | #!/usr/bin/python3 import requests import time import sys import os keycloak_url = os.environ.get('KEYCLOAK_URL') max_retries = 300 retries = 0 for retry in range(max_retries): try: response = requests.get(keycloak_url) if response.status_code == 200: print('Keycloak is available') sys.exit(0) elif response.status_code == 404: print('Realm not ready') else: print('Unexpected response code: ', response.status_code) except requests.exceptions.ConnectionError: print('Could not reach keycloak, retrying...') time.sleep(1) sys.exit(1) ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-keycloak-extensions-handler namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-handler app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 data: KC_AUTH_URL: "http://ums-keycloak:8080/admin" KC_REALM: "opendesk" KC_USER_REALM: "master" POSTGRES_HOST: "postgresql" POSTGRES_PORT: "5432" POSTGRES_DATABASE_NAME: "keycloak_extensions" LOG_LEVEL: "WARN" FAILED_ATTEMPTS_FOR_IP_BLOCK: "7" FAILED_ATTEMPTS_FOR_DEVICE_BLOCK: "5" FAILED_ATTEMPTS_FOR_CAPTCHA_TRIGGER: "3" EVENTS_RETENTION_PERIOD: "1" AUTO_EXPIRE_RULE_IN_MINS: "1" DEVICE_PROTECTION_ENABLE: "True" IP_PROTECTION_ENABLE: "True" CAPTCHA_PROTECTION_ENABLE: "False" NEW_DEVICE_LOGIN_NOTIFICATION_ENABLE: "True" NEW_DEVICE_LOGIN_SUBJECT: "New device login on your openDesk account" SMTP_HOST: "postfix.yschmidt-opendesk-argo.svc.cluster.local" SMTP_PORT: "25" SMTP_AUTH_ENABLED: "true" SMTP_SSL_ENABLED: "false" SMTP_STARTTLS_ENABLED: "false" MAIL_FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml apiVersion: "v1" kind: ConfigMap metadata: name: ums-keycloak-extensions-proxy namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-proxy app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 data: KEYCLOAK_URL: "http://ums-keycloak:8080" KC_AUTH_URL: "http://ums-keycloak:8080/admin" KC_REALM: "opendesk" KC_USER_REALM: "master" POSTGRES_HOST: "postgresql" POSTGRES_PORT: "5432" POSTGRES_DATABASE_NAME: "keycloak_extensions" POSTGRES_SSL: "false" CAPTCHA_SITE_KEY: "" CAPTCHA_SECRET_KEY: "" LOG_LEVEL: "info" --- # Source: nubus/charts/nubusLdapNotifier/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-ldap-notifier" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-notifier helm.sh/chart: nubusLdapNotifier-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "14.0.4" data: ENVIRONMENT: "production" LDAP_SERVER_UID: "101" LDAP_SERVER_GID: "102" ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-primary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary" PRIMARY_SERVICE: "ums-ldap-server-primary" LDAP_BASEDN: "dc=swp-ldap,dc=internal" LDAP_SERVER_ENABLE_STATUS_CONFIGMAP: "true" LDAP_SERVER_ROLE: "primary" SYNC_USER_DN: "cn=admin,dc=swp-ldap,dc=internal" ADMIN_DN: "cn=admin,dc=swp-ldap,dc=internal" LDAP_PORT: "389" LDAP_PROTOCOL: "ldap" REPLICACOUNT: "2" ENABLE_SOCKET_OVERLAY: "false" ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-primary-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: append-slapd.conf.sh: | #!/usr/bin/env bash set -euo pipefail # Export the SERVERID export SERVERID=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)+1}') # Determine the PRIMARY_LDAP_URI based on the trailing digit of the HOSTNAME trailing_digit=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)}') replicacount="${REPLICACOUNT}" if [[ "${replicacount}" -eq 2 ]]; then if [[ "${trailing_digit}" -eq 0 ]]; then export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-1:${LDAP_PORT}" else export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}" fi else if [[ "${trailing_digit}" -eq 0 ]]; then export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((replicacount - 1)):${LDAP_PORT}" elif [[ "${trailing_digit}" -eq $((replicacount - 1)) ]]; then export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}" else export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((trailing_digit - 1)):${LDAP_PORT}" fi fi # Read the slapd.conf.tpl file template=$(cat /config/templates/slapd.conf.tpl) # Replace placeholders with environment variable values using sed and eval while IFS=$'\n' read -r line; do # Skip empty lines if [[ -z "${line}" ]]; then continue fi # Get the leading spaces from the line leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') # Evaluate the line to expand any environment variables evaluated_line=$(eval echo "${line}") # Prepend the leading spaces to the evaluated line evaluated_line="${leading_spaces}${evaluated_line}" # Escape special characters in the line escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') # Replace the line in the template with the evaluated line, preserving indentation template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|") done < <(echo "${template}") # Read the existing slapd.conf file slapd_conf=$(cat /etc/ldap/slapd.conf) # Initialize an empty modified slapd.conf file modified_slapd_conf="serverID ${SERVERID}\n" # Initialize the replication ID counter replication_id=1 # Initialize the suffix variable suffix="" # Process the slapd.conf file line by line while IFS=$'\n' read -r line; do # Append the current line to the modified slapd.conf modified_slapd_conf+="${line}\n" # Check if the current line starts with "modulepath" and append the moduleload for back_sock.so if [[ "${line}" =~ ^modulepath ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then modified_slapd_conf+="moduleload back_sock.so\n" line="moduleload back_ldap.so\n" fi # Check if the current line starts with "suffix" if [[ "${line}" =~ ^suffix ]]; then # Extract the suffix value suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"') fi # The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it. # Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl. if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then echo "The suffix is ${suffix} and this line contains the socket acl." echo "Line: ${line}" # Append the syncrepl configuration to the modified slapd.conf modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n" fi # The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both. # Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration. if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then echo "The suffix is ${suffix} and this line contains the cn=translog suffix." echo "Line: ${line}" # Append the syncrepl configuration to the modified slapd.conf modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" # Set the line to the rootdn line so the following syncrepl configuration is added after it. line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" fi # Check if the current line starts with "rootdn" if [[ "${line}" =~ ^rootdn ]]; then # Generate the syncrepl configuration with the current replication ID and suffix syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|") # Append the syncrepl configuration to the modified slapd.conf, preserving indentation modified_slapd_conf+="${syncrepl_config}\n" # Increment the replication ID replication_id=$((replication_id + 1)) fi if [[ "${line}" =~ ^suffix ]] && [[ "${suffix}" == "${LDAP_BASEDN}" ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then modified_slapd_conf+=$(cat /config/templates/slapd.conf.socket_overlay.tpl) fi done < <(echo "${slapd_conf}") # Write the modified slapd.conf echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf --- # Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-primary-config-templates namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: slapd.conf.tpl: | overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100 syncrepl rid=00PLACEHOLDER_REPLICATION_ID provider=$PRIMARY_LDAP_URI type=refreshAndPersist interval=00:00:00:10 network-timeout=0 timeout=1 searchbase="PLACEHOLDER_LDAP_BASEDN" bindmethod=simple binddn="$SYNC_USER_DN" credentials=$SYNC_PASSWORD schemachecking=on scope=sub retry="60 +" multiprovider on slapd.conf.socket_overlay.tpl: | overlay sock extensions binddn connid peername socketpath /var/lib/univention-ldap/slapd-sock/sock sockops add delete modify modrdn sockresps extendedresult ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-proxy namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary" SECONDARY_LDAP_URI: "ldap://ums-ldap-server-secondary" LDAP_BASEDN: "dc=swp-ldap,dc=internal" LDAP_SERVER_ROLE: "proxy" ADMIN_DN: "cn=admin,dc=swp-ldap,dc=internal" ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-proxy-config-templates namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: slapd.conf-proxy.tpl: | PLACEHOLDER_SCHEMAS attributeoptions "entry-" "lang-" moduleload constraint.so pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args modulepath /usr/lib/ldap moduleload back_ldap.so database ldap suffix "dc=swp-ldap,dc=internal" overlay constraint constraint_attribute uidNumber regex ^[^0]+[0-9]*$ constraint_attribute gidNumber regex ^[^0]+[0-9]*$ moduleload memberof.so overlay memberof memberof-group-oc posixGroup memberof-member-ad uniqueMember memberof-memberof-ad memberOf memberof-dangling ignore memberof-refint false uri ldap://ums-ldap-server-secondary lastmod on chase-referrals yes rebind-as-user yes # idassert-bind mode=self bindmethod=simple # binddn="cn=admin,dc=swp-ldap,dc=internal" # credentials="PLACEHOLDER_LDAP_CN_ADMIN_PW" # tls_reqcert=never # idassert-passthru "dn.regex:.*" authz-regexp uid=([^,]*),cn=(gssapi|saml|oauthbearer),cn=auth ldap:///PLACEHOLDER_LDAP_BASEDN??sub?uid=$1 access to * by * read # database ldap # suffix "cn=translog" # overlay constraint # uri ldap://ums-ldap-server-secondary # lastmod on # chase-referrals yes # rebind-as-user yes # idassert-passthru "dn.regex:.*" # access to * by * read sasl-secprops none,minssf=0 ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-proxy-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: wait-for-secondary.sh: | #!/bin/bash set -uo pipefail echo "Waiting for secondary LDAP to be available ..." retry_interval=5 error=1 while [ $error -ne 0 ]; do (set +x; ldapsearch -H "${SECONDARY_LDAP_URI}" -x -D "${ADMIN_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1) error=$? if [ $error -eq 49 ]; then echo "Failed to authenticate with secondary LDAP at '${SECONDARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..." else echo "Secondary LDAP not available at '${SECONDARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..." fi sleep ${retry_interval} done generate-slapd.conf.sh: | #!/usr/bin/env bash set -euo pipefail # Read the existing slapd.conf file slapd_conf=$(cat /etc/ldap/slapd.conf) # Initialize the schema_definition_lines variable schema_definition_lines="" # Process the slapd.conf file line by line while IFS=$'\n' read -r line; do # Check if the current line starts with "include" and append the moduleload for back_ldap.so if [[ "${line}" =~ ^include ]]; then schema_definition_lines+="${line}\n" fi done < <(echo "${slapd_conf}") echo "Schema definitions: ${schema_definition_lines}\n" # Read the slapd.conf-proxy.tpl file template=$(cat /config/templates/slapd.conf-proxy.tpl) # Initialize the generated slapd.conf variable generated_slapd_conf="" # Replace placeholders with environment variable values using sed and eval while IFS=$'\n' read -r line; do # Skip empty lines if [[ -z "${line}" ]]; then continue fi # Check if the current line contains the placeholder for the schema definitions and append the schema definitions if [[ "${line}" =~ ^PLACEHOLDER_SCHEMAS ]]; then echo "Found placeholder line. Appending schema definitions." generated_slapd_conf+="${schema_definition_lines}\n" continue fi PLACEHOLDER_LDAP_CN_ADMIN_PW=$(echo "${LDAP_CN_ADMIN_PW}" | sed 's/[&/\]/\\&/g') modified_line=$(echo "${line}" | sed "s|PLACEHOLDER_LDAP_CN_ADMIN_PW|${PLACEHOLDER_LDAP_CN_ADMIN_PW}|g" | sed "s|PLACEHOLDER_LDAP_BASEDN|${LDAP_BASEDN}|g") generated_slapd_conf+="${modified_line}\n" done < <(echo "${template}") # Write the modified slapd.conf echo -e "${generated_slapd_conf}" > /etc/ldap/slapd.conf slaptest -f /etc/ldap/slapd.conf ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-secondary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary" LDAP_BASEDN: "dc=swp-ldap,dc=internal" LDAP_SERVER_ROLE: "secondary" SYNC_USER_DN: "cn=admin,dc=swp-ldap,dc=internal" ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-secondary-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: wait-for-primary.sh: | #!/bin/bash set -uo pipefail echo "Waiting for primary LDAP to be available ..." retry_interval=5 error=1 while [ $error -ne 0 ]; do (set +x; ldapsearch -H "${PRIMARY_LDAP_URI}" -x -D "${SYNC_USER_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1) error=$? if [ $error -eq 49 ]; then echo "Failed to authenticate with primary LDAP at '${PRIMARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..." else echo "Primary LDAP not available at '${PRIMARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..." fi sleep ${retry_interval} done append-slapd.conf.sh: | #!/usr/bin/env bash set -euo pipefail # Export the SERVERID export SERVERID=$(echo ${HOSTNAME} | awk -F '-' '{print $(NF)+1}') # Read the slapd.conf.tpl file template=$(cat /config/templates/slapd.conf.tpl) # Replace placeholders with environment variable values using sed and eval while IFS=$'\n' read -r line; do # Skip empty lines if [[ -z "${line}" ]]; then continue fi # Get the leading spaces from the line leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') # Evaluate the line to expand any environment variables evaluated_line=$(eval echo "${line}") # Prepend the leading spaces to the evaluated line evaluated_line="${leading_spaces}${evaluated_line}" # Escape special characters in the line escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') # Replace the line in the template with the evaluated line, preserving indentation template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|") done < <(echo "${template}") # Read the slapd.conf-chaining.tpl file templateChaining=$(cat /config/templates/slapd.conf-chaining.tpl) # Replace placeholders with environment variable values using sed and eval while IFS=$'\n' read -r line; do # Skip empty lines if [[ -z "${line}" ]]; then continue fi # Get the leading spaces from the line leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') # Evaluate the line to expand any environment variables evaluated_line=$(eval echo "${line}") # Prepend the leading spaces to the evaluated line evaluated_line="${leading_spaces}${evaluated_line}" # Escape special characters in the line escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') # Replace the line in the templateChaining with the evaluated line, preserving indentation templateChaining=$(echo "${templateChaining}" | sed "s|^${escaped_line}|${evaluated_line}|") done < <(echo "${templateChaining}") # Read the existing slapd.conf file slapd_conf=$(cat /etc/ldap/slapd.conf) # Initialize an empty modified slapd.conf file modified_slapd_conf="serverID 2${SERVERID}\n" # Initialize the replication ID counter replication_id=1 # Initialize the suffix variable suffix="" # Process the slapd.conf file line by line while IFS=$'\n' read -r line; do # Append the current line to the modified slapd.conf modified_slapd_conf+="${line}\n" # Check if the current line starts with "modulepath" and append the moduleload for back_ldap.so if [[ "${line}" =~ ^modulepath ]]; then modified_slapd_conf+="moduleload back_ldap.so\n" # Add the chaining configuration to the modified slapd.conf modified_slapd_conf+="${templateChaining}\n" line="moduleload back_ldap.so\n" fi # Check if the current line starts with "suffix" if [[ "${line}" =~ ^suffix ]]; then # Extract the suffix value suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"') fi # The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it. # Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl. if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then # if echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then echo "The suffix is ${suffix} and this line contains the socket acl." echo "Line: ${line}" # Append the syncrepl configuration to the modified slapd.conf modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n" fi # The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both. # Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration. if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then echo "The suffix is ${suffix} and this line contains the cn=translog suffix." echo "Line: ${line}" # Append the syncrepl configuration to the modified slapd.conf modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" # Set the line to the rootdn line so the following syncrepl configuration is added after it. line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" fi # Check if the current line starts with "rootdn" if [[ "${line}" =~ ^rootdn ]]; then # Generate the syncrepl configuration with the current replication ID and suffix syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/"| sed "s/PLACEHOLDER_SERVER_ID/${SERVERID}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|") # Append the syncrepl configuration to the modified slapd.conf, preserving indentation modified_slapd_conf+="${syncrepl_config}\n" # Increment the replication ID replication_id=$((replication_id + 1)) fi done < <(echo "${slapd_conf}") # Write the modified slapd.conf echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf # slaptest -f /etc/ldap/slapd.conf ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-secondary-config-templates namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: slapd.conf.tpl: | syncrepl rid=1PLACEHOLDER_SERVER_IDPLACEHOLDER_REPLICATION_ID provider=$PRIMARY_LDAP_URI type=refreshAndPersist interval=00:00:00:10 network-timeout=0 timeout=1 searchbase="PLACEHOLDER_LDAP_BASEDN" bindmethod=simple binddn="$SYNC_USER_DN" credentials=$SYNC_PASSWORD schemachecking=off scope=sub retry="60 +" updateref $PRIMARY_LDAP_URI # overlay chain # chain-uri $PRIMARY_LDAP_URI # chain-idassert-bind bindmethod=simple # binddn="$SYNC_USER_DN" # credentials=$SYNC_PASSWORD # mode=self # flags=prescriptive # chain-rebind-as-user TRUE # chain-return-error TRUE slapd.conf-chaining.tpl: | # placeholder ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-ldap-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: DOMAIN_NAME: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" LOG_LEVEL: "stats" SAML_METADATA_URL: "http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor" SAML_METADATA_URL_INTERNAL: "http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor" SERVICE_PROVIDERS: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/saml/metadata" TLS_MODE: "off" ... --- # Source: nubus/charts/nubusLdapServer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-ldap-server-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server data: wait-for-saml-metadata.sh: | #!/bin/bash set -euo pipefail # we have no UCR in this container, so just grep the SAML URL from the config file UCR_FILES="/etc/univention/base-defaults.conf /etc/univention/base.conf /etc/univention/base-forced.conf" SAML_METADATA_URL=$(grep --no-filename '^umc/saml/idp-server:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true) SAML_METADATA_URL_INTERNAL=$(grep --no-filename '^umc/saml/idp-server-internal:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true) DOWNLOAD_URL=${SAML_METADATA_URL_INTERNAL:-${SAML_METADATA_URL}} echo "Checking endpoint ${DOWNLOAD_URL}." SECONDS=0 TIMEOUT=120 while ! curl -k -o /dev/null -sf "${DOWNLOAD_URL}"; do echo "Checking if the SAML Metadata can be downloaded from keycloak ..." sleep 2 if (($SECONDS > $TIMEOUT)); then echo "Giving up after $TIMEOUT seconds" exit 1 fi done echo "Success, the SAML Metadata is available." init-internal-database.sh: | #!/bin/bash set -uo pipefail mkdir -p /var/lib/univention-ldap/internal echo "dn: cn=internal objectClass: organizationalRole " | slapadd -b cn=internal -f /etc/ldap/slapd.conf exit 0 ... --- # Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-portal-consumer-common namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-consumer helm.sh/chart: nubusPortalConsumer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: DOMAIN_NAME: "univention.intranet" ENVIRONMENT: "production" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" LDAP_HOST: "ums-ldap-server-primary" LDAP_HOST_DN: "cn=admin,dc=swp-ldap,dc=internal" LDAP_PORT: "389" LOG_LEVEL: "INFO" MAX_ACKNOWLEDGEMENT_RETRIES: "3" MACHINE_SECRET_FILE: "/var/secrets/machine_secret" PORTAL_DEFAULT_DN: "cn=domain,cn=portal,cn=portals,cn=univention,dc=swp-ldap,dc=internal" PORTAL_CONSUMER_LOG_STREAM: "true" PORTAL_ASSETS_BASE_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal" PORTAL_SERVER_ADMIN_GROUP: "cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal" PORTAL_SERVER_ASSETS_ROOT_PATH: "portal-assets" PORTAL_SERVER_AUTH_MODE: "saml" PORTAL_SERVER_EDITABLE: "false" PORTAL_SERVER_PORT: "80" PORTAL_SERVER_UCS_INTERNAL_PATH: "portal-data" PORTAL_SERVER_UMC_GET_URL: "http://ums-umc-server/get" PORTAL_SERVER_UMC_SESSION_URL: "http://ums-umc-server/get/session-info" PORTAL_UDM_API_URL: "http://ums-udm-rest-api:9979/udm/" PORTAL_UDM_API_USERNAME: "cn=admin" PORTAL_UDM_API_PASSWORD_FILE: "/var/secrets/machine_secret" OBJECT_STORAGE_ENDPOINT: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OBJECT_STORAGE_BUCKET: "ums" OBJECT_STORAGE_ACCESS_KEY_ID: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\n key: \"accessKey\"" OBJECT_STORAGE_SECRET_ACCESS_KEY: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\n key: \"secretKey\"" CA_CERT: "" CA_CERT_FILE: "/var/secrets/ca_cert" TLS_MODE: "off" PROVISIONING_API_BASE_URL: "http://ums-provisioning-api" PROVISIONING_API_USERNAME: "portal-consumer" ... --- # Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-portal-consumer-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-consumer helm.sh/chart: nubusPortalConsumer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: wait-for-provisioning-api.sh: | set -uo pipefail retry_interval=2 response_code=404 timeout_duration=120 end_time=$((SECONDS + timeout_duration)) while [ "$response_code" -ne 200 ]; do if [ $SECONDS -ge $end_time ]; then echo "Timeout reached. Exiting." exit 1 fi echo "Waiting for the Provisioning API to be available ..." response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}") if [ "${response_code}" -ne 200 ]; then echo "Provisioning API is not reachable, status code: $response_code" cat response.txt sleep ${retry_interval} else echo "The Provisioning API is reachable" exit 0 fi done echo "Permanent error ocurred. Exiting." exit 1 wait-for-ldap.sh: | #!/bin/bash set -euxo pipefail while ! ldapsearch -H ldap://$LDAP_HOST -D $LDAP_HOST_DN -y $MACHINE_SECRET_FILE -b "" -s base -LLL; do echo "Checking if LDAP Server can be reached..." sleep 2 done echo "Success, the LDAP Server is available" wait-for-udm.sh: | #!/bin/bash # TODO: find a way to not leak the udm passwort into the log set -euo pipefail while ! (set +x; curl -o- --fail --header "Accept: application/json" --user "${PORTAL_UDM_API_USERNAME}:$(cat $PORTAL_UDM_API_PASSWORD_FILE)" "${PORTAL_UDM_API_URL}ldap/base/"); do echo "Checking if the UDM REST API can be reached..." sleep 2 done echo "Success, the UDM REST API is available" wait-for-object-store.py: | #!/bin/python3 import boto3 import os s3 = boto3.resource( 's3', endpoint_url=os.environ["OBJECT_STORAGE_ENDPOINT"], aws_access_key_id=os.environ["OBJECT_STORAGE_ACCESS_KEY_ID"], aws_secret_access_key=os.environ["OBJECT_STORAGE_SECRET_ACCESS_KEY"] ) provisioned = False while not provisioned: bucket = s3.Bucket(os.environ["OBJECT_STORAGE_BUCKET"]) provisioned = bool(bucket.creation_date) if not provisioned: print("Waiting for the object storage service to be provisioned") break else: print("Object storage already provisioned") ... --- # Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-portal-frontend-branding" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend binaryData: custom.css: "LyoqCiAqIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjMgQnVuZGVzbWluaXN0ZXJpdW0gZGVzIElubmVybiB1bmQgZsO8ciBIZWltYXQsIFBHIFplbkRpUyAiUHJvamVrdGdydXBwZSBmw7xyIEF1ZmJhdSBaZW5EaVMiCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAqLwo6cm9vdCB7CiAgLyogdXNlZCB0byBhY2NlbnQgc29tZSBlbGVtZW50czogY2hlY2tib3gvcmFkaW9ib3gsIGNoZWNrZWQgdG9nZ2xlIGJ1dHRvbnMvY2hlY2tlZCBpbnB1dCBmaWVsZHMgKi8KICAtLWNvbG9yLWFjY2VudDogIzU3MUVGQTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeTogI2Y1ZjVmNTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeS1kYXJrOiAjYzdiM2YzOwogIC0tY29sb3Itb3BlbmRlc2std2hpdGU6ICNmZmZmZmY7CiAgLS1jb2xvci1vcGVuZGVzay1ibGFjazogIzAwMDAwMDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWluZm86ICNhZGIzYmM7CiAgLS1iZ2MtYW5ub3VuY2VtZW50cy13YXJuOiAjZmZjNzAwOwogIC0tYmdjLWFubm91bmNlbWVudHMtc3VjY2VzczogIzAwZmZjZDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWRhbmdlcjogI2ZmNTI5ZTsKICAtLWJnYy1jb250ZW50LWJvZHk6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtY29udGVudC1jb250YWluZXI6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1jb250ZW50LWhlYWRlcjogdmFyKC0tYmdjLWNvbnRlbnQtY29udGFpbmVyKTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIC0tYmdjLWlucHV0Ym9yZGVyLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWJvZHk6IHZhcigtLWJnYy1jb250ZW50LWNvbnRhaW5lcik7CiAgLS1iZ2MtY2hlY2tib3gtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgLS1iZ2MtY2hlY2tib3gtZm9jdXM6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7CiAgLS1iZ2MtbG9hZGluZy1jaXJjbGU6IHZhcigtLWZvbnQtY29sb3ItY29udHJhc3QtbWlkZGxlKTsKICAtLWJnYy11c2VyLW1lbnUtaXRlbS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIC0tYmdjLXVzZXItbWVudS1pdGVtLWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIC0tYmdjLWhlYWRlci1udW1iZXItY2lyY2xlOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIC0tYmdjLXRhYi1zZXBhcmF0b3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtcG9wdXA6ICNkMGQwZDA7CiAgLS1iZ2MtcG9wdXAtaXRlbS1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtLWJnYy1wb3B1cC1pdGVtLWFjdGl2ZTogcmdiYSgwLCAwLCAwLCAwLjMpOwogIC0tYmdjLXBvcHVwLWl0ZW0tc2VsZWN0ZWQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAtLWJnYy1ncmlkLXJvdy1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTsKICAtLWJnYy1ncmlkLXJvdy1zZWxlY3RlZDogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1ob3ZlcjogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1zZWxlY3RlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAtLWJnYy1hcHB0aWxlLWRlZmF1bHQ6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1hcHBjZW50ZXItYXBwLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogIC0tYmdjLWFwcGNlbnRlci1hcHAtYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwogIC0tYmdjLXByb2dyZXNzYmFyLWVtcHR5OiAjYmRiZGJiOwogIC0tYmdjLXByb2dyZXNzYmFyLXByb2dyZXNzOiB2YXIoLS1iZ2Mtc3VjY2Vzcyk7CiAgLS1iZ2MtdGl0bGVwYW5lLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpOwogIC0tYmdjLXVuZGVybGF5OiByZ2IoMjIxIDIyMSAyMjEgLyA4MCUpOwogIC0tYmdjLWNoZWNrZXJib2FyZDogcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KHZhcigtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcikgMCUgMjUlLCB0cmFuc3BhcmVudCAwJSA1MCUpIDUwJS8yMHB4IDIwcHg7CiAgLS1iZ2MtZXJyb3I6ICNmZjUyOWU7CiAgLS1iZ2Mtd2FybmluZzogI2ZmYzcwMDsKICAtLWJnYy1zdWNjZXNzOiAjMDBmZmNkOwogIC0tZm9udC1zaXplLTE6IDEuNXJlbTsKICAtLWZvbnQtc2l6ZS0yOiAxLjI1cmVtOwogIC0tZm9udC1zaXplLTM6IDFyZW07CiAgLS1mb250LXNpemUtNDogMC44NzVyZW07CiAgLS1mb250LXNpemUtNTogMC43NXJlbTsKICAtLWZvbnQtc2l6ZS1odG1sOiAxcmVtOwogIC0tZm9udC1zaXplLWJvZHk6IHZhcigtLWZvbnQtc2l6ZS00KTsKICAtLWZvbnQtbGluZWhlaWdodC1ub3JtYWw6IDEuNTsKICAtLWZvbnQtbGluZWhlaWdodC1jb21wYWN0OiAxLjI1OwogIC0tZm9udC1saW5laGVpZ2h0LWhlYWRlcjogMS4zOwogIC0tZm9udC13ZWlnaHQtYm9sZDogNjAwOwogIC0tZm9udC1jb2xvci1jb250cmFzdC1oaWdoOiAjMjAzMjU3OwogIC0tZm9udC1jb2xvci1jb250cmFzdC1taWRkbGU6ICM2MDYwNjA7CiAgLS1mb250LWNvbG9yLWNvbnRyYXN0LWxvdzogIzg2ODY4MTsKICAtLWZvbnQtY29sb3ItZXJyb3I6ICNiODIzMjM7CiAgLS1mb250LWNvbG9yLWVycm9yLWxpZ2h0OiAjRUFCRkJGOwogIC0tZm9udC1jb2xvci13YXJuaW5nOiAjZmY4YzAwOwogIC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0OiAjZmZlZWNhOwogIC0tZm9udC1jb2xvci1zdWNjZXNzOiAjOTJkNjI1OwogIC0tZm9udC1jb2xvci1zdWNjZXNzLWxpZ2h0OiAjZWJmZmNhOwogIC0tYnV0dG9uLXByaW1hcnktYmdjOiAjNTcxRUZBOwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWhvdmVyOiAjMWIxZDE4OwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWFjdGl2ZTogcmdiYSg3OSwgMTE0LCAyNCwgMSk7CiAgLS1idXR0b24tcHJpbWFyeS1iZ2MtZGlzYWJsZWQ6ICM1ZjVmNWM7CiAgLS1idXR0b24tYmdjOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIC0tYnV0dG9uLWJnYy1ob3ZlcjogIzU3NTc1NTsKICAtLWJ1dHRvbi1iZ2MtYWN0aXZlOiByZ2JhKDgwLCA4MCwgNzcsIDEpOwogIC0tYnV0dG9uLWJnYy1kaXNhYmxlZDogIzVmNWY1YzsKICAtLWJ1dHRvbi10ZXh0LWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24tdGV4dC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLXRleHQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLXRleHQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24taWNvbi1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24tYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24tYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWhpZ2hsaWdodGVkLWJnYzogdmFyKC0tYmdjLWlucHV0ZmllbGQtb24tYm9keSk7CiAgLS1idXR0b24taWNvbi1oaWdobGlnaHRlZC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWNvbG9yLWZvY3VzOiAjQUE5OEZCOwogIC0tcG9wdXAtYm9yZGVyOiAxcHggc29saWQgI2JkYmRiYjsKICAtLWJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2IoMSAwIDAgLyAxMiUpLCAwIDFweCA0cHggcmdiKDAgMSAwIC8gMTIlKTsKICAtLXNlcnZlcm92ZXJ2aWV3LXRpbGUtaG92ZXItYmdjOiAjMDBhY2I2OwogIC0tc2VydmVyb3ZlcnZpZXctdGlsZS1ob3Zlci1jb2xvcjogIzFlMWUxZDsKICAtLXBvcnRhbC10YWItYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYWNjZW50KTsKICAtLXNlbGVjdC1hcnJvdzogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJjQUFBQVhDQVlBQUFEZ0t0U2dBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQmtTVVJCVkhnQjdZM0JDUUFoREFTM0JFdElDVmVDSmRpNUpWd3BHc0dIaUdMRUNENHlzTDlsQmpDTXB3azhFbjZwL2tWNFh1TDlXQWVvL3NyL2d3REhpNEpBSzQ3WVlCWG94UTZiekFMSDRsbkFhNGxIZ2FRcEhnVlV4VzBnNElMWU1DNlRBWjBCSkEzYnhOM1JBQUFBQUVsRlRrU3VRbUNDJyk7CiAgLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcjogNjNweDsKICAvKiBLZXljbG9hayB1c2VyIHNjcmVlbnMgbG9nbyAqLwogIC0tbG9naW4tbG9nbzogdXJsKCIvc3RhdGljLWZpbGVzL2xvZ2luL2xvZ28uc3ZnIikgbm8tcmVwZWF0IGNlbnRlcjsKfQoKLyogQmV0YSBvdmVybGF5IGZvciBOb3RlcyAqLwoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiQmV0YSI7CiAgY29sb3I6ICM1NzFFRkE7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogOHB4OwogIHJpZ2h0OiAwcHg7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNSk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgei1pbmRleDogMTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzQ4cHgpIHsKICAucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogICAgICB0b3A6IDVweDsKICAgICAgZm9udC1zaXplOiAxMHB4OwogIH0KICAucG9ydGFsLXRpbGVfX25hbWUgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgfQp9CgoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIHRvcDogMXB4OwogIHJpZ2h0OiAxcHg7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItd2lkdGg6IDAgY2FsYyh2YXIoLS1hcHAtdGlsZS1zaWRlLWxlbmd0aCkgLyAyKSBjYWxjKHZhcigtLWFwcC10aWxlLXNpZGUtbGVuZ3RoKSAvIDIpIDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjRTlFNEZDIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogIHotaW5kZXg6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGModmFyKC0tYm9yZGVyLXJhZGl1cy1hcHB0aWxlKSAtIDFweCk7Cn0KCi8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBiZWdpbiAqLwoja2MtbG9naW4sCiNrYy1sb2dvdXQsCiNzYXZlVE9UUEJ0biwKLnBmLWMtYnV0dG9uLmJ0bi1sZyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKSAhaW1wb3J0YW50OwogIGJvcmRlcjogMnB4IHNvbGlkOwp9Cgoua2Mtc29jaWFsLXByb3ZpZGVyLW5hbWUgewogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWxvZ2luOmhvdmVyLAoja2MtbG9nb3V0OmhvdmVyLAojc2F2ZVRPVFBCdG46aG92ZXIsCi5wZi1jLWJ1dHRvbi5idG4tbGc6aG92ZXIgewogIGNvbG9yOiAjMDAwMDAwOwogIGJhY2tncm91bmQtY29sb3I6ICNlN2RmZmE7CiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLnBmLWMtZm9ybS1jb250cm9sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdkZmZhOwp9CgoucGYtYy1kcm9wZG93bl9fbWVudS1pdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWZvcm0tb3B0aW9ucyAuY2hlY2tib3ggewogIGNvbG9yOiB2YXIoLS1mb250LWNvbG9yLWNvbnRyYXN0LWhpZ2gpICFpbXBvcnRhbnQ7Cn0KCiNrYy1oZWFkZXItd3JhcHBlciB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5sb2dpbi1wZi1wYWdlIHsKICBtYXJnaW46IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgbWluLWhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmxvZ2luLXBmLXBhZ2UgI2tjLWhlYWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmxvZ2luLXBmLXBhZ2UgLmNhcmQtcGYgewogIGJvcmRlci1yYWRpdXM6IDEzcHg7CiAgbWFyZ2luLXRvcDogNDBweDsKfQoKLmxvZ2luLXBmLXBhZ2UgI3VtY0xvZ2luTGlua3MgYSB7CiAgY29sb3I6ICMwMDA7Cn0KCi5sb2dpbi1wZi1wYWdlICN1bWNMb2dpbkxpbmtzIGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IHVuc2V0Owp9CgoubG9naW4tcGYgYm9keSB7CiAgYmFja2dyb3VuZDogI2VlZTZmZSB1cmwoIi9zdGF0aWMtZmlsZXMvbG9naW4vYmFja2dyb3VuZC5qcGciKSBjZW50ZXIgY2VudGVyL2NvdmVyIG5vLXJlcGVhdCAhaW1wb3J0YW50Owp9Ci8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBlbmQgKi8KCi5wb3J0YWwtdGl0bGVfX2ltYWdlIHsKICB3aWR0aDogODJweDsKICBoZWlnaHQ6IGF1dG87Cn0KCi5wb3J0YWwtdGl0bGUgewogIHBhZGRpbmc6IDAgMTBweCAwIDVweDsKfQoKLyoKLnBvcnRhbDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDA7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM1NzFFRkEsICM1NzFFRkEgNjIlLCB3aGl0ZSA2MiUpOwp9CiovCgoucG9ydGFsX19iYWNrZ3JvdW5kOjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiL3N0YXRpYy1maWxlcy9wb3J0YWwvYmFja2dyb3VuZC5zdmciKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjM3cHg7CiAgYmFja2dyb3VuZC1zaXplOiA0ODBweDsKICBib3R0b206IDRweDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyNXB4IGNlbnRlcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTMwMHB4KSB7CiAgLnBvcnRhbF9fYmFja2dyb3VuZDo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtc2l6ZTogMzUwcHg7CiAgICBib3R0b206IC0yOHB4OwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTlweCBjZW50ZXI7CiAgfQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NDhweCkgewogIC5wb3J0YWxfX2JhY2tncm91bmQ6OmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDI1MHB4OwogICAgYm90dG9tOiAtNTBweDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDIwcHggY2VudGVyOwogIH0KfQoKLnBvcnRhbC1jYXRlZ29yaWVzOmJlZm9yZSB7CiAgd2lkdGg6IDEwMCU7CiAgY29udGVudDogJyc7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgaGVpZ2h0OiAxcHg7CiAgdG9wOiB2YXIoLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcik7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsKICB6LWluZGV4OiAxOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dpbi1oZWFkZXIgewogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwp9CgoucG9ydGFsLWhlYWRlcl9fZWRpdC1tb2RlLWxhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dvdXQtbGluayB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciwKLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fbWVudS1zdWJJdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciAucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19zdWJtZW51IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTphY3RpdmUgewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCmlucHV0IHsKICBib3JkZXI6IDAuMXJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyaykKfQoKaW5wdXRbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgovKmlucHV0IHsKYm9yZGVyLWNvbG9yOiB2YXIoLS1iZ2MtaW5wdXRib3JkZXItb24tY29udGFpbmVyKTsKfSovCgoucG9ydGFsLXNlYXJjaF9faW5wdXQgewogIGJvcmRlcjogMC4xcmVtIHNvbGlkIHZhcigtLWJnYy1pbnB1dGJvcmRlci1vbi1jb250YWluZXIpOwp9CgouaW1hZ2UtdXBsb2FkX19jYW52YXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKYnV0dG9uIHsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgpidXR0b24ucHJpbWFyeSB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKYnV0dG9uLnByaW1hcnkgc3ZnIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwp9CgpidXR0b25bZGlzYWJsZWRdIHsKICBjb2xvcjogI2FmYWZhZjsKfQoKYnV0dG9uW2Rpc2FibGVkXSBzdmcgewogIGNvbG9yOiAjYWZhZmFmOwp9CgppbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cyB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLWJsYWNrKTsKfQoKLmZvcm0tZWxlbWVudCB7CiAgbWFyZ2luLWJvdHRvbTogMnB4OwogIC8qbmVlZGVkIGZvciBjbGVhbmVyIE91dGxpbmUqLwogIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCnNlbGVjdCB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLm11bHRpLXNlbGVjdF9fc2VsZWN0IHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoubXVsdGktaW5wdXRfX3Jvdy0tbXVsdGlsaW5lIHsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9Cgp0ZXh0YXJlYSB7CiAgYm9yZGVyOiAuMXJlbSBzb2xpZCAjQjJBRkFGOwogIHdpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlOwp9Cgoubm90aWZpY2F0aW9uLS1zdWNjZXNzIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mb250LWNvbG9yLXN1Y2Nlc3MpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3Itc3VjY2Vzcy1saWdodCk7Cn0KCi5ub3RpZmljYXRpb24tLXdhcm5pbmcgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3Itd2FybmluZyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0KTsKfQoKLm5vdGlmaWNhdGlvbi0tZXJyb3IgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3ItZXJyb3IpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3ItZXJyb3ItbGlnaHQpOwp9CgouaGVhZGVyLXRhYl9fY2xpY2thYmxlOmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICBib3gtc2hhZG93OiAwIDAuMnJlbSAwIHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmhlYWRlci10YWI6aG92ZXI6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm9yZGVyLWJvdHRvbTogMDsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgouaGVhZGVyLXRhYjpmb2N1czpiZWZvcmUgewogIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1ibGFjayk7CiAgYm94LXNoYWRvdzogMDsKfQoKLmhlYWRlci10YWItLWFjdGl2ZTpmb2N1czphZnRlciB7CiAgYm9yZGVyOiAwLjJyZW0gc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stYmxhY2spOwp9CgouaGVhZGVyLXRhYjpob3ZlciwKLmhlYWRlci10YWI6aG92ZXJ+Lmljb24tYnV0dG9uIC5wb3J0YWwtaWNvbiwKLmhlYWRlci10YWItLWFjdGl2ZSwKLmhlYWRlci10YWItLWFjdGl2ZX4uaWNvbi1idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5oZWFkZXItdGFiLS1hY3RpdmV+Lmljb24tYnV0dG9uOmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKLmNob29zZS10YWI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5jaG9vc2UtdGFiLS1hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKCi5oZWFkZXItYnV0dG9uX19idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogIzFGMUYxRjsKICBzdHJva2Utd2lkdGg6IDM7Cn0KCi5oZWFkZXItYnV0dG9uLS1pcy1hY3RpdmUgLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLyoKLy8KLy8KLy8gTG9hZGluZyBPdmVybGF5IGltYWdlIGFuZCBBbmltYXRpb24KKi8KCi5zdGFuZGJ5Q2lyY2xlIHsKICBkaXNwbGF5OiBub25lOwp9Cgouc3RhbmRieVdyYXBwZXI6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9zdGF0aWMtZmlsZXMvcG9ydGFsL3dhaXRpbmctc3Bpbm5lci5zdmciKTsKICBiYWNrZ3JvdW5kLXNpemU6IDcwJTsKICB3aWR0aDogMjAwcHg7CiAgaGVpZ2h0OiAyMDBweDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgoucG9ydGFsLXRvb2x0aXAgewogIGJvcmRlci1jb2xvcjogI0QzRDdERTsKICBib3gtc2hhZG93OiAwcHggMHB4IDRweCAwcHggcmdiYSgzMiwgNTAsIDg3LCAwLjEwKTsKfQoKLnBvcnRhbC10b29sdGlwX19hcnJvdyB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjRDNEN0RFIHRyYW5zcGFyZW50Owp9CgoucG9ydGFsLXRpdGxlX19wb3J0YWwtbmFtZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIGJvcmRlcjogMDsKfQ==" favicon.ico: "AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=" logo.svg: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4=" portal_background_image.svg: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==" ... --- # Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-portal-frontend" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend data: ENVIRONMENT: "production" LOG_LEVEL: "INFO" ... --- # Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-portal-frontend-nginx namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend data: nginx.conf: | worker_processes auto; error_log /dev/stderr notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { 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 /dev/stdout main; sendfile on; keepalive_timeout 65; #gzip on; server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm; server_name _; location / { try_files $uri $uri/ =404; } } } ... --- # Source: nubus/charts/nubusPortalServer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-portal-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-server data: ENVIRONMENT: "production" LOG_LEVEL: "INFO" PORTAL_SERVER_ADMIN_GROUP: "cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal" PORTAL_SERVER_AUTH_MODE: "saml" PORTAL_SERVER_EDITABLE: "true" PORTAL_SERVER_FEATURE_TOGGLES: "{\"centered_layout\":false,\"notifications_api\":false,\"umc_session_refresh\":true,\"welcome_message\":false}" PORTAL_SERVER_PORT: "80" PORTAL_SERVER_UCS_INTERNAL_PATH: "portal-data" PORTAL_SERVER_UMC_GET_URL: "http://ums-umc-server/get" PORTAL_SERVER_UMC_SESSION_URL: "http://ums-umc-server/get/session-info" PORTAL_SERVER_CENTRAL_NAVIGATION_ENABLED: "true" PORTAL_UDM_API_URL: "http://ums-udm-rest-api:9979/udm/" PORTAL_UDM_API_USERNAME: "svc-portal-server" PORTAL_UDM_API_PASSWORD_FILE: "/var/secrets/udm_api_password" OBJECT_STORAGE_ENDPOINT: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OBJECT_STORAGE_BUCKET: "ums" --- # Source: nubus/charts/nubusProvisioning/charts/nats/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-provisioning-nats-config" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-provisioning-nats data: nats.conf: | { server_name: $SERVER_NAME pid_file: "/var/run/nats.pid" port: 4222 http_port: 8222 lame_duck_duration: 30s lame_duck_grace_period: 10s max_payload: 16MB jetstream { max_file_store: 1Gi max_memory_store: 256Mi store_dir: "/data" } authorization { users: [ { user: admin password: $NATS_PASSWORD permissions: { publish: ">" subscribe: ">" } } { user: dispatcher password: $NATS_DISPATCHER_PASSWORD permissions: { publish: ">" subscribe: ">" } } { user: prefill password: $NATS_PREFILL_PASSWORD permissions: { publish: ">" subscribe: ">" } } { user: api password: $NATS_PROVISIONING_API_PASSWORD permissions: { publish: ">" subscribe: ">" } } { user: udmlistener password: $NATS_UDM_LISTENER_PASSWORD permissions: { publish: ">" subscribe: ">" } } { user: udmtransformer password: $NATS_UDM_TRANSFORMER_PASSWORD permissions: { publish: ">" subscribe: ">" } } ] } } ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-common namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: PROVISIONING_API_HOST: ums-provisioning-api PROVISIONING_API_PORT: "80" NATS_HOST: ums-provisioning-nats NATS_PORT: "4222" ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-wait-for-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: wait-for-api.sh: |+ #!/bin/bash # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH set -xo pipefail [ -z "$1" ] && { echo "A url is required as the first argument" exit 1 } set -uxo pipefail retry_interval=2 response_code=404 timeout_duration=240 end_time=$((SECONDS + timeout_duration)) while [ $response_code -ne 401 ]; do if [ $SECONDS -ge $end_time ]; then echo "Timeout reached. Exiting." exit 1 fi echo "Waiting for the Provisioning API to be available ..." response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" -X POST "$1") if [ "${response_code}" -ne 401 ]; then echo "Provisioning API is not reachable, status code: $response_code" cat response.txt sleep ${retry_interval} else echo "The Provisioning API is reachable" exit 0 fi done echo "Permanent error ocurred. Exiting." exit 1 ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: LOG_LEVEL: "INFO" DEBUG: "false" ROOT_PATH: "/" CORS_ALL: "false" wait-for-nats.py: | #!/usr/bin/env python3 import os import asyncio from nats.aio.client import Client as NATS async def error_cb(e): print(f"Unavailable, waiting 2 seconds. Error: {e}") await asyncio.sleep(2) async def check_nats(): nc = NATS() print("Checking if NATS server can be reached...") await nc.connect( servers=[f"nats://{os.environ['NATS_HOST']}:{os.environ['NATS_PORT']}"], error_cb=error_cb, user=os.environ['NATS_USER'], password=os.environ['NATS_PASSWORD'], ) print("Success, the NATS server is available") await nc.close() asyncio.run(check_nats()) ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-dispatcher namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: LOG_LEVEL: "INFO" NATS_MAX_RECONNECT_ATTEMPTS: "5" UDM_HOST: "ums-udm-rest-api" UDM_PORT: "9979" ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-prefill namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: MAX_PREFILL_ATTEMPTS: "5" NATS_MAX_RECONNECT_ATTEMPTS: "5" LOG_LEVEL: "INFO" UDM_HOST: "ums-udm-rest-api" UDM_PORT: "9979" wait-for-udm.py: | #!/bin/python3 import os import time import sys from univention.admin.rest.client import UDM udm = UDM.http( f"http://{os.environ['UDM_HOST']}:{os.environ['UDM_PORT']}/udm/", os.environ["UDM_USERNAME"], os.environ["UDM_PASSWORD"], ) timeout = int(os.environ.get("TIMEOUT", "600")) start_time = time.time() while time.time() - start_time < timeout: print("Checking if UDM Rest API can be reached...") try: udm.get_ldap_base() print("Success, UDM Rest API is available") sys.exit(0) except Exception as e: print(f"Unavailable, waiting 2 seconds. Error: {e}") time.sleep(2) print("Timeout reached, giving up") sys.exit(1) ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-udm-transformer namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: LDAP_PUBLISHER_NAME: "udm-listener" LOG_LEVEL: "INFO" UDM_HOST: "ums-udm-rest-api" UDM_PORT: "9979" LDAP_HOST: "ums-ldap-server-primary" LDAP_PORT: "389" LDAP_TLS_MODE: "off" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" LDAP_BIND_DN: "cn=admin,dc=swp-ldap,dc=internal" ... --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-register-consumers namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning helm.sh/chart: nubusProvisioning-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: PROVISIONING_API_BASE_URL: "http://ums-provisioning-api/v1/subscriptions" UDM_HOST: "ums-udm-rest-api" UDM_PORT: "9979" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" wait-for-data-loader.sh: | #!/bin/bash # TODO: find a way to not leak the udm passwort into the log set -euxo pipefail while ! (set +x; curl -o- --fail -X GET -u "${UDM_USERNAME}:${UDM_PASSWORD}" "http://${UDM_HOST}:${UDM_PORT}/udm/settings/data/cn=stack-data-ums.done,cn=data,cn=univention,${LDAP_BASE_DN}" -H 'Accept: application/json'); do echo "Data loader not finished yet, waiting..." sleep 2 done echo "Success, the data loader has finished." ... --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-selfservice-listener-common namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: selfservice-listener helm.sh/chart: nubusSelfServiceConsumer-0.14.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" data: LOG_LEVEL: "INFO" MAX_UMC_REQUEST_RETRIES: "5" PROVISIONING_API_BASE_URL: "http://ums-provisioning-api" UMC_SERVER_URL: "http://ums-umc-server" MAX_ACKNOWLEDGEMENT_RETRIES: "3" ... --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-selfservice-listener-scripts namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: selfservice-listener helm.sh/chart: nubusSelfServiceConsumer-0.14.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" data: wait-for-provisioning-api.sh: | set -uo pipefail retry_interval=2 response_code=404 timeout_duration=120 end_time=$((SECONDS + timeout_duration)) while [ "$response_code" -ne 200 ]; do if [ $SECONDS -ge $end_time ]; then echo "Timeout reached. Exiting." exit 1 fi echo "Waiting for the Provisioning API to be available ..." response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}") if [ "${response_code}" -ne 200 ]; then echo "Provisioning API is not reachable, status code: $response_code" cat response.txt sleep ${retry_interval} else echo "The Provisioning API is reachable" exit 0 fi done echo "Permanent error ocurred. Exiting." exit 1 ... --- # Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: 'ums-stack-data-ums-data' namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums data: 00-service-accounts.yaml: |- # Source: data-files/default/00-service-accounts.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH # Initializes the base structure for service accounts. --- action: create module: groups/group position: cn=groups,{{ ldapBaseDn }} properties: name: "Domain Service Users" 00-umc-init.yaml: |- # Source: data-files/default/00-umc-init.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH # Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/base/univention-lib/shell/umc.sh#L85 # "umc_init" is called from many join scripts --- action: create module: container/cn position: cn=univention,{{ ldapBaseDn }} properties: name: UMC --- action: create module: container/cn position: cn=policies,{{ ldapBaseDn }} properties: name: UMC policyPath: true --- action: create module: container/cn position: cn=UMC,cn=univention,{{ ldapBaseDn }} properties: name: operations --- action: create module: policies/umc position: cn=UMC,cn=policies,{{ ldapBaseDn }} properties: name: default-umc-all --- action: ensure_list_contains module: groups/group position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }} policies: policies/umc: - "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}" --- action: create module: policies/umc position: cn=UMC,cn=policies,{{ ldapBaseDn }} properties: name: default-umc-users --- action: ensure_list_contains module: groups/group position: cn=Domain Users,cn=groups,{{ ldapBaseDn }} policies: policies/umc: - "cn=default-umc-users,cn=UMC,cn=policies,{{ ldapBaseDn }}" 09-set-mail-domain.yaml: |- # Source: data-files/default/09-set-mail-domain.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # TODO: move this back to stack-data-swp after solving # https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286 action: create module: mail/domain position: cn=domain,cn=mail,{{ ldapBaseDn }} properties: name: {{ externalMailDomain }} 10-ldap-server.yaml: |- # Source: data-files/default/10-ldap-server.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L254 action: "create" module: "users/user" position: "cn=users,{{ ldapBaseDn }}" properties: username: "Administrator" lastname: "Administrator" # TODO: Workaround. We configure currently "firstname" and # "mailPrimaryAddress" as required via UCR settings. # See: https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286 firstname: "Admin" mailPrimaryAddress: "administrator@{{ externalMailDomain }}" password: "{{ initialPasswordAdministrator }}" primaryGroup: "cn=Domain Admins,cn=groups,{{ ldapBaseDn }}" guardianRoles: - "guardian:builtin:super-admin" --- # See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L265 action: ensure_list_contains module: groups/group position: cn=Domain Users,cn=groups,{{ ldapBaseDn }} properties: users: - "uid=Administrator,cn=users,{{ ldapBaseDn }}" --- action: ensure_list_contains module: groups/group position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }} properties: users: - "uid=Administrator,cn=users,{{ ldapBaseDn }}" 35-management-console-module-udm.yaml: |- # Source: data-files/default/35-management-console-module-udm.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH # Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/management/univention-management-console-module-udm/35univention-management-console-module-udm.inst --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-all" description: "UDM - All operations" flavor: "" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-users" description: "UDM - Users" flavor: "users/user" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=users/user" - command: "udm/*" option: "!objectType" - command: "udm/query" option: "objectType=groups/group" - command: "udm/properties" option: "objectType=groups/group" - command: "udm/values" option: "objectType=groups/group" - command: "udm/properties" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/query" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-groups" description: "UDM - Groups" flavor: "groups/group" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=groups/group" - command: "udm/*" option: "!objectType" - command: "udm/query" option: "objectType=users/user" - command: "udm/properties" option: "objectType=users/user" - command: "udm/values" option: "objectType=users/user" - command: "udm/query" option: "objectType=computers/*" - command: "udm/properties" option: "objectType=computers/*" - command: "udm/values" option: "objectType=computers/*" - command: "udm/properties" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/query" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-policies" description: "UDM - Policies" flavor: "policies/policy" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=policies/*" - command: "udm/*" option: "!objectType" - command: "udm/properties" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/query" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-navigation" description: "UDM - Navigation" flavor: "navigation" hosts: [] objectFlag: [] operation: - command: "udm/get" option: "" - command: "udm/layout" option: "" - command: "udm/meta_info" option: "" - command: "udm/nav/container/query" option: "" - command: "udm/nav/object/query" option: "" - command: "udm/policies" option: "" - command: "udm/properties" option: "" - command: "udm/types" option: "" - command: "udm/values" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-portal" description: "UDM - Portal settings" flavor: "settings/portal_all" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=settings/portal*" - command: "udm/types" option: "" - command: "udm/get" option: "" - command: "udm/put" option: "" - command: "udm/properties" option: "" - command: "udm/values" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-new-portal" description: "UDM - Portal" flavor: "portals/all" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=portals/*" - command: "udm/types" option: "" - command: "udm/get" option: "" - command: "udm/put" option: "" - command: "udm/properties" option: "" - command: "udm/values" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-syntax" description: "UDM - Syntax" flavor: "" hosts: [] objectFlag: [] operation: - command: "udm/syntax/choices/info" option: "" - command: "udm/syntax/choices" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-validate" description: "UDM - Validate" flavor: "" hosts: [] objectFlag: [] operation: - command: "udm/validate" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-reports" description: "UDM - Reports" flavor: "" hosts: [] objectFlag: [] operation: - command: "udm/reports/query" option: "" - command: "udm/reports/create" option: "" - command: "udm/reports/get" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-usertemplates" description: "UDM - Apply User Templates" flavor: "settings/usertemplate" hosts: [] objectFlag: [] operation: - command: "udm/get" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-blocklists" description: "UDM - Blocklists" flavor: "blocklists/all" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "objectType=blocklists/*" flavor: "blocklists/all" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-contacts" description: "UDM - Contacts" flavor: "users/contact" hosts: [] objectFlag: [] operation: - command: "udm/reports/query" option: "" - command: "udm/meta_info" option: "" - command: "udm/containers" option: "" - command: "udm/types" option: "" - command: "udm/properties" option: "" - command: "udm/layout" option: "" - command: "udm/policies" option: "" - command: "udm/values" option: "" - command: "udm/query" option: "" - command: "udm/*" option: "objectType=users/contact" - command: "udm/*" option: "!objectType" - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-printers" description: "UDM - Printers" flavor: "shares/print" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "!objectType" - command: "udm/*" option: "objectType=shares/print*" - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-dhcp" description: "UDM - DHCP" flavor: "dhcp/dhcp" hosts: [] objectFlag: [] operation: - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=dhcp/*" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-dns" description: "UDM - DNS" flavor: "dns/dns" hosts: [] objectFlag: [] operation: - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=dns/*" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-mail" description: "UDM - Mail" flavor: "mail/mail" hosts: [] objectFlag: [] operation: - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=mail/*" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-network" description: "UDM - Network" flavor: "networks/network" hosts: [] objectFlag: [] operation: - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=networks/network" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-shares" description: "UDM - Shares" flavor: "shares/share" hosts: [] objectFlag: [] operation: - command: "udm/*" option: "!objectType" - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=shares/share" - command: "udm/properties" option: "objectType=policies/*" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-computers" description: "UDM - Computers" flavor: "computers/computer" hosts: [] objectFlag: [] operation: - command: "udm/query" option: "objectType=policies/*" - command: "udm/layout" option: "objectType=policies/*" - command: "udm/*" option: "objectType=computers/*" - command: "udm/query" option: "objectType=groups/group" - command: "udm/properties" option: "objectType=policies/*" - command: "udm/*" option: "!objectType" - command: "udm/properties" option: "objectType=groups/group" - command: "udm/values" option: "objectType=groups/group" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "welcome-all" description: "Welcome" flavor: "" hosts: [] objectFlag: [] operation: - command: "welcome/*" option: "" --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-license" flavor: "license-import" description: "UDM - License Import" operation: - command: "udm/license/*" option: "" hosts: [] objectFlag: [] --- action: create module: settings/umc_operationset position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "udm-request-license" flavor: "" description: "UDM - Request new license" operation: - command: "udm/request_new_license" option: "" hosts: [] objectFlag: [] --- action: ensure_list_contains module: policies/umc position: "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}" properties: allow: - "cn=welcome-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-contacts,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-groups,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-users,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-computers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-printers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-blocklists,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-dhcp,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-dns,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-navigation,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-mail,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-network,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-policies,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-shares,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-new-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-syntax,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-request-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-validate,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-reports,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" - "cn=udm-usertemplates,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" --- action: create module: policies/umc position: cn=UMC,cn=policies,{{ ldapBaseDn }} properties: name: default-udm-self --- action: ensure_list_contains module: policies/umc position: "cn=default-udm-self,cn=UMC,cn=policies,{{ ldapBaseDn }}" properties: allow: - "cn=udm-self,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" 39-domain-portal.yaml: |- # Source: data-files/default/39-domain-portal.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Change showUmc in the domain portal action: "modify" module: "portals/portal" position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: showUmc: {{ showUmc }} --- # enable SAML login tile action: "modify" module: "portals/entry" position: "cn=login-saml,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: activated: true 40-self-service.yaml: |- # Source: data-files/default/40-self-service.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: ucs/management/univention-self-service/34univention-self-service.inst action: "create" module: "policies/umc" position: "cn=UMC,cn=policies,{{ ldapBaseDn }}" properties: name: "selfservice-umc-servers" ldapFilter: "(|(objectClass=univentionMemberserver)(objectClass=univentionDomainController))" --- action: "ensure_list_contains" module: "policies/umc" position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" properties: allow: - "allow=cn=passwordchange-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" # TODO: Check if we need this in the container stack (if so, add the missing # schema aspects), otherwise remove. # --- # action: "modify" # module: "container/cn" # position: "cn=dc,cn=computers,{{ ldapBaseDn }}" # properties: # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" # --- # action: "modify" # module: "policies/umc" # position: "cn=memberserver,cn=computers,{{ ldapBaseDn }}" # properties: # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" --- # Source: ucs/management/univention-self-service/35univention-self-service-passwordreset-umc.inst action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionPasswordSelfServiceEmail" CLIName: "PasswordRecoveryEmail" module: ["users/user"] syntax: "emailAddress" default: "" ldapMapping: "univentionPasswordSelfServiceEmail" objectClass: "univentionPasswordSelfService" shortDescription: "Password recovery e-mail address" longDescription: "During the password recovery process an e-mail is sent to the specified e-mail address. Password recovery via e-mail is only available for users if configured and enabled by the administrator." translationShortDescription: de_DE: "E-Mail-Adresse zur Passwort-Wiederherstellung" fr_FR: "Adresse e-mail pour la réinitialisation du mot de passe" translationLongDescription: de_DE: "An diese E-Mail-Adresse wird während der Passwort-Wiederherstellung eine Mail verschickt. Der Mail-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde." fr_FR: "Lors de la réinitialisation du mot de passe, un e-mail est envoyé à l’adresse spécifiée. La réinitialisation du mot de passe par e-mail est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionPasswordSelfServiceMobile" CLIName: "PasswordRecoveryMobile" module: ["users/user"] syntax: "phone" default: "" objectClass: "univentionPasswordSelfService" ldapMapping: "univentionPasswordSelfServiceMobile" shortDescription: "Mobile phone number" translationShortDescription: de_DE: "Mobilfunknummer" fr_FR: "Numéro de téléphone portable" longDescription: "During the password recovery process a SMS is sent to the specified mobile phone number. Password recovery via SMS is only available for users if configured and enabled by the administrator." translationLongDescription: de_DE: "An diese Mobilfunknummer wird während der Passwort-Wiederherstellung eine SMS verschickt. Der SMS-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde." fr_FR: "Lors de la réinitialisation du mot de passe, un SMS est envoyé au numéro de portable spécifié. La réinitialisation du mot de passe par SMS est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionPasswordRecoveryEmailVerified" CLIName: "PasswordRecoveryEmailVerified" module: ["users/user"] syntax: "TrueFalseUpper" objectClass: "univentionPasswordSelfService" ldapMapping: "univentionPasswordRecoveryEmailVerified" shortDescription: "Email address verified" translationShortDescription: de_DE: "E-Mail-Adresse verifiziert" fr_FR: "Adresse e-mail vérifiée" longDescription: "This attribute indicates whether an email address is verified or not. The value is set to False both by default and in case PasswordRecoveryMail is changed. When an email address is verified the value will be set to True. " translationLongDescription: de_DE: "Dieses Attribut zeigt an, ob eine E-Mail-Adresse bereits verifiziert ist oder nicht. Anfänglich und bei Änderung der PasswordRecoveryMail ist der Wert auf False gesetzt. Wenn es zur Verifikation einer E-Mail-Adresse kommt, wird der Wert auf True gesetzt." fr_FR: "Cet attribut indique si une adresse e-mail a déjà été vérifiée ou non. La valeur est réglée sur False par défaut et lorsque PasswordRecoveryMail est modifié. Lorsque’une adresse e-mail a été vérifiée, la valeur est réglée sur True." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionRegisteredThroughSelfService" CLIName: "RegisteredThroughSelfService" module: ["users/user"] syntax: "TrueFalseUpper" objectClass: "univentionPasswordSelfService" ldapMapping: "univentionRegisteredThroughSelfService" shortDescription: "Self-registration" translationShortDescription: de_DE: "Selbstregistrierung" fr_FR: "Auto-inscription" longDescription: "This attribute indicates whether a user has self-registered through the Self Service module." translationLongDescription: de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul registriert hat." fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a utilisé le module de libre-service pour s’inscrire par ses propres moyens." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionDeregisteredThroughSelfService" CLIName: "DeregisteredThroughSelfService" module: ["users/user"] syntax: "TrueFalseUpper" objectClass: "univentionPasswordSelfService" ldapMapping: "univentionDeregisteredThroughSelfService" shortDescription: "Self-deregistration" translationShortDescription: de_DE: "Selbst-Deregistrierung" fr_FR: "Auto-désinscription" longDescription: "This attribute indicates whether a user has requested to deregister his account." translationLongDescription: de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul deregistriert hat." fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a demandé sa désinscription." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/extended_attribute" position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" properties: name: "UniventionDeregistrationTimestamp" CLIName: "DeregistrationTimestamp" module: ["users/user"] syntax: "string" objectClass: "univentionPasswordSelfService" ldapMapping: "univentionDeregistrationTimestamp" shortDescription: "Deregistration timestamp" translationShortDescription: de_DE: "Deregistrierungs-Timestamp" fr_FR: "Horodatage de la désinscription" longDescription: "Timestamp of the moment the user requested deregistration of his account" translationLongDescription: de_DE: "Zeitstempel des Zeitpunkts, zu dem der Benutzer die Abmeldung seines Kontos beantragt hat." fr_FR: "Horodatage de l’instant auquel l’utilisateur ou l’utilisatrice a demandé sa désinscription." tabAdvanced: False tabName: "Password recovery" translationTabName: de_DE: "Passwort-Wiederherstellung" fr_FR: "Réinitialisation du mot de passe" multivalue: False valueRequired: False mayChange: True doNotSearch: False deleteObjectClass: False overwriteTab: False fullWidth: True --- action: "create" module: "settings/usertemplate" position: "cn=templates,cn=univention,{{ ldapBaseDn }}" properties: name: "selfserviceregistrationtemplate" displayName: " <:strip>" unixhome: "/home/" primaryGroup: "cn=Domain Users,cn=groups,{{ ldapBaseDn }}" shell: "/bin/bash" --- action: "create" module: "container/cn" position: "{{ ldapBaseDn }}" properties: name: "self registered users" --- action: "create" module: "settings/umc_operationset" position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" properties: name: "passwordreset-all" description: "Password reset service" flavor: "" hosts: [] objectFlag: [] operation: - command: "passwordreset/*" option: "" --- action: "ensure_list_contains" module: "policies/umc" position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" properties: allow: - "allow=cn=passwordreset-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" ... 41-selfservice-portal.yaml: |- # Source: data-files/default/41-selfservice-portal.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- action: "create" module: "portals/entry" position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-password-change" icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWtleSI+PHBhdGggZD0iTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDQiPjwvcGF0aD48L3N2Zz4K activated: True anonymous: False linkTarget: "samewindow" displayName: en_US: "Change your password" de_DE: "Ihr Passwort ändern" description: en_US: "Change your password" de_DE: "Ihr Passwort ändern" link: - - "en_US" - "#/selfservice/passwordchange" --- action: "create" module: "portals/entry" position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-my-profile" icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZWxsaXBzZSBjbGFzcz0iYSIgY3g9Ijc0LjQ1NzQzIiBjeT0iNDguOTk1NzkiIHJ4PSIyMS4yNDEwNiIgcnk9IjIxLjUyMjk1Ii8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTAuMDU3MzcsNzguNDEzMjFjLTIuNjc1NjYtNi4zMTE3MS03LjI3NDc4LTExLjEzNDc3LTE1LjAwMTc3LTExLjQzN2EyNy4wMDI1MiwyNy4wMDI1MiwwLDAsMS00MS4xOTYyMi4wMDAxOEMzOC4zMjgxMiw2Ny41ODksMzUuNDUzLDg2LjYwNzczLDM1LjQ1Myw5OS4wOTA3YzAsOS4wNjk3LDUuOTIxMTUsMTQuNTIwOTMsMTQuODAyODYsMTQuNTIwOTNIOTMuMjgzNTdhMjMuNjg3NTUsMjMuNjg3NTUsMCwwLDEsMTYuNzczOC0zNS4xOTg0MloiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMy44MzgzOCw4MS4xMDgxNWEyMC43MDk0OCwyMC43MDk0OCwwLDEsMCwyMC43MSwyMC43MDk0OEEyMC43MzI2OCwyMC43MzI2OCwwLDAsMCwxMTMuODM4MzgsODEuMTA4MTVabTAsMzguNDE5YTE3LjcwOTQ4LDE3LjcwOTQ4LDAsMSwxLDE3LjcxLTE3LjcwOTQ3QTE3LjcyOTQsMTcuNzI5NCwwLDAsMSwxMTMuODM4MzgsMTE5LjUyNzFaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTguNzczNDQsOTMuMzM4NDRsLTEwLjQxMzMzLDEwLjQxMzMzLDMuMzYyMTIsMy40NDY5TDEyMi4xNzc5Miw5Ni43NDNhMi40MDczNSwyLjQwNzM1LDAsMCwwLTMuNDA0NDgtMy40MDQ1NFoiLz48cG9seWdvbiBjbGFzcz0iYSIgcG9pbnRzPSIxMDcuMjgzIDEwNC44MjkgMTA2LjAwNyAxMDkuNTEgMTEwLjY0NiAxMDguMjQ0IDEwNy4yOTkgMTA0LjgxMyAxMDcuMjgzIDEwNC44MjkiLz48L3N2Zz4= activated: True anonymous: False linkTarget: "samewindow" displayName: en_US: "My Profile" de_DE: "Mein Profil" description: en_US: "Manage profile" de_DE: "Profil verwalten" link: - - "en_US" - "#/selfservice/profile" --- action: "create" module: "portals/category" position: "cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-profile" displayName: en_US: "User Profile" de_DE: "Benutzerprofil" entries: - "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" --- action: "create" module: "portals/entry" position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-protect-account" icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTEwNi4wNTk5Myw3Mi4yMjA3YTcuNjk5LDcuNjk5LDAsMCwwLTcuNTYyMTMtNy41NTUzNmMtLjg4Ny0uMDIxNTQtMS43NzUtLjAwMzE3LTIuNzc3ODMtLjAwMzE3VjYzLjc2NDFjMC0zLjA3NDc3LjAwNTA2LTYuMTQ5Ni0uMDAxLTkuMjI0NDNBMjAuNzEyODksMjAuNzEyODksMCwwLDAsNTQuNjExMiw1MC42Nzc1NWEyOC43OTU0MiwyOC43OTU0MiwwLDAsMC0uMzIzMDYsNC4xMDM1MmMtLjA0NTc3LDMuMjU4MTgtLjAxNDc3LDYuNTE3NDUtLjAxNDc3LDkuODc2NC0uNzcyNTgsMC0xLjQ5MTI3LS4wMDExNi0yLjIwOTkuMDAwMjRhNy43ODI4Miw3Ljc4MjgyLDAsMCwwLTguMTUwMTQsOC4xMjgxOHEtLjAwNywxNy42ODAyLS4wMDEyMywzNS4zNjA0MWMuMDAwMzcsNC4zMjkyMiwyLjIzODIyLDcuMTY3NjYsNi40NDI0NSw4LjE4NDIxYS43MTc2MS43MTc2MSwwLDAsMSwuMTk1MTMuMTI2MjhoNDguODk0Yy41MDYxLS4xNTk4NSwxLjAxODc0LS4zMDE3LDEuNTE3MjEtLjQ4MjU1YTcuNjM5ODMsNy42Mzk4MywwLDAsMCw1LjEwMzQ2LTcuMDk4NjlRMTA2LjEwNzYzLDkwLjU0ODE2LDEwNi4wNTk5Myw3Mi4yMjA3Wk02MS4xOTQ3LDYyLjQ4ODFjLjAwMDEyLTIuNjY5NzQtLjAxMTE3LTUuMzM5Ni4wMDI3NC04LjAwOTM0YTEzLjc5MjQxLDEzLjc5MjQxLDAsMCwxLDI3LjM3NC0yLjU5LDM0LjkyNzg0LDM0LjkyNzg0LDAsMCwxLC4yMTgzOCw0Ljc1NjljLjAzMjQxLDIuNjM3NDUuMDA4ODUsNS4yNzU1Ny4wMDg4NSw3Ljk2OEg2MS4xOTQ2NEM2MS4xOTQ2NCw2My44NzcyLDYxLjE5NDY0LDYzLjE4MjYyLDYxLjE5NDcsNjIuNDg4MVpNODkuMDI5OSw5Ni4zNzlhNS4wMTI4Miw1LjAxMjgyLDAsMCwxLTQuNTk2LDMuNTMyMjJxLS4yNDU4MS4wMTg4Ny0uNDgzNTIuMDE4OGE1LjEzMTUyLDUuMTMxNTIsMCwwLDEtNC40MTQ1NS0yLjQ0NjIzLDcuMzQxNjMsNy4zNDE2MywwLDAsMS00LjUwNjgzLDEuNTMwNTgsNy40MzgxOCw3LjQzODE4LDAsMSwxLDMuODE5NjQtMTMuODAxMDgsMS44ODE2NCwxLjg4MTY0LDAsMCwxLDEuNjk2NTktMS4wODAzOSwxLjkzMTUzLDEuOTMxNTMsMCwwLDEsLjE5NDk1LjAwOTg5LDEuODk0ODMsMS44OTQ4MywwLDAsMSwxLjY5MjYzLDEuODkyN3EuMDA2NTksMS41NTY0OS4wMDI4NiwzLjExM2wtLjAwMDU0LDEuMzcwNzNMODIuNDM0LDkxLjcxNzE2Yy0uMDAxNTIuOTc3NDgtLjAwMzExLDEuOTU1LjAwNiwyLjkzMjI1YTEuNTQxNzIsMS41NDE3MiwwLDAsMCwxLjA0MDgzLDEuNDIzMSwxLjY1NTQ3LDEuNjU1NDcsMCwwLDAsLjU1MjMxLjA5NjE5LDEuNDgzNTIsMS40ODM1MiwwLDAsMCwxLjE2NS0uNTUyMzcsMS42MTI0OCwxLjYxMjQ4LDAsMCwwLC4yODIyOS0uNTEzMjQsMTAuNzc2MTEsMTAuNzc2MTEsMCwwLDAtMS45Mjg1My0xMC41MjI3MSwxMC41NjIwOSwxMC41NjIwOSwwLDAsMC04LjU3OTQtNC4wNjc1cS0uMjU0NywwLS41MTI5NC4wMDk1OGExMS4wNjQyOCwxMS4wNjQyOCwwLDAsMC0xLjQyMDUzLDIxLjkzODQ4LDExLjUyMjE5LDExLjUyMjE5LDAsMCwwLDIuMDIyNy4xODMyOSwxMS4wMTcyNywxMS4wMTcyNywwLDAsMCw1LjU0NTU5LTEuNTMxLDIuMjI2LDIuMjI2LDAsMCwxLDEuMTAyNTQtLjMwOTU3LDEuODIxMjQsMS44MjEyNCwwLDAsMSwxLjYwODI4Ljk1ODYyLDEuODcsMS44NywwLDAsMS0uNzMxLDIuNTY2NTMsMTQuMjU1MzQsMTQuMjU1MzQsMCwwLDEtNC4zMTM0MSwxLjcyNjEzLDE1LjMxODg2LDE1LjMxODg2LDAsMCwxLTMuMjQ2MjIuMzUxLDE0Ljg0MjY4LDE0Ljg0MjY4LDAsMCwxLTE0LjU0MzQ2LTExLjc0LDE0Ljg2NDU5LDE0Ljg2NDU5LDAsMCwxLDExLjI5MDI5LTE3LjY3NTksMTQuODI2NzIsMTQuODI2NzIsMCwwLDEsMTcuODAyMTgsMTEuNzc3QTE0LjMyNTUsMTQuMzI1NSwwLDAsMSw4OS4wMjk5LDk2LjM3OVoiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTc1LjAxOTUzLDg3LjkxMDc3YTMuNjYzNzYsMy42NjM3NiwwLDEsMC0uMDIyMjgsNy4zMjc0NWwuMDA0ODguMjQ5NTcuMDA0ODgtLjAwMDQ5di0uMjQ5MDhhMy42NzM0OSwzLjY3MzQ5LDAsMCwwLDMuNjUyMjMtMy42NDkxN0EzLjY2NTgzLDMuNjY1ODMsMCwwLDAsNzUuMDE5NTMsODcuOTEwNzdaIi8+PC9zdmc+ activated: True anonymous: False linkTarget: "samewindow" displayName: en_US: "Protect your account" de_DE: "Kontozugang schützen" description: en_US: "Protect your account" de_DE: "Kontozugang schützen" link: - - "en_US" - "#/selfservice/protectaccount" --- action: "create" module: "portals/entry" position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-password-forgotten" icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExOS4yMjg5MSw3NC40OTg1NWgtNy4xNDAyQTQxLjcxNjg4LDQxLjcxNjg4LDAsMCwwLDcyLjc4NzMyLDMzLjQwODM0YTMuMDI1NDksMy4wMjU0OSwwLDAsMC0uNTQ2NjktLjA3OTY1Yy0uMzEwMTktLjAxMzc5LS42MTIxMy4wMTI2NC0uOTIxLjAwNTc0LS4zMDc2MS0uMDA2NzgtLjYwNjkzLS4wNDYwOC0uOTE2MDctLjA0NjA4LS40Mjk0NSwwLS44NTIwNS4wNDY4MS0xLjI3OTc5LjA1OTg3LS42Mzc1MS4wMTkwNS0xLjI3MjU4LjA0MTA4LTEuOTAzMDcuMDg4ODctLjcxNzcyLjA1NDQ0LTEuNDI4LjE0MDI2LTIuMTM4NjguMjMxMTQtLjYyNC4wOC0xLjI0NzkyLjE1NTQ2LTEuODYzNTguMjYzMDYtLjc0Mjg2LjEyOTIxLTEuNDc0MTguMjk3MTItMi4yMDY3My40NjU4OC0uNTUxMTUuMTI3NzUtMS4xMDUyOC4yNDMtMS42NDgxOS4zOTI1OC0uODM1NTcuMjI4NzYtMS42NTQxOC41MDQ3Ni0yLjQ3MjQxLjc4NDc5LS40MTMzMy4xNDIzNC0uODMzNjIuMjY2NDgtMS4yNDExNS40MjEyNy0uOTkwNzMuMzc0NDUtMS45NTg1Ni44MDI5MS0yLjkxODE1LDEuMjUyNDQtLjIxNjYyLjEwMTgtLjQ0MS4xODc4Ni0uNjU1NjQuMjkzMzNhNDEuNjg2ODIsNDEuNjg2ODIsMCwwLDAtMTAuMDQxNjMsNi44Nzg2Yy0uMDUxODguMDQ4LS4wNzEuMTE0MzItLjExODc3LjE2NTFBNDEuNTY2LDQxLjU2NiwwLDAsMCwyOC43MzAxOSw3My4xNjI4NmMtLjAyMDM5LjQ2NC4wMTE4NC45MjEuMDA2NTMsMS4zODMxOGEyLjk5OTUyLDIuOTk5NTIsMCwwLDAtLjA0NTg0LjQ1NGMwLC4zNTE5My4wNDQxMy42OTI4MS4wNTI4NiwxLjA0MjcyLjAxODkyLjc5OC4wNTY4OCwxLjU5MTI1LjEyMDYsMi4zODE3OC4wNDY4Mi41NzI1MS4xMDU4NCwxLjE0LjE3NTY2LDEuNzA1ODdxLjE1NDE5LDEuMjY0LjM4NCwyLjUwOWMuMDkxMy40OTEuMTg5MzMuOTc4LjI5Nzg1LDEuNDYyODlxLjI5NTgsMS4zMzE5MS42NzkzMiwyLjYzNmMuMTIwNzMuNDEwNjQuMjQ0ODcuODE4NDguMzc3ODEsMS4yMjM4MnEuNDQ2NCwxLjM2NjYuOTg4NywyLjY5NjE2Yy4xNDMuMzUxNjkuMjg4MDkuNzAxLjQ0MDM3LDEuMDQ3ODVxLjU4ODc4LDEuMzQzLDEuMjc0NiwyLjY0MTg1Yy4xNzMyOC4zMjk0Ny4zNDkxMi42NTYuNTMxLjk4MDE2cS43MDQ1OCwxLjI1NTc0LDEuNDk4NTMsMi40NjQxOC4zMzEzNC41MDU0Ni42NzYxNS45OTk2OS43OTM0LDEuMTM2MjcsMS42NjUsMi4yMjVjLjI3NTM5LjM0Mzc1LjU1NjM5LjY4MDI5Ljg0MjIyLDEuMDE1MDcuMzE5NzYuMzc0NDUuNjA3MTguNzY5MjkuOTQxMjgsMS4xMzQyOGEzLjAyNjE2LDMuMDI2MTYsMCwwLDAsLjQ1NjM2LjQwMzA4LDQxLjYxNTc5LDQxLjYxNTc5LDAsMCwwLDU5LjgwNDQ1LjkyNTU5LDMuMDIwODksMy4wMjA4OSwwLDEsMC00LjI3MjIyLTQuMjcyMTVBMzUuNjEzMzEsMzUuNjEzMzEsMCwwLDEsNDMuMjg0Miw5OC4xMTEyOWMtLjI0MTg4LS4yODM1MS0uNDgwMjgtLjU2OTEtLjcxMjQ2LS44NTg3MXEtLjc0NjE2LS45MzExOC0xLjQzMDQ4LTEuOTExNzQtLjI5MjIzLS40MTktLjU3MTQxLS44NDQ3OS0uNjc4MjMtMS4wMzQyNy0xLjI4Njg3LTIuMTE1NzhjLS4xNTQ0OC0uMjc1NTItLjMwMzgzLS41NTMxLS40NTA2Mi0uODMyMTZxLS41ODQtMS4xMDk5LTEuMDkxOTItMi4yNjM0MmMtLjEyOTctLjI5NTc4LS4yNTM4NC0uNTkzNjMtLjM3NTMtLjg5Mjc3cS0uNDYxNy0xLjEzNDc5LS44NDYtMi4zMDcxOS0uMTcwMzgtLjUyMTg1LS4zMjM4NS0xLjA0OTA3LS4zMjUzOC0xLjEwNzUxLS41Nzg1LTIuMjQ0NTctLjE0MDM0LS42MzExNS0uMjU4LTEuMjY3ODhjLS4xMzAwNy0uNzAwMjUtLjIzNjI3LTEuNDA4MzItLjMyNDc3LTIuMTIyMDctLjA2MDYxLS40OTUxOC0uMTEzMzQtLjk5MTU4LS4xNTMzMi0xLjQ5MS0uMDUzNTktLjY1OC0uMDgzNjgtMS4zMjIzOC0uMTAwNzctMS45ODk4Ni0uMDIwMi0uODI4NS0uMDQ4MjItMS42NTYwNy0uMDExMjMtMi40OTE4OUEzNS43MjEyLDM1LjcyMTIsMCwwLDEsNTcuOTAxODIsNDEuNjA3Yy4xNjYtLjA2MjA3LjMzNjQ5LS4xMTEyLjUwMzQyLS4xNzA4NC44NzUzLS4zMTQ0NSwxLjc2MzEyLS42MDE1LDIuNjY3NDItLjg0Nzc3LjMzMy0uMDkwMDkuNjcxODEtLjE1OTU1LDEuMDA3NjktLjIzOTkzLjc1MDYxLS4xODEwOSwxLjUwNi0uMzQ4NjQsMi4yNzMyNS0uNDgxMi40NDE1OS0uMDc1NTcuODg3OTQtLjEyOTIyLDEuMzMzMzEtLjE4ODE4LjY4MTgzLS4wOTEyNCwxLjM2NjQtLjE3MjI0LDIuMDU4OS0uMjI0MTIuNDk3ODctLjAzNjg2Ljk5OS0uMDUzODMsMS41LS4wNzAwNy42NDc4OS0uMDIxMTcsMS4yOTgzNC0uMDI4MzgsMS45NTM2OC0uMDE0MTZhMzUuNjc4MywzNS42NzgzLDAsMCwxLDM0Ljg0Njg2LDM1LjEyNzg3SDk4Ljk1NzU0Yy0yLjIxNTUxLDAtMi43NDY0NiwxLjI4MTgtMS4xNzk4MSwyLjg0ODM5bDguNDY3MTEsOC40NjcxYTQuMDQwMDgsNC4wNDAwOCwwLDAsMCw1LjY5Njg0LDBsOC40NjcxNi04LjQ2NzFDMTIxLjk3NTM3LDc1Ljc4MDM1LDEyMS40NDQ1NCw3NC40OTg1NSwxMTkuMjI4OTEsNzQuNDk4NTVaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik01Ny4wMjQ2Miw3My4wMjMyN3EtLjAwMyw3LjY4OTMzLS4wMDA1NSwxNS4zNzg3M0EzLjM3NDkyLDMuMzc0OTIsMCwwLDAsNTkuODI2LDkxLjk2MTM4YS4zMTI3Ni4zMTI3NiwwLDAsMSwuMDg0ODQuMDU0OTNIODEuMTc1NTZjLjIyMDA5LS4wNjk1MS40NDMwNi0uMTMxMjIuNjU5ODUtLjIwOTgzQTMuMzIyNzcsMy4zMjI3NywwLDAsMCw4NC4wNTUsODguNzE5MTNxLjAxODg1LTcuOTcwODUtLjAwMi0xNS45NDE3MWEzLjM0ODQ1LDMuMzQ4NDUsMCwwLDAtMy4yODg4OC0zLjI4NTk1Yy0uMzg1NzQtLjAwOTM0LS43NzE5MS0uMDAxMzQtMS4yMDgxMi0uMDAxMzR2LS4zOTA1NmMwLTEuMzM3MjguMDAyMjUtMi42NzQ1Ni0uMDAwMzctNC4wMTE4NEE5LjAwODM2LDkuMDA4MzYsMCwwLDAsNjEuNjc3MjcsNjMuNDA4YTEyLjUyODU3LDEyLjUyODU3LDAsMCwwLS4xNDA1LDEuNzg0NzNjLS4wMTk5LDEuNDE3LS4wMDY0MSwyLjgzNDUzLS4wMDY0MSw0LjI5NTM1LS4zMzYsMC0uNjQ4NTYtLjAwMDQ5LS45NjExMi4wMDAxMkEzLjM4NDksMy4zODQ5LDAsMCwwLDU3LjAyNDYyLDczLjAyMzI3Wk03MS4wMjkxNCw4Ny41MjM4OGExLjM4MzQ4LDEuMzgzNDgsMCwwLDEtLjk0OTIyLjM2NTI0LDEuNDM5MzEsMS40MzkzMSwwLDAsMS0uOTcyNjYtLjM2MDM1LDEuMjY2NzEsMS4yNjY3MSwwLDAsMS0uNDE1LTEuMDA4NzksMS4zMDA2NiwxLjMwMDY2LDAsMCwxLC40MDEzNy0uOTY3NzgsMS4zNjA0MiwxLjM2MDQyLDAsMCwxLC45ODYzMy0uMzkyNThBMS4zNDA4NCwxLjM0MDg0LDAsMCwxLDcxLjQ0MDI3LDg2LjUyLDEuMjc1NDgsMS4yNzU0OCwwLDAsMSw3MS4wMjkxNCw4Ny41MjM4OFptMy40MDkxOC04LjQ1MjYzQTQuMTYzNjIsNC4xNjM2MiwwLDAsMSw3My42OTAyNyw4MC4wOHEtLjQzMzU5LjQyNDgtMS41NTY2NCwxLjQyODcxYTYuMTM4MjUsNi4xMzgyNSwwLDAsMC0uNDk3MDcuNDk3NTUsMi4wMzQ0NSwyLjAzNDQ1LDAsMCwwLS4yNzkzLjM5MjA5LDEuOTI0NTMsMS45MjQ1MywwLDAsMC0uMTQwNjIuMzU2Yy0uMDM0MTguMTE4NjUtLjA4NC4zMjc2NC0uMTUxMzcuNjI1NDlhMS4wMTU1NCwxLjAxNTU0LDAsMCwxLTEuMDg1OTQuOTQ5MjIsMS4xMTE3MiwxLjExMTcyLDAsMCwxLS43OTg4Mi0uMzEwMDYsMS4yMjA0OCwxLjIyMDQ4LDAsMCwxLS4zMjQyMi0uOTIyMzYsMy4yMzYxMywzLjIzNjEzLDAsMCwxLC44NjcxOC0yLjMxNCwxNC40Njg2NSwxNC40Njg2NSwwLDAsMSwxLjA1OTU3LTEuMDA4M2MuMzg4NjgtLjM0MDgyLjY3MDktLjU5ODE0Ljg0Mzc1LS43NzE0OGEyLjYyMTksMi42MjE5LDAsMCwwLC40Mzg0OC0uNTc5NTksMS40MDcxLDEuNDA3MSwwLDAsMCwuMTc3NzQtLjY5Mzg1LDEuNjExMDcsMS42MTEwNywwLDAsMC0uNTQzLTEuMjMxOTMsMS45ODIyMSwxLjk4MjIxLDAsMCwwLTEuNDAxMzctLjUwMjQ1LDEuOTM4LDEuOTM4LDAsMCwwLTEuNDc4NTIuNTA2ODQsNC4wNDk0NSw0LjA0OTQ1LDAsMCwwLS44MDM3MSwxLjQ5MjE5cS0uMzA5MDgsMS4wMzItMS4xNzY3NSwxLjAzMTc0YTEuMTU4MywxLjE1ODMsMCwwLDEtLjg2MzI5LS4zNjA4NCwxLjEwMjIxLDEuMTAyMjEsMCwwLDEtLjM1MTU2LS43ODAyOCwzLjMwMzc4LDMuMzAzNzgsMCwwLDEsLjU1NzYyLTEuNzU3MzIsNC4yODY0Myw0LjI4NjQzLDAsMCwxLDEuNjI0LTEuNDc0MTIsNS4xMTg4Niw1LjExODg2LDAsMCwxLDIuNDkyMTktLjU4NCw1LjMxOTA5LDUuMzE5MDksMCwwLDEsMi4zMzY5MS40ODgyOEEzLjc5MDIxLDMuNzkwMjEsMCwwLDEsNzQuMjAxLDc1Ljg4NTdhMy4yNTg2MSwzLjI1ODYxLDAsMCwxLC41NTI3NCwxLjgyNTY4QTIuODIxODIsMi44MjE4MiwwLDAsMSw3NC40MzgzMiw3OS4wNzEyNVpNNjQuNTQwNTUsNjguNTQ0NTdjLjAwMDA2LTEuMTYxMTMtLjAwNDg4LTIuMzIyMjYuMDAxMTYtMy40ODMzM2E1Ljk5ODU0LDUuOTk4NTQsMCwwLDEsMTEuOTA1NC0xLjEyNjQ3LDE1LjE5MjQ0LDE1LjE5MjQ0LDAsMCwxLC4wOTUsMi4wNjg4NWMuMDE0MSwxLjE0Ny4wMDM4NCwyLjI5NDQzLjAwMzg0LDMuNDY1MzlINjQuNTQwNTVaIi8+PC9zdmc+ activated: True anonymous: True linkTarget: "samewindow" displayName: en_US: "Password forgotten" de_DE: "Passwort vergessen" description: en_US: "Password forgotten" de_DE: "Passwort vergessen" link: - - "en_US" - '#/selfservice/passwordforgotten' --- action: "create" module: "portals/category" position: "cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service-password" displayName: en_US: "Passwords" de_DE: "Passwörter" entries: - "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" --- action: "create" module: "portals/portal" position: "cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: name: "self-service" defaultLinkTarget: "samewindow" displayName: en_US: "Self Service" de_DE: "Self Service" showUmc: False categories: - "cn=self-service-profile,cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-password,cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}" --- action: "ensure_list_contains" module: "portals/portal" position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" properties: userLinks: - "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" - "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" 42-readonly-user.yaml: |- # Source: data-files/default/42-readonly-user.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- action: create module: groups/group position: cn=groups,{{ ldapBaseDn }} properties: name: "LDAPSearch Users" --- action: create module: users/ldap position: cn=users,{{ ldapBaseDn }} properties: username: "readonly" lastname: "LDAP-system-User" password: {{ readonlyUserPassword }} overridePWHistory: true overridePWLength: true --- # Source: nubus/charts/nubusStackDataUms/templates/configmap-ucr.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-stack-data-ums-ucr" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums data: base.conf: | ad/member: false apache2/autostart: yes apache2/documentroot: /var/www/ apache2/force_https/exclude/http_host/localhost: localhost apache2/force_https/exclude/request_uri/mod-status: /server-status apache2/force_https/exclude/request_uri/univention-portal: /univention/get apache2/loglevel: info apache2/maxclients: 150 apache2/startsite: univention/ auth/methods: ldap directory/manager/rest/authorized-groups/domain-service-users: cn=Domain Service Users,cn=groups,dc=swp-ldap,dc=internal directory/manager/rest/authorized-groups/iam-api-full-access: cn=IAM API - Full Access,cn=groups,dc=swp-ldap,dc=internal directory/manager/rest/debug_level: 5 directory/manager/rest/ldap-connection/user-read/start-tls: 0 directory/manager/rest/show-tracebacks: false directory/manager/starttls: 0 directory/manager/templates/alphanum/whitelist: "" directory/manager/user/activate_ldap_attribute_mailForwardCopyToSelf: yes directory/manager/user_group/uniqueness: true directory/manager/web/language: de_DE.UTF-8 directory/manager/web/modules/autosearch: 1 directory/manager/web/modules/computers/computer/add/default: computers/windows directory/manager/web/modules/groups/group/caching/uniqueMember/timeout: 300 directory/manager/web/modules/groups/group/checks/circular_dependency: yes directory/manager/web/modules/search/advanced_on_open: false directory/manager/web/modules/users/user/add/default: cn=openDesk User,cn=templates,cn=univention,dc=swp-ldap,dc=internal directory/manager/web/modules/users/user/properties/description/syntax: TextArea directory/manager/web/modules/users/user/properties/firstname/required: true directory/manager/web/modules/users/user/properties/homePostalAddress/syntax: postalAddress directory/manager/web/modules/users/user/properties/mailPrimaryAddress/required: true directory/manager/web/modules/users/user/properties/username/syntax: uid directory/manager/web/modules/users/user/search/autosearch: True directory/manager/web/modules/users/user/wizard/property/invite/default: True directory/manager/web/modules/users/user/wizard/property/overridePWLength/default: False directory/manager/web/modules/users/user/wizard/property/overridePWLength/visible: False directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/default: True directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/visible: False directory/manager/web/modules/wizard/disabled: No directory/manager/web/modules/wizards/disabled: no directory/manager/web/sizelimit: 2000 directory/reports/cleanup/age: 43200 directory/reports/cleanup/cron: 0 0 * * * directory/reports/logo: /usr/share/univention-directory-reports/univention_logo.png directory/reports/templates/csv/computer1: computers/computer "CSV Report" /etc/univention/directory/reports/default computers.csv directory/reports/templates/csv/group1: groups/group "CSV Report" /etc/univention/directory/reports/default groups.csv directory/reports/templates/csv/user1: users/user "CSV Report" /etc/univention/directory/reports/default users.csv directory/reports/templates/pdf/computer1: computers/computer "PDF Document" /etc/univention/directory/reports/default computers.rml directory/reports/templates/pdf/group1: groups/group "PDF Document" /etc/univention/directory/reports/default groups.rml directory/reports/templates/pdf/user1: users/user "PDF Document" /etc/univention/directory/reports/default users.rml domainname: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de groups/default/domainadmins: Domain Admins groups/default/printoperators: Printer-Admins hostname: portal kerberos/realm: stub_value ldap/acl/nestedgroups: yes ldap/acl/read/anonymous: no ldap/acl/slavepdc: yes ldap/acl/user/password/change: no ldap/attributeoptions: entry-,lang- ldap/autostart: yes ldap/base: dc=swp-ldap,dc=internal ldap/cachesize: 20000 ldap/client/retry/count: 10 ldap/database/bdb/db_config_options: set_flags ldap/database/bdb/set_flags: DB_LOG_AUTOREMOVE ldap/database/internal/checkpoint: 0 1 ldap/database/internal/envflags: nosync ldap/database/mdb/maxsize: 4295000000 ldap/database/type: mdb ldap/debug/level: none ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal ldap/idlcachesize: 20000 ldap/idletimeout: 360 ldap/index/approx: cn,givenName,mail,sn,uid ldap/index/autorebuild: yes ldap/index/eq: aRecord,automountInformation,cNAMERecord,cn,description,dhcpHWAddress,displayName,entryUUID,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,objectClass,ou,pTRRecord,relativeDomainName,sambaAcctFlags,sambaDomainName,sambaGroupType,sambaPrimaryGroupSID,sambaSID,sambaSIDList,secretary,shadowExpire,sn,uid,uidNumber,uniqueMember,univentionCanonicalRecipientRewriteEnabled,univentionDataType,univentionInventoryNumber,univentionLicenseModule,univentionLicenseObject,univentionMailHomeServer,univentionNagiosHostname,univentionObjectFlag,univentionObjectType,univentionPolicyReference,univentionServerRole,univentionService,univentionShareGid,univentionShareSambaName,univentionShareWriteable,univentionUDMOptionModule,univentionUDMPropertyCLIName,univentionUDMPropertyCopyable,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName ldap/index/pres: aRecord,automountInformation,cn,description,dhcpHWAddress,displayName,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,name,objectClass,ou,relativeDomainName,shadowMax,sn,uid,uidNumber,uniqueMember,univentionMailHomeServer,univentionObjectFlag,univentionPolicyReference,univentionUDMPropertyCLIName,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName ldap/index/quickmode: false ldap/index/sub: aRecord,associatedDomain,automountInformation,cn,default,description,displayName,employeeNumber,givenName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,name,ou,pTRRecord,printerModel,relativeDomainName,sambaSID,sn,uid,univentionInventoryNumber,univentionOperatingSystem,univentionSyntaxDescription,univentionUDMPropertyLongDescription,univentionUDMPropertyShortDescription,zoneName ldap/k5pwd: true ldap/limits: users time.soft=-1 time.hard=-1 ldap/master/port: 389 ldap/master: ums-ldap-server-primary ldap/maxopenfiles: 8192 ldap/monitor: false ldap/overlay/lastbind/precision: 3600 ldap/overlay/lastbind: false ldap/overlay/memberof/dangling: ignore ldap/overlay/memberof/member: uniqueMember ldap/overlay/memberof/memberof: memberOf ldap/overlay/memberof/objectclass: posixGroup ldap/overlay/memberof: true ldap/policy/cron: 5 * * * * ldap/ppolicy/enabled: false ldap/ppolicy: false ldap/pw-bcrypt: true ldap/pwd_scheme_kinit: true ldap/saml/service-providers: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/saml/metadata ldap/server/name: ums-ldap-server-primary ldap/server/port: 389 ldap/server/type: master ldap/shadowbind/ignorefilter: (|(objectClass=univentionDomainController)(userPassword={KINIT})) ldap/shadowbind: true ldap/sizelimit: 400000 ldap/threads: 16 ldap/tls/ciphersuite: HIGH:MEDIUM:!aNULL:!MD5:!RC4 ldap/tls/dh/paramfile: /etc/ldap/dh_2048.pem ldap/tls/minprotocol: 3.1 ldap/tool-threads: 1 ldap/translogfile: /var/lib/univention-ldap/listener/listener license/base: dc=swp-ldap,dc=internal locale/default: de_DE.UTF-8:UTF-8 locale: de_DE.UTF-8:UTF-8 en_US.UTF-8:UTF-8 password/hashing/bcrypt: true password/hashing/method: SHA-512 password/quality/length/min: 8 password/quality/mspolicy: false portal/auth-mode: saml portal/paths: /univention/portal/, /univention/umc/, /univention/selfservice/ self-service/backend-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de self-service/ldap_attributes: jpegPhoto,mail,telephoneNumber,roomNumber,departmentNumber,st,homePhone,mobile,homePostalAddress self-service/udm-rest-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de self-service/udm_attributes/birthday/readonly: true self-service/udm_attributes/city/readonly: true self-service/udm_attributes/departmentNumber/readonly: true self-service/udm_attributes/displayName/readonly: true self-service/udm_attributes/employeeNumber/readonly: true self-service/udm_attributes/employeeType/readonly: true self-service/udm_attributes/firstname/readonly: true self-service/udm_attributes/lastname/readonly: true self-service/udm_attributes/organisation/readonly: true self-service/udm_attributes/postcode/readonly: true self-service/udm_attributes/street/readonly: true self-service/udm_attributes/title/readonly: true self-service/udm_attributes: jpegPhoto,e-mail,phone,roomnumber,departmentNumber,country,homeTelephoneNumber,mobileTelephoneNumber,homePostalAddress self-service/web/enabled: yes server/role: domaincontroller_master slapd/port: 389 ssl/ca/cipher: aes256 ssl/common: Univention Corporate Server Root CA (ID: XXX) ssl/country: DE ssl/crl/interval: 7 ssl/crl/validity: 10 ssl/default/bits: 2048 ssl/default/days: 1825 ssl/default/hashfunction: sha256 ssl/email: ssl@example.org ssl/host/objectclass: univentionDomainController,univentionMemberServer,univentionClient ssl/locality: DE ssl/organization: DE ssl/organizationalunit: Univention Corporate Server ssl/state: DE ssl/update/expired: yes ssl/validity/check: yes ssl/validity/host: 20523 ssl/validity/root: 20523 ssl/validity/warning: 30 system/setup/showloginmessage: false ucr/backup/enabled: yes ucr/encoding/strict: true ucs/server/languages/de_AT: Deutsch (Österreich) ucs/server/languages/de_CH: Deutsch (Schweiz) ucs/server/languages/de_DE: Deutsch ucs/server/languages/en_GB: English (United Kingdom) ucs/server/languages/en_US: English ucs/server/robots/disallow: / ucs/server/saml-idp-server/primary.example.org: primary.example.org ucs/server/sso/fqdn: id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de ucs/server/sso/virtualhost: true ucs/web/license/requested: true ucs/web/theme: light umc/cookie-banner/show: false umc/http/allowed-session-overtake/ranges: 0.0.0.0/0,::/0 umc/http/autostart: yes umc/http/content-security-policy/connect-src: 'self' umc/http/content-security-policy/default-src: 'unsafe-eval' umc/http/content-security-policy/font-src: 'self' umc/http/content-security-policy/form-action: 'self' umc/http/content-security-policy/frame-ancestors: 'self' umc/http/content-security-policy/frame-src: 'self' https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de umc/http/content-security-policy/img-src: * umc/http/content-security-policy/media-src: * umc/http/content-security-policy/object-src: 'self' umc/http/content-security-policy/script-src: 'self' 'unsafe-inline' 'unsafe-eval' https://www.youtube.com/ https://s.ytimg.com/ umc/http/content-security-policy/style-src: 'self' 'unsafe-inline' umc/http/cookie/samesite: Strict umc/http/enforce-secure-cookie: true umc/http/enforce-session-cookie: true umc/http/interface: 0.0.0.0 umc/http/port: 8090 umc/http/response-timeout: 310 umc/http/session/timeout: 28800 umc/http/show_tracebacks: false umc/login/content-security-policy/frame-ancestors: 'self' umc/login/links/forgot_your_password/enabled: true umc/login/links/how_do_i_login/enabled: true umc/login/links/login_without_sso/enabled: true umc/login/links/login_without_sso/text/de: Ohne Single Sign-On anmelden umc/login/links/login_without_sso/text: Login without Single Sign On umc/login/password-complexity-message/de: Das Passwort muss mindestens 8 Zeichen lang sein und darf keine Zahlenabfolge oder ganze Worte enthalten, wie '1234Test'. umc/login/password-complexity-message/en: Password must be at least 8 characters long and cannot include a number series or regular words, like '1234Test'. umc/module/debug/level: 2 umc/module/timeout: 600 umc/module/udm/oxmail/oxcontext/disabled: True umc/module/udm/portals/all/disabled: True umc/module/udm/users/self/disabled: true umc/saml/idp-server: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor umc/saml/idp-server-internal: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor umc/saml/in-memory-identity-cache: false umc/saml/schemes: https umc/saml/sp-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de umc/saml/trusted/sp/primary.example.org: primary.example.org umc/self-service/account-deregistration/blacklist/groups: Administrators,Domain Admins umc/self-service/account-deregistration/email/subject: Account deletion umc/self-service/account-deregistration/enabled: false umc/self-service/account-deregistration/whitelist/groups: Domain Users umc/self-service/account-registration/backend/enabled: false umc/self-service/account-registration/frontend/enabled: false umc/self-service/account-registration/udm_attributes/required: lastname,username umc/self-service/account-registration/udm_attributes: firstname,lastname,username umc/self-service/account-registration/usercontainer: cn=self registered users,dc=swp-ldap,dc=internal umc/self-service/account-verification/backend/enabled: false umc/self-service/account-verification/email/subject: Account verification umc/self-service/account-verification/email/token_length: 64 umc/self-service/account-verification/email/webserver_address: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de umc/self-service/account-verification/frontend/enabled: false umc/self-service/account-verification/next-steps/de: Weiter zum Univention Portal. umc/self-service/account-verification/next-steps: Continue to the Univention Portal. umc/self-service/allow-authenticated-use: true umc/self-service/content-security-policy/frame-ancestors: 'self' umc/self-service/email-change-notification/email/subject: Account recovery email changed umc/self-service/enabled: yes umc/self-service/invitation/enabled: true umc/self-service/memcached/socket: memcached umc/self-service/memcached/username: umc/self-service/passwordchange/frontend/enabled: yes umc/self-service/passwordreset/backend/enabled: true umc/self-service/passwordreset/email/enabled: yes umc/self-service/passwordreset/email/sender_address: Password Reset Service umc/self-service/passwordreset/email/server/port: 25 umc/self-service/passwordreset/email/server/starttls: false umc/self-service/passwordreset/email/server/user: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de umc/self-service/passwordreset/email/server: postfix.yschmidt-opendesk-argo.svc.cluster.local umc/self-service/passwordreset/email/subject: Password reset umc/self-service/passwordreset/email/text_file: /usr/share/univention-self-service/email_bodies/passwordreset_email_body.txt umc/self-service/passwordreset/email/token_length: 64 umc/self-service/passwordreset/email/webserver_address: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de umc/self-service/passwordreset/external/enabled: no umc/self-service/passwordreset/external/token_length: 64 umc/self-service/passwordreset/frontend/enabled: yes umc/self-service/passwordreset/limit/per_user/day: 120 umc/self-service/passwordreset/limit/per_user/hour: 60 umc/self-service/passwordreset/limit/per_user/minute: 10 umc/self-service/passwordreset/limit/total/day: 1000 umc/self-service/passwordreset/limit/total/hour: 200 umc/self-service/passwordreset/limit/total/minute: 120 umc/self-service/passwordreset/sms/enabled: no umc/self-service/passwordreset/sms/token_length: 12 umc/self-service/passwordreset/token_validity_period: 172800 umc/self-service/passwordreset/whitelist/groups: Domain Users umc/self-service/postgresql/database: selfservice umc/self-service/postgresql/hostname: postgresql umc/self-service/postgresql/port: 5432 umc/self-service/postgresql/username: selfservice_user umc/self-service/profiledata/blacklist/groups: Administrators,Domain Admins umc/self-service/profiledata/enabled: true umc/self-service/profiledata/whitelist/groups: Domain Users umc/self-service/protect-account/backend/enabled: true umc/self-service/protect-account/frontend/enabled: yes umc/self-service/service-specific-passwords/backend/enabled: false umc/server/autostart: yes umc/server/debug/level: 2 umc/server/processes: 1 umc/server/upload/max: 2048 umc/server/upload/min_free_space: 51200 umc/web/appliance/fast_setup_mode: true umc/web/cache_bust: 1619020256 umc/web/favorites/default: welcome,udm:users/user,udm:groups/group,udm:computers/computer,appcenter:appcenter,updater umc/web/feedback/description: [UMC-Feedback] Traceback umc/web/feedback/mail: feedback@univention.de umc/web/hooks/univention-management-console-module-passwordchange: passwordchange umc/web/hooks/univention-self-service: passwordreset umc/web/hooks/univention-web-js: default_menu_entries umc/web/language: de_DE.UTF-8:UTF-8 umc/web/piwik: false umc/web/sso/enabled: true umc/web/sso/newwindow: true umc/web/startupdialog: false umc/web/title: Portal - openDesk update/available: false update/reboot/required: false uuid/license: 00000000-0000-0000-0000-000000000000 uuid/system: 00000000-0000-0000-0000-000000000000 version/erratalevel: 0 version/patchlevel: 5 version/version: 5.0 base-defaults.conf: | # This file is empty on purpose # And needs to have at least two lines --- # Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-stack-data-ums" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums data: UDM_API_URL: "http://ums-udm-rest-api:9979/udm/" UDM_API_USER: "cn=admin" UDM_API_PASSWORD_FILE: "/run/secrets/univention.de/data-loader/udm_secret" UDM_API_PORT: "9979" --- # Source: nubus/charts/nubusUdmListener/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-provisioning-udm-listener namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-udm-listener helm.sh/chart: nubusUdmListener-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: CA_CERT: "" CA_CERT_FILE: "" DEBUG_LEVEL: "2" LDAP_BASE_DN: "dc=swp-ldap,dc=internal" LDAP_PASSWORD: "" LDAP_PASSWORD_FILE: "/var/secrets/ldap_secret" LDAP_HOST: "ums-ldap-server-primary-notifier" LDAP_HOST_DN: "cn=admin,dc=swp-ldap,dc=internal" LDAP_PORT: "389" NATS_HOST: "ums-provisioning-nats" NATS_PORT: "4222" NATS_MAX_RECONNECT_ATTEMPTS: "5" PROVISIONING_API_HOST: "ums-provisioning-api" PROVISIONING_API_PORT: "80" NOTIFIER_SERVER: "ums-ldap-notifier" TLS_MODE: "off" ... --- # Source: nubus/charts/nubusUdmListener/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-provisioning-udm-listener-files" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-udm-listener helm.sh/chart: nubusUdmListener-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" data: base.conf: | # univention_ base.conf cron/autostart: yes server/role: memberserver ldap/master: ums-ldap-server-primary-notifier ldap/master/port: 389 ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal ldap/base: dc=swp-ldap,dc=internal uldap/start-tls: 0 listener/debug/level: 2 # end of univention_ base.conf base-forced.conf: | base-ldap.conf: | base-schedule.conf: | base-defaults.conf: | ldap.conf: | TLS_REQCERT never BASE dc=swp-ldap,dc=internal ... --- # Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-udm-rest-api" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: intents.otterize.com/service-name: ums-udm-rest-api data: LDAP_SECRET_FILE: "" MACHINE_SECRET_FILE: "" # used by the load-join-data job UDM_API_URL: 'http://ums-udm-rest-api/udm/' # This is hard-coded to be cn=admin in UCS UDM_API_USER: "cn=admin" UDM_API_PASSWORD_FILE: "" ... --- # Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-udm-rest-api-ldap-conf namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: intents.otterize.com/service-name: ums-udm-rest-api data: ldap.conf: | URI ldap://ums-ldap-server BASE dc=swp-ldap,dc=internal TLS_REQCERT never ... --- # Source: nubus/charts/nubusUmcServer/templates/configmap-proxy.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-umc-server-proxy" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server data: traefik.yaml: | global: checkNewVersion: false sendAnonymousUsage: false api: dashboard: false log: level: INFO accessLog: filePath: /dev/stdout ping: entryPoint: http entryPoints: http: address: ":8080" providers: file: filename: /etc/traefik/dynamic.yaml watch: false dynamic.yaml: | http: routers: umc-server: service: umc-server rule: PathPrefix(`/`) services: umc-server: loadBalancer: sticky: cookie: name: traefik_session servers: - url: http://ums-umc-server-0:8090 ... --- # Source: nubus/charts/nubusUmcServer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-umc-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server data: LDAP_SECRET_FILE: "/etc/ldap.secret" MACHINE_SECRET_FILE: "/etc/machine.secret" PRIVATE_KEY_FILE: "/var/secrets/ssl/tls.key" CA_CERT_FILE: "/var/secrets/ca_cert" CERT_PEM_FILE: "/var/secrets/ssl/tls.crt" SMTP_SECRET_FILE: "/var/secrets/smtp_secret" --- # Source: nubus/charts/nubusUmcServer/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: ums-umc-server-pw-reset-email-body namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server data: passwordreset_email_body.txt: |- Sehr geehrte Benutzerin, sehr geehrter Benutzer, Ihr Benutzername für {domainname} lautet: {username} Sie erhalten diese Nachricht, da Sie Ihr Passwort zurücksetzen möchten oder weil Ihr Benutzer neu im System angelegt wurde. Klicken Sie bitte auf den folgenden Link, um Ihr Passwort zu setzen: https://{fqdn}/univention/portal/#/selfservice/newpassword/?token={token}&username={username} Der genannte Link ist nur 48 Stunden gültig, danach fordern Sie ihn bitte erneut an unter: https://{fqdn}/univention/portal/#/selfservice/passwordforgotten Mit freundlichen Grüßen Ihr {domainname} Passwort-Service ... --- # Source: nubus/templates/postgresql-provisioning-configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "ums-postgresql-provisioning" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nubus helm.sh/chart: nubus-1.8.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm data: provision-databases.sh: | #!/usr/bin/env sh echo "Provisioning databases ..." cat /provisioning-scripts/databases.list for db in $(cat /provisioning-scripts/databases.list | sort | uniq); do echo "Provisioning database $db ..." psql -c "SELECT 'CREATE DATABASE $db;' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db');" -t | psql -v ON_ERROR_STOP=1 psql -v ON_ERROR_STOP=1 <<-EOSQL SELECT * FROM pg_database; EOSQL done provision-users.sh: | #!/usr/bin/env sh set -eu echo "Provisioning users ..." for user in $(cat /provisioning-scripts/users.list | sort | uniq); do USER_PASSWORD=$(cat /provisioning/passwords/$user) echo "Provisioning user $user ..." psql -v ON_ERROR_STOP=1 <<-EOSQL DO \$\$ BEGIN IF NOT EXISTS (SELECT * FROM pg_user WHERE usename = '$user') THEN CREATE USER $user WITH PASSWORD '$USER_PASSWORD'; END IF; END \$\$; EOSQL psql -v ON_ERROR_STOP=1 <<-EOSQL ALTER USER $user PASSWORD '$USER_PASSWORD'; EOSQL done echo "Provisioning user grants ..." for grant in $(cat /provisioning-scripts/grants.list | sort | uniq); do echo "Processing grant: $grant" _USER=$(echo $grant | cut -d: -f1) _DATABASE=$(echo $grant | cut -d: -f2) _PRIVILEGES=$(echo $grant | cut -d: -f3) echo "Provisioning '$_PRIVILEGES' privileges for user $_USER on database $_DATABASE ..." case ${_PRIVILEGES} in rw) psql -v ON_ERROR_STOP=1 <<-EOSQL GRANT ALL PRIVILEGES ON DATABASE $_DATABASE TO ${_USER}; \c $_DATABASE GRANT ALL ON SCHEMA public TO ${_USER}; EOSQL ;; ro) psql -v ON_ERROR_STOP=1 <<-EOSQL GRANT CONNECT ON DATABASE $_DATABASE TO ${_USER}; \c $_DATABASE GRANT USAGE ON SCHEMA public TO ${_USER}; GRANT SELECT ON ALL TABLES IN SCHEMA public TO ${_USER}; EOSQL ;; *) echo "Invalid privileges: ${_PRIVILEGES}" exit 1 ;; esac done grants.list: | notificationsapi_user:notificationsapi:rw selfservice_user:selfservice:rw keycloak_user:keycloak:rw keycloak_extensions_user:keycloak_extensions:rw guardianmanagementapi_user:guardianmanagementapi:rw users.list: | notificationsapi_user selfservice_user keycloak_user keycloak_extensions_user guardianmanagementapi_user databases.list: | notificationsapi selfservice keycloak keycloak_extensions guardianmanagementapi --- # Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ums-ldap-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm rules: - apiGroups: ["coordination.k8s.io"] resources: ["leases"] verbs: - create - apiGroups: ["coordination.k8s.io"] resources: ["leases"] verbs: - watch - get - update resourceNames: ["ldap-primary-leader"] - apiGroups: [""] resources: ["pods"] verbs: ["patch"] resourceNames: - ums-ldap-server-primary-0 - ums-ldap-server-primary-1 - apiGroups: [""] resources: ["services"] verbs: ["patch"] resourceNames: - ums-ldap-server-primary - apiGroups: [""] resources: ["configmaps"] verbs: ["create"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "update", "patch"] resourceNames: - ums-ldap-server-status --- # Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: ums-ldap-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm subjects: - kind: ServiceAccount name: ums-ldap-server namespace: "yschmidt-opendesk-argo" roleRef: kind: Role name: ums-ldap-server apiGroup: rbac.authorization.k8s.io --- # Source: nubus/charts/keycloak/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-keycloak" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak helm.sh/chart: keycloak-0.9.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" clusterIP: None ports: - name: "http" port: 8080 targetPort: http protocol: "TCP" - name: "https" port: 8443 targetPort: https protocol: "TCP" - name: "ispn" port: 7800 targetPort: ispn protocol: "TCP" selector: app.kubernetes.io/name: keycloak app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-guardian-authorization-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-authorization-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-authorization-api ... --- # Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-guardian-management-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-management-api ... --- # Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-guardian-management-ui labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-ui app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-management-ui ... --- # Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-guardian-open-policy-agent labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-open-policy-agent app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-open-policy-agent ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-keycloak-extensions-proxy labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-proxy app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 spec: type: ClusterIP ports: - port: 8181 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-keycloak-extensions-proxy ... --- # Source: nubus/charts/nubusLdapNotifier/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-ldap-notifier" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-notifier helm.sh/chart: nubusLdapNotifier-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "14.0.4" annotations: spec: type: "ClusterIP" ports: - name: "notifier" port: 6669 targetPort: "notifier" protocol: "TCP" selector: app.kubernetes.io/name: ldap-notifier app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusLdapServer/templates/service-notifier.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-ldap-server-primary-notifier namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: primary statefulset.kubernetes.io/pod-name: ums-ldap-server-primary-0 ... --- # Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-ldap-server-primary-0 namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: primary statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-0" # This will be updated by the leader elector ... --- # Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-ldap-server-primary-1 namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: primary statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-1" # This will be updated by the leader elector ... --- # Source: nubus/charts/nubusLdapServer/templates/service-primary.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-ldap-server-primary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: primary statefulset.kubernetes.io/pod-name: "will-be-updated-by-elector" # This will be updated by the leader elector ... --- # Source: nubus/charts/nubusLdapServer/templates/service-secondary.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-ldap-server-secondary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" clusterIP: "None" publishNotReadyAddresses: true ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: secondary ... --- # Source: nubus/charts/nubusLdapServer/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-ldap-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-ldap-server spec: type: "ClusterIP" ports: - name: "ldap" port: 389 targetPort: "ldap" protocol: "TCP" - name: "ldaps" port: 636 targetPort: "ldaps" protocol: "TCP" selector: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: proxy ... --- # Source: nubus/charts/nubusPortalFrontend/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-portal-frontend" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: portal-frontend app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusPortalServer/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-portal-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-server spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: portal-server app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-provisioning-nats" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-provisioning-nats spec: type: "ClusterIP" ports: - name: "client" port: 4222 targetPort: "client" protocol: "TCP" - name: "cluster" port: 6222 targetPort: "cluster" protocol: "TCP" - name: "monitor" port: 8222 targetPort: "monitor" protocol: "TCP" selector: app.kubernetes.io/name: provisioning-nats app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-provisioning-nats-headless" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-provisioning-nats spec: type: "ClusterIP" clusterIP: None publishNotReadyAddresses: true ports: - name: "client" port: 4222 targetPort: "client" protocol: "TCP" - name: "cluster" port: 6222 targetPort: "cluster" protocol: "TCP" - name: "monitor" port: 8222 targetPort: "monitor" protocol: "TCP" selector: app.kubernetes.io/name: provisioning-nats app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusProvisioning/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: ums-provisioning-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-api helm.sh/chart: nubusProvisioning-0.49.3 annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-provisioning-api ... --- # Source: nubus/charts/nubusUdmRestApi/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-udm-rest-api" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: intents.otterize.com/service-name: ums-udm-rest-api spec: type: "ClusterIP" clusterIP: None ports: - name: "http" port: 9979 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: udm-rest-api app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusUmcGateway/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-umc-gateway" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-gateway helm.sh/chart: nubusUmcGateway-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: umc-gateway app.kubernetes.io/instance: ums ... --- # Source: nubus/charts/nubusUmcServer/templates/service-proxy.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-umc-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-umc-server-proxy app.kubernetes.io/version: 12.0.29 helm.sh/chart: nubusUmcServer-0.38.0 annotations: intents.otterize.com/service-name: ums-umc-server spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-umc-server-proxy ... --- # Source: nubus/charts/nubusUmcServer/templates/service-server.yaml apiVersion: "v1" kind: "Service" metadata: name: "ums-umc-server-0" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server spec: type: "ClusterIP" clusterIP: None ports: - name: http port: 8090 targetPort: http protocol: TCP selector: app.kubernetes.io/name: umc-server app.kubernetes.io/instance: ums statefulset.kubernetes.io/pod-name: "ums-umc-server-0" --- # Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-guardian-authorization-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-authorization-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-authorization-api template: metadata: annotations: checksum/config: d7947c399537b10083f81f1342a50f774514fb4d775fe3a1461ef55a3f7f5b68 intents.otterize.com/service-name: ums-guardian-authorization-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-authorization-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: serviceAccountName: ums-guardian securityContext: fsGroup: 1000 fsGroupChangePolicy: Always containers: - name: "authorization-api" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api:2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-guardian-authorization-api ports: - name: http containerPort: 8000 protocol: TCP livenessProbe: httpGet: path: /guardian/authorization/openapi.json port: http initialDelaySeconds: 120 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: /guardian/authorization/openapi.json port: http initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: "secrets" mountPath: "/var/secrets" - name: "tmp" mountPath: "/tmp" volumes: - name: "tmp" emptyDir: {} - name: "secrets" secret: secretName: "ums-guardian-udm-secret" ... --- # Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-guardian-management-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-management-api template: metadata: annotations: checksum/config: edd431a7429fd937cb9b4a78c92bfa5f8f9aa3bdac936d3a0091e5813fe11b1b intents.otterize.com/service-name: ums-guardian-management-api labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-api app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: serviceAccountName: ums-guardian securityContext: fsGroup: 1000 fsGroupChangePolicy: Always initContainers: - name: "database-migrations" image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2" command: ["alembic", "upgrade", "head"] imagePullPolicy: "IfNotPresent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi envFrom: - configMapRef: name: ums-guardian-management-api env: - name: "SQL_PERSISTENCE_ADAPTER__PASSWORD" valueFrom: secretKeyRef: name: "ums-guardian-postgresql-opendesk-credentials" key: "guardianDatabasePassword" containers: - name: "management-api" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-guardian-management-api env: - name: "SQL_PERSISTENCE_ADAPTER__PASSWORD" valueFrom: secretKeyRef: name: "ums-guardian-postgresql-opendesk-credentials" key: "guardianDatabasePassword" ports: - name: http containerPort: 8000 protocol: TCP livenessProbe: httpGet: path: /guardian/management/openapi.json port: http initialDelaySeconds: 120 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: /guardian/management/openapi.json port: http initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: "secrets" mountPath: "/var/secrets" - name: "bundles" mountPath: "/guardian_service_dir/bundle_server" - name: "tmp" mountPath: "/tmp" volumes: - name: "bundles" emptyDir: {} - name: "tmp" emptyDir: {} - name: "secrets" secret: secretName: ums-guardian-keycloak-client-secret ... --- # Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-guardian-management-ui labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-ui app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-management-ui template: metadata: annotations: checksum/config: f57692262288fcf0ef25edb2babd27bd672597a50143c7e63a88dc67ea12fcd1 intents.otterize.com/service-name: ums-guardian-management-ui labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-management-ui app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: serviceAccountName: ums-guardian initContainers: - name: "app-configuration" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi env: - name: "SKIP_CONFIG_GENERATION" value: "TRUE" envFrom: - configMapRef: name: ums-guardian-management-ui command: - sh - -c - '/entrypoint.sh; cp -a /app/* /target/app/' volumeMounts: # NOTE: using target approach - name: "app-config" mountPath: "/target/app" containers: - name: "management-ui" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-guardian-management-ui volumeMounts: - name: "app-config" mountPath: "/app" - name: "nginx-conf" mountPath: "/etc/nginx/sites-enabled/default" subPath: "nginx.conf" - name: "var-lib" mountPath: "/var/lib/nginx" - name: "var-run" mountPath: "/var/run" ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: http initialDelaySeconds: 120 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: "app-config" emptyDir: { } # NOTE: Workaround for removing the content of the entrypoint - name: "var-lib" emptyDir: { } - name: "var-run" emptyDir: { } - name: "nginx-conf" configMap: name: ums-guardian-nginx-conf ... --- # Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-guardian-open-policy-agent labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-open-policy-agent app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-guardian-open-policy-agent template: metadata: annotations: checksum/config: f8fd5444dd86861996f4ea5d4e7590c2fe5e2030ad20fdace15858bd616a683d intents.otterize.com/service-name: ums-ums-open-policy-agent labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-guardian-open-policy-agent app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 spec: serviceAccountName: ums-guardian securityContext: fsGroup: 1000 fsGroupChangePolicy: Always containers: - name: "open-policy-agent" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa:2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-guardian-open-policy-agent ports: - name: http containerPort: 8181 protocol: TCP livenessProbe: httpGet: path: / port: http initialDelaySeconds: 120 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-keycloak-extensions-handler labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-handler app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-keycloak-extensions-handler template: metadata: annotations: checksum/config: 3e9f8de9771f7e6068fc133a5cc89893614dd7763313d6660a5e2c2c42922828 intents.otterize.com/service-name: ums-keycloak-extensions-handler labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-handler app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 spec: serviceAccountName: ums-keycloak-extensions-handler containers: - name: "keycloak-bfp-handler" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler:0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c" imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: ums-keycloak-extensions-handler env: - name: KC_USER value: kcadmin - name: KC_PASS valueFrom: secretKeyRef: name: ums-opendesk-keycloak-credentials key: "admin_password" - name: POSTGRES_USER value: keycloak_extensions_user - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: ums-keycloak-extensions-postgresql-opendesk-credentials key: "umcKeycloakExtensionsDatabasePassword" - name: SMTP_USERNAME value: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de - name: SMTP_PASSWORD valueFrom: secretKeyRef: name: ums-keycloak-extensions-smtp-opendesk-credentials key: "umcKeycloakExtensionsSmtpPassword" resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-keycloak-extensions-proxy labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-proxy app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-keycloak-extensions-proxy template: metadata: annotations: checksum/config: 30f8314e918a1ce1b9adcfb7e6d8e1fc74ddd9ea8c21456c2e75892908693bf9 intents.otterize.com/service-name: ums-keycloak-extensions-proxy labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-proxy app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 spec: serviceAccountName: ums-keycloak-extensions-proxy containers: - name: "keycloak-bfp-proxy" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy:0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056" imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: ums-keycloak-extensions-proxy env: - name: KC_USER value: kcadmin - name: KC_PASS valueFrom: secretKeyRef: name: ums-opendesk-keycloak-credentials key: admin_password - name: POSTGRES_USER value: keycloak_extensions_user - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: ums-keycloak-extensions-postgresql-opendesk-credentials key: umcKeycloakExtensionsDatabasePassword ports: - name: http containerPort: 8181 protocol: TCP volumeMounts: resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi volumes: ... --- # Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-ldap-server-proxy namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: proxy annotations: intents.otterize.com/service-name: ums-ldap-server spec: replicas: 2 strategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: proxy template: metadata: annotations: checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 checksum/configmap-proxy: 9fcd0b7e145f1ff264a865f93ec51a51b2417be18e21df91db3f35015c37d4fc labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: proxy spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: ldap-server-type operator: In values: - proxy topologyKey: kubernetes.io/hostname weight: 100 securityContext: fsGroup: 102 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-ldap-server terminationGracePeriodSeconds: 20 initContainers: - name: "univention-compatibility" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - 'cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/' volumeMounts: - name: usr-share-univention-ldap-volume mountPath: /target/usr/share/univention-ldap - name: etc-ldap-volume mountPath: /target/etc/ldap - name: etc-univention-volume mountPath: /target/etc/univention resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "wait-for-secondary" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-ldap-server - configMapRef: name: ums-ldap-server-proxy env: - name: LDAP_CN_ADMIN_PW valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" command: - bash - -c - '/scripts-proxy/wait-for-secondary.sh' volumeMounts: - name: proxy-scripts-volume mountPath: /scripts-proxy resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: "wait-for-saml-metadata" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" command: - "/bin/bash" - "/scripts/wait-for-saml-metadata.sh" envFrom: - configMapRef: name: ums-ldap-server volumeMounts: - name: scripts-volume mountPath: /scripts - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi containers: - name: "openldap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-ldap-server - configMapRef: name: ums-ldap-server-proxy env: - name: LDAP_CN_ADMIN_PW valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 ports: - name: ldap containerPort: 389 protocol: TCP - name: ldaps containerPort: 636 protocol: TCP resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumeMounts: - name: usr-share-univention-ldap-volume mountPath: /usr/share/univention-ldap - name: usr-share-saml-volume mountPath: /usr/share/saml - name: etc-ldap-volume mountPath: /etc/ldap - name: etc-univention-volume mountPath: /etc/univention - name: proxy-config-templates-volume mountPath: /config/templates - name: proxy-scripts-volume mountPath: /entrypoint.d/90-generate-slapd-conf.sh subPath: generate-slapd.conf.sh - name: plugin-targets mountPath: /var/lib/univention-ldap-local/local-schema subPath: ldap-schema readOnly: true - name: plugin-targets mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d subPath: ldap-acls readOnly: false - name: var-run-volume mountPath: /var/run/slapd - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "data-volume" mountPath: /var/lib/univention-ldap volumes: - name: "data-volume" emptyDir: {} - name: "var-run-volume" emptyDir: {} - name: "usr-share-univention-ldap-volume" emptyDir: {} - name: "usr-share-saml-volume" emptyDir: {} - name: "etc-ldap-volume" emptyDir: {} - name: "etc-univention-volume" emptyDir: {} - name: "proxy-scripts-volume" configMap: name: ums-ldap-server-proxy-scripts defaultMode: 0555 - name: "proxy-config-templates-volume" configMap: name: ums-ldap-server-proxy-config-templates - name: "scripts-volume" configMap: name: ums-ldap-server-scripts defaultMode: 0555 - name: "plugin-targets" emptyDir: {} - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" ... --- # Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: "ums-portal-frontend" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-frontend spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: portal-frontend app.kubernetes.io/instance: ums template: metadata: annotations: checksum/configmap: 2eb70c692dd148ad4e9ac43015d8d73fedd90bd2e2ab969763a8b7ef006922e9 checksum/branding-configmap: 9a39db2d72c22b79d74e75c7aa560fe75270915d8df5a5d6e2476390c5010257 labels: app.kubernetes.io/name: portal-frontend helm.sh/chart: nubusPortalFrontend-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-portal-frontend terminationGracePeriodSeconds: 5 containers: - name: "portal-frontend" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update:1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b" imagePullPolicy: "IfNotPresent" env: envFrom: - configMapRef: name: "ums-portal-frontend" livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 ports: - name: http containerPort: 80 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: var-run-volume mountPath: /var/run - name: var-lib-nginx-volume mountPath: /var/lib/nginx - name: "ums-portal-frontend-nginx" subPath: nginx.conf mountPath: /etc/nginx/nginx.conf - name: "ums-portal-frontend-branding" mountPath: "/var/www/html/favicon.ico" subPath: "favicon.ico" - name: "ums-portal-frontend-branding" mountPath: "/var/www/html/css/custom.css" subPath: "custom.css" - name: "ums-portal-frontend-branding" mountPath: "/var/www/html/icons/logo.svg" subPath: "logo.svg" - name: "ums-portal-frontend-branding" mountPath: "/var/www/html/custom/portal_background_image.svg" subPath: "portal_background_image.svg" volumes: - name: "var-run-volume" emptyDir: {} - name: "var-lib-nginx-volume" emptyDir: {} - name: "ums-portal-frontend-nginx" configMap: name: "ums-portal-frontend-nginx" defaultMode: 420 - name: "ums-portal-frontend-branding" configMap: name: "ums-portal-frontend-branding" --- # Source: nubus/charts/nubusPortalServer/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: "ums-portal-server" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: intents.otterize.com/service-name: ums-portal-server spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: portal-server app.kubernetes.io/instance: ums template: metadata: annotations: checksum/configmap: e3d49ae79f8cbd656683f2d1a0b3a27df49829d89c6f68774e5239eb56ec1f78 labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-portal-server terminationGracePeriodSeconds: 5 initContainers: - name: "copy-files" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27" imagePullPolicy: "IfNotPresent" command: - /bin/bash - -c - | set -euxo pipefail cp -a /usr/share/univention-portal/* /target/usr/share/univention-portal/ volumeMounts: - name: usr-share-univention-portal-volume mountPath: /target/usr/share/univention-portal - name: tmp-volume mountPath: /tmp resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "portal-server" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27" imagePullPolicy: "IfNotPresent" env: - name: OBJECT_STORAGE_ACCESS_KEY_ID valueFrom: secretKeyRef: name: "ums-portal-server-minio-credentials" key: "accessKey" - name: OBJECT_STORAGE_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: "ums-portal-server-minio-credentials" key: "secretKey" envFrom: - configMapRef: name: "ums-portal-server" livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 80 timeoutSeconds: 5 ports: - name: http containerPort: 80 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: usr-lib-univention-portal-config-volume mountPath: /usr/lib/univention-portal/config - name: usr-share-univention-portal-volume mountPath: /usr/share/univention-portal - name: authenticator-secret mountPath: "/var/secrets/authenticator.secret" subPath: "password" - name: tmp-volume mountPath: /tmp - name: secret-udm mountPath: /var/secrets/udm_api_password subPath: "password" volumes: - name: usr-lib-univention-portal-config-volume emptyDir: {} - name: usr-share-univention-portal-volume emptyDir: {} - name: authenticator-secret secret: secretName: "ums-opendesk-portal-server-central-navigation" - name: secret-udm secret: secretName: "ums-stack-data-ums-svc-portal-server" - name: tmp-volume emptyDir: {} --- # Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-provisioning-dispatcher namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-dispatcher helm.sh/chart: nubusProvisioning-0.49.3 annotations: intents.otterize.com/service-name: ums-provisioning-dispatcher spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-provisioning-dispatcher strategy: type: Recreate template: metadata: annotations: checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-dispatcher helm.sh/chart: nubusProvisioning-0.49.3 spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning terminationGracePeriodSeconds: 5 initContainers: - name: wait-for-nats command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-api env: - name: NATS_USER value: "dispatcher" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-dispatcher-credentials key: NATS_PASSWORD volumeMounts: - name: wait-for-nats mountPath: /scripts resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi containers: - name: "dispatcher" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher:0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-dispatcher env: - name: NATS_USER value: "dispatcher" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-dispatcher-credentials key: NATS_PASSWORD livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumes: - name: wait-for-nats configMap: name: ums-provisioning-api --- # Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-provisioning-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-api helm.sh/chart: nubusProvisioning-0.49.3 annotations: intents.otterize.com/service-name: ums-provisioning-api spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-provisioning-api strategy: type: Recreate template: metadata: annotations: checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-api helm.sh/chart: nubusProvisioning-0.49.3 spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning terminationGracePeriodSeconds: 5 initContainers: - name: wait-for-nats command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-api env: - name: NATS_USER value: "api" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: NATS_PASSWORD volumeMounts: - name: wait-for-nats mountPath: /scripts resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi containers: - name: "api" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-api env: - name: ADMIN_USERNAME value: "admin" - name: ADMIN_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: ADMIN_PASSWORD - name: EVENTS_USERNAME_UDM value: "udm" - name: EVENTS_PASSWORD_UDM valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: EVENTS_PASSWORD_UDM - name: PREFILL_USERNAME value: "prefill" - name: PREFILL_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: PREFILL_PASSWORD - name: ADMIN_NATS_USER value: "placeholder" - name: ADMIN_NATS_PASSWORD value: "placeholder" - name: NATS_USER value: "api" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: NATS_PASSWORD livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 7777 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 7777 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 7777 ports: - name: http containerPort: 7777 protocol: TCP resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumes: - name: wait-for-nats configMap: name: ums-provisioning-api --- # Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-provisioning-prefill namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-prefill helm.sh/chart: nubusProvisioning-0.49.3 annotations: intents.otterize.com/service-name: ums-provisioning-prefill spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-provisioning-prefill strategy: type: Recreate template: metadata: annotations: checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-prefill helm.sh/chart: nubusProvisioning-0.49.3 spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning terminationGracePeriodSeconds: 5 initContainers: - name: wait-for-udm command: [ "/usr/bin/python3", "/scripts/wait-for-udm.py" ] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-prefill env: - name: UDM_USERNAME value: "cn=admin" - name: UDM_PASSWORD valueFrom: secretKeyRef: name: ums-ldap-server-credentials key: adminPassword volumeMounts: - name: wait-for-udm mountPath: /scripts resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi - name: wait-for-api-to-start securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common command: [ "bash", "-c", "set -euo pipefail; until curl -s http://${PROVISIONING_API_HOST}:${PROVISIONING_API_PORT}/v1/subscriptions > /dev/null || [ $? -ne 0 ]; do echo Waiting for api; sleep 2; done;" ] resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi containers: - name: "prefill" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-prefill env: - name: NATS_USER value: "prefill" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-prefill-credentials key: NATS_PASSWORD - name: UDM_USERNAME value: "cn=admin" - name: UDM_PASSWORD valueFrom: secretKeyRef: name: ums-ldap-server-credentials key: adminPassword - name: PREFILL_USERNAME value: "prefill" - name: PREFILL_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: PREFILL_PASSWORD livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumes: - name: wait-for-udm configMap: name: ums-provisioning-prefill --- # Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-provisioning-udm-transformer namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-udm-transformer helm.sh/chart: nubusProvisioning-0.49.3 annotations: intents.otterize.com/service-name: ums-provisioning-udm-transformer spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-provisioning-udm-transformer strategy: type: Recreate template: metadata: annotations: checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-udm-transformer helm.sh/chart: nubusProvisioning-0.49.3 spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning terminationGracePeriodSeconds: 5 initContainers: - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi - name: wait-for-nats command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-api env: - name: NATS_USER value: "udmtransformer" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-transformer-credentials key: NATS_PASSWORD volumeMounts: - name: wait-for-nats mountPath: /scripts resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi containers: - name: "udm-transformer" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-common - configMapRef: name: ums-provisioning-udm-transformer env: - name: NATS_USER value: "udmtransformer" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-transformer-credentials key: NATS_PASSWORD - name: EVENTS_USERNAME_UDM value: "udm" - name: EVENTS_PASSWORD_UDM valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: EVENTS_PASSWORD_UDM - name: LDAP_BIND_PW valueFrom: secretKeyRef: name: ums-ldap-server-credentials key: adminPassword livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 resources: limits: cpu: 1 memory: 1Gi requests: cpu: 0.1 memory: 64Mi volumeMounts: - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/udm/modules subPath: udm-modules readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d subPath: udm-hooks.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d subPath: udm-syntax.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers subPath: udm-handlers readOnly: true volumes: - name: wait-for-nats configMap: name: ums-provisioning-api - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" - name: "plugin-targets" emptyDir: {} --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-selfservice-listener labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-selfservice-listener app.kubernetes.io/version: 0.0.1 helm.sh/chart: nubusSelfServiceConsumer-0.14.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-selfservice-listener template: metadata: annotations: checksum/configmap: 76c62f016e9d1e4eb0e5913d0c2a0d45837946dfe402a0fc8ec60c1bf55d8fca intents.otterize.com/service-name: ums-selfservice-listener labels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-selfservice-listener spec: serviceAccountName: ums-selfservice-listener terminationGracePeriodSeconds: 5 initContainers: - name: wait-for-provisioning-api securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" command: ["/bin/bash", "/scripts/wait-for-provisioning-api.sh"] resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: scripts mountPath: /scripts env: - name: PROVISIONING_API_USERNAME value: selfservice - name: PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: ums-selfservice-listener-credentials key: PROVISIONING_API_PASSWORD envFrom: - configMapRef: name: ums-selfservice-listener-common containers: - name: "selfservice-listener" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation:0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0" imagePullPolicy: "IfNotPresent" command: - /bin/bash - -c - | set -euxo pipefail poetry run python3 -m invitation env: - name: PROVISIONING_API_USERNAME value: selfservice - name: PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: ums-selfservice-listener-credentials key: PROVISIONING_API_PASSWORD envFrom: - configMapRef: name: ums-selfservice-listener-common livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: null resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: volumes: - name: "scripts" configMap: defaultMode: 0555 name: ums-selfservice-listener-scripts --- # Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-udm-rest-api namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: intents.otterize.com/service-name: ums-udm-rest-api spec: replicas: 1 strategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: udm-rest-api app.kubernetes.io/instance: ums template: metadata: annotations: checksum/configmap: f2c2f0ab9162c70b01a035d98fd89ac341f94aec50f7309f846db2267b3f8e5e labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always serviceAccountName: ums-udm-rest-api terminationGracePeriodSeconds: 5 initContainers: - name: "univention-compatibility" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" imagePullPolicy: "IfNotPresent" command: - sh - -c - 'cp -a /etc/univention/* /target/etc/univention/; cp -a /usr/lib/python3/* /target/usr/lib/python3/;' volumeMounts: - name: etc-univention-volume mountPath: /target/etc/univention - name: usr-lib-python3-volume mountPath: /target/usr/lib/python3 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "ucr-commit" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" imagePullPolicy: "IfNotPresent" command: - sh - -c - 'ucr commit /etc/univention/directory/reports/config.ini' volumeMounts: - name: etc-univention-volume mountPath: /etc/univention - name: var-cache-univention-config-volume mountPath: /var/cache/univention-config resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "udm-rest-api" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault command: - sh - -c - | python3 \ -m "univention.admin.rest.server" \ --debug "2" \ --port "9979" \ --interface "0.0.0.0" \ --processes "1" image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-udm-rest-api livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 9979 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 9979 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 9979 timeoutSeconds: 5 ports: - name: http containerPort: 9979 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: usr-lib-python3-volume mountPath: /usr/lib/python3 - name: var-log-univention-volume mountPath: /var/log/univention - name: tmp-volume mountPath: /tmp - name: var-run-volume mountPath: /var/run - name: etc-ldap-volume mountPath: /etc/ldap - name: etc-univention-volume mountPath: /etc/univention - name: credentials-volume mountPath: /etc/ldap.secret subPath: adminPassword - name: credentials-volume mountPath: /etc/machine.secret subPath: adminPassword - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/udm/modules subPath: udm-modules readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d subPath: udm-hooks.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d subPath: udm-syntax.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers subPath: udm-handlers readOnly: true - name: plugin-targets mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ subPath: umc-icons readOnly: true - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" volumes: - name: "usr-lib-python3-volume" emptyDir: {} - name: "etc-ldap-volume" configMap: name: "ums-udm-rest-api-ldap-conf" - name: "var-cache-univention-config-volume" emptyDir: {} - name: "tmp-volume" emptyDir: {} - name: "var-run-volume" emptyDir: {} - name: "var-log-univention-volume" emptyDir: {} - name: "etc-univention-volume" emptyDir: {} - name: plugin-targets emptyDir: {} - name: credentials-volume secret: defaultMode: 420 secretName: ums-ldap-server-credentials - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" --- # Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-umc-gateway namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-gateway helm.sh/chart: nubusUmcGateway-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" spec: replicas: 1 strategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: umc-gateway app.kubernetes.io/instance: ums template: metadata: annotations: labels: app.kubernetes.io/name: umc-gateway helm.sh/chart: nubusUmcGateway-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always serviceAccountName: ums-umc-gateway terminationGracePeriodSeconds: 5 initContainers: - name: "copy-config" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" imagePullPolicy: "IfNotPresent" command: - bash - -c - | cp -a /etc/univention/* /target/etc/univention/ cp -a /etc/apache2/* /target/etc/apache2/ cp -a /var/www/univention/* /target/var/www/univention/ volumeMounts: - name: "etc-apache2" mountPath: "/target/etc/apache2" - name: "var-www-univention" mountPath: "/target/var/www/univention" - name: "etc-univention" mountPath: "/target/etc/univention" - name: "prepare-config" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" imagePullPolicy: "IfNotPresent" command: - bash - -c - | /entrypoint.d/50-entrypoint.sh echo "Listen 8080" > /etc/apache2/ports.conf sed -e 's,,,g' -i /etc/apache2/sites-available/000-default.conf cat /etc/apache2/sites-available/000-default.conf volumeMounts: - name: "etc-apache2" mountPath: "/etc/apache2" - name: "var-www-univention" mountPath: "/var/www/univention" - name: "etc-univention" mountPath: "/etc/univention" - name: "config-cache" mountPath: "/var/cache/univention-config" - name: "univention-logs" mountPath: "/var/log/univention" - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "umc-gateway" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" imagePullPolicy: IfNotPresent command: - bash - -c - | apache2 -D FOREGROUND \ -d /etc/apache2/ \ -f /etc/apache2/apache2.conf volumeMounts: - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: plugin-targets mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ subPath: umc-icons readOnly: true - name: "apache2-logs" mountPath: "/usr/local/apache2/logs" - name: "etc-apache2" mountPath: "/etc/apache2" readOnly: true - name: "var-www-univention" mountPath: "/var/www/univention" readOnly: true ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 3 successThreshold: 1 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" - name: plugin-targets emptyDir: { } - name: "apache2-logs" emptyDir: medium: "Memory" - name: "etc-apache2" emptyDir: medium: "Memory" - name: "var-www-univention" emptyDir: medium: "Memory" - name: "etc-univention" emptyDir: medium: "Memory" - name: "config-cache" emptyDir: medium: "Memory" - name: "univention-logs" emptyDir: medium: "Memory" --- # Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ums-umc-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-umc-server-proxy app.kubernetes.io/version: 12.0.29 helm.sh/chart: nubusUmcServer-0.38.0 annotations: intents.otterize.com/service-name: ums-umc-server spec: replicas: 1 strategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: ums-umc-server-proxy template: metadata: annotations: checksum/configmap: 105906601f7b3c03503c2935a66844ca61874732012d626f0f87349e2946610c labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-umc-server-proxy app.kubernetes.io/version: 12.0.29 helm.sh/chart: nubusUmcServer-0.38.0 spec: securityContext: fsGroup: 0 fsGroupChangePolicy: Always serviceAccountName: ums-umc-server terminationGracePeriodSeconds: 5 containers: - name: "proxy" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/traefik:3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e" imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /var/secrets/ssl name: certificates - name: traefik mountPath: /etc/traefik ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: certificates secret: secretName: 'ums-saml-tls' - name: traefik configMap: name: "ums-umc-server-proxy" items: - key: traefik.yaml path: traefik.yaml - key: dynamic.yaml path: dynamic.yaml ... --- # Source: nubus/charts/keycloak/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: ums-keycloak namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: keycloak helm.sh/chart: keycloak-0.9.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: keycloak app.kubernetes.io/instance: ums serviceName: ums-keycloak podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 163999489175340c6ed413f27e5392c0fd7c03eabfe6bb60239616028bacf024 intents.otterize.com/service-name: ums-keycloak labels: app.kubernetes.io/name: keycloak helm.sh/chart: keycloak-0.9.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always serviceAccountName: ums-keycloak terminationGracePeriodSeconds: 5 containers: - name: "keycloak" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "artifacts.software-univention.de/nubus/keycloak:25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65" imagePullPolicy: IfNotPresent args: - "start" - "--features=admin-fine-grained-authz,token-exchange" - "--metrics-enabled=true" # Find the available variables here: https://github.com/univention/univention-keycloak-app/blob/main/app/settings envFrom: - configMapRef: name: "ums-keycloak" env: - name: "KEYCLOAK_ADMIN" value: kcadmin - name: "KEYCLOAK_ADMIN_PASSWORD" valueFrom: secretKeyRef: name: ums-opendesk-keycloak-credentials key: admin_password - name: "KC_DB_USERNAME" value: keycloak_user - name: "KC_DB_PASSWORD" valueFrom: secretKeyRef: name: ums-keycloak-postgresql-opendesk-credentials key: keycloakDatabasePassword - name: "UNIVENTION_META_JSON" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/meta.json" ports: - name: http containerPort: 8080 protocol: TCP - name: https containerPort: 8443 protocol: TCP - name: ispn containerPort: 7800 protocol: TCP livenessProbe: httpGet: path: "/realms/master" port: 8080 initialDelaySeconds: 1 periodSeconds: 5 timeoutSeconds: 2 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/realms/master" port: 8080 initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 2 failureThreshold: 5 successThreshold: 1 startupProbe: httpGet: path: "/realms/master" port: 8080 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi --- # Source: nubus/charts/nubusLdapNotifier/templates/statefulset.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH apiVersion: apps/v1 kind: StatefulSet metadata: name: ums-ldap-notifier labels: app.kubernetes.io/name: ldap-notifier helm.sh/chart: nubusLdapNotifier-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "14.0.4" spec: serviceName: ums-ldap-notifier replicas: 1 selector: matchLabels: app.kubernetes.io/name: ldap-notifier app.kubernetes.io/instance: ums template: metadata: annotations: checksum/config: 52bd8a8b5b432276dacda90c63fc8127f9a066abdbb1f9b6040d9276875fa950 intents.otterize.com/service-name: ums-ldap-notifier labels: app.kubernetes.io/name: ldap-notifier app.kubernetes.io/instance: ums spec: securityContext: fsGroup: 102 fsGroupChangePolicy: Always serviceAccountName: ums-ldap-notifier containers: - name: "ldap-notifier" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier:0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7" imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: ums-ldap-notifier volumeMounts: - name: shared-data mountPath: /var/lib/univention-ldap - name: shared-run mountPath: /var/run/slapd - name: "run" mountPath: "/run" ports: - name: notifier containerPort: 6669 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 6669 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 6669 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 6669 timeoutSeconds: 5 volumes: - name: "run" emptyDir: medium: "Memory" - name: "shared-data" persistentVolumeClaim: claimName: shared-data-ums-ldap-server-primary-0 - name: "shared-run" persistentVolumeClaim: claimName: shared-run-ums-ldap-server-primary-0 affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: ldap-server-type operator: In values: - primary - key: apps.kubernetes.io/pod-index operator: In values: - "0" topologyKey: kubernetes.io/hostname --- # Source: nubus/charts/nubusLdapServer/templates/statefulset-primary.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: ums-ldap-server-primary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: primary annotations: intents.otterize.com/service-name: ums-ldap-server spec: serviceName: ums-ldap-server-primary replicas: 2 podManagementPolicy: OrderedReady volumeClaimTemplates: - metadata: name: "shared-data" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "1Gi" - metadata: name: "shared-run" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "1Gi" selector: matchLabels: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: primary updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 checksum/configmap-primary: 25661acec827deb67d9904c34a9360d8cb8a67714f31e9479266e09723ed213d labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: primary spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: ldap-server-type operator: In values: - primary topologyKey: kubernetes.io/hostname weight: 100 securityContext: fsGroup: 102 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-ldap-server terminationGracePeriodSeconds: 20 initContainers: - name: "univention-compatibility" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/ cp -a /etc/ldap/* /target/etc/ldap/ cp -a /etc/univention/* /target/etc/univention/ volumeMounts: - name: usr-share-univention-ldap-volume mountPath: /target/usr/share/univention-ldap - name: etc-ldap-volume mountPath: /target/etc/ldap - name: etc-univention-volume mountPath: /target/etc/univention resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - | mkdir -p /target/ldap-schema mkdir -p /target/ldap-acls cp -av /var/lib/univention-ldap-local/local-schema/* /target/ldap-schema cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d/* /target/ldap-acls volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "wait-for-saml-metadata" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" command: - "/bin/bash" - "/scripts/wait-for-saml-metadata.sh" envFrom: - configMapRef: name: ums-ldap-server volumeMounts: - name: scripts-volume mountPath: /scripts - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "openldap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-ldap-server - configMapRef: name: ums-ldap-server-primary env: - name: SYNC_PASSWORD valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" - name: LDAP_CN_ADMIN_PW valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" - name: STATUS_CONFIGMAP value: ums-ldap-server-status - name: STATUS_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 readinessProbe: exec: command: - /bin/sh - -c - ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL "(&(objectClass=mdb))" dn failureThreshold: 1 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi ports: - name: ldap containerPort: 389 protocol: TCP - name: ldaps containerPort: 636 protocol: TCP volumeMounts: - name: slapd-overlay-unix-socket-volume mountPath: /var/lib/univention-ldap/slapd-sock - name: usr-share-univention-ldap-volume mountPath: /usr/share/univention-ldap - name: usr-share-saml-volume mountPath: /usr/share/saml - name: etc-ldap-volume mountPath: /etc/ldap - name: etc-univention-volume mountPath: /etc/univention - name: primary-config-templates-volume mountPath: /config/templates - name: primary-scripts-volume mountPath: /entrypoint.d/90-append-slapd-conf.sh subPath: append-slapd.conf.sh - name: scripts-volume mountPath: /entrypoint.d/91-init-internal-database.sh subPath: init-internal-database.sh - name: scripts-volume mountPath: /scripts - name: plugin-targets mountPath: /var/lib/univention-ldap-local/local-schema subPath: ldap-schema readOnly: true - name: plugin-targets mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d subPath: ldap-acls readOnly: false - name: shared-run mountPath: /var/run/slapd - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "shared-data" mountPath: /var/lib/univention-ldap - name: leader-elector image: registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector:0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: LEASE_NAME value: "ldap-primary-leader" - name: LEASE_DURATION_SECONDS value: "15" - name: RETRY_PERIOD_SECONDS value: "5" - name: RENEW_DEADLINE_SECONDS value: "10" volumeMounts: - name: "shared-data" mountPath: /var/lib/univention-ldap volumes: - name: "slapd-overlay-unix-socket-volume" emptyDir: {} - name: "usr-share-univention-ldap-volume" emptyDir: {} - name: "usr-share-saml-volume" emptyDir: {} - name: "etc-ldap-volume" emptyDir: {} - name: "etc-univention-volume" emptyDir: {} - name: "primary-scripts-volume" configMap: name: ums-ldap-server-primary-scripts defaultMode: 0555 - name: "primary-config-templates-volume" configMap: name: ums-ldap-server-primary-config-templates - name: "scripts-volume" configMap: name: ums-ldap-server-scripts defaultMode: 0555 - name: "plugin-targets" emptyDir: {} - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" ... --- # Source: nubus/charts/nubusLdapServer/templates/statefulset-secondary.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: ums-ldap-server-secondary namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: secondary annotations: intents.otterize.com/service-name: ums-ldap-server spec: serviceName: ums-ldap-server-secondary replicas: 2 podManagementPolicy: OrderedReady volumeClaimTemplates: - metadata: name: "shared-data" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "1Gi" - metadata: name: "shared-run" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "1Gi" selector: matchLabels: app.kubernetes.io/name: ldap-server app.kubernetes.io/instance: ums ldap-server-type: secondary updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 checksum/configmap-secondary: 978da6d233bffad3a3b6f1e42204300a3cc8957ad9eeafee9673f438506802a6 labels: app.kubernetes.io/name: ldap-server helm.sh/chart: nubusLdapServer-0.34.1 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm ldap-server-type: secondary spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: ldap-server-type operator: In values: - secondary topologyKey: kubernetes.io/hostname weight: 100 securityContext: fsGroup: 102 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-ldap-server terminationGracePeriodSeconds: 20 initContainers: - name: "univention-compatibility" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - 'cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/' volumeMounts: - name: usr-share-univention-ldap-volume mountPath: /target/usr/share/univention-ldap - name: etc-ldap-volume mountPath: /target/etc/ldap - name: etc-univention-volume mountPath: /target/etc/univention resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "wait-for-saml-metadata" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" command: - "/bin/bash" - "/scripts/wait-for-saml-metadata.sh" envFrom: - configMapRef: name: ums-ldap-server volumeMounts: - name: scripts-volume mountPath: /scripts - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "wait-for-primary" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-ldap-server - configMapRef: name: ums-ldap-server-secondary env: - name: SYNC_PASSWORD valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" - name: LDAP_CN_ADMIN_PW valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" command: - bash - -c - '/scripts-secondary/wait-for-primary.sh' volumeMounts: - name: secondary-scripts-volume mountPath: /scripts-secondary resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "openldap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 102 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-ldap-server - configMapRef: name: ums-ldap-server-secondary env: - name: SYNC_PASSWORD valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" - name: LDAP_CN_ADMIN_PW valueFrom: secretKeyRef: name: "ums-ldap-server-credentials" key: "adminPassword" livenessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 startupProbe: failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 tcpSocket: port: 389 timeoutSeconds: 5 ports: - name: ldap containerPort: 389 protocol: TCP - name: ldaps containerPort: 636 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: usr-share-univention-ldap-volume mountPath: /usr/share/univention-ldap - name: usr-share-saml-volume mountPath: /usr/share/saml - name: etc-ldap-volume mountPath: /etc/ldap - name: etc-univention-volume mountPath: /etc/univention - name: secondary-config-templates-volume mountPath: /config/templates - name: secondary-scripts-volume mountPath: /entrypoint.d/90-append-slapd-conf.sh subPath: append-slapd.conf.sh - name: scripts-volume mountPath: /entrypoint.d/91-init-internal-database.sh subPath: init-internal-database.sh - name: plugin-targets mountPath: /var/lib/univention-ldap-local/local-schema subPath: ldap-schema readOnly: true - name: plugin-targets mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d subPath: ldap-acls readOnly: false - name: shared-run mountPath: /var/run/slapd - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "shared-data" mountPath: /var/lib/univention-ldap volumes: - name: "usr-share-univention-ldap-volume" emptyDir: {} - name: "usr-share-saml-volume" emptyDir: {} - name: "etc-ldap-volume" emptyDir: {} - name: "etc-univention-volume" emptyDir: {} - name: "secondary-scripts-volume" configMap: name: ums-ldap-server-secondary-scripts defaultMode: 0555 - name: "secondary-config-templates-volume" configMap: name: ums-ldap-server-secondary-config-templates - name: "scripts-volume" configMap: name: ums-ldap-server-scripts defaultMode: 0555 - name: "plugin-targets" emptyDir: {} - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" ... --- # Source: nubus/charts/nubusPortalConsumer/templates/statefulset.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH apiVersion: apps/v1 kind: StatefulSet metadata: name: ums-portal-consumer namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: portal-consumer app.kubernetes.io/version: 1.16.0 helm.sh/chart: nubusPortalConsumer-0.63.0 spec: serviceName: ums-portal-consumer replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ums app.kubernetes.io/name: portal-consumer template: metadata: annotations: checksum/config: 35dd904a00f3d581133c5f9b63984b8a553a94ae6375552c97c6e8a26f9fb957 checksum/secret: 468f8dbd741a43c130cac709b318f6b5002bdba3a514d8fa79c89fe60729c45c intents.otterize.com/service-name: ums-portal-consumer labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: portal-consumer app.kubernetes.io/version: 1.16.0 helm.sh/chart: nubusPortalConsumer-0.63.0 spec: securityContext: fsGroup: 1001 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" terminationGracePeriodSeconds: 5 initContainers: - name: wait-for-ldap securityContext: readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault command: ["/bin/bash", "/scripts/wait-for-ldap.sh"] image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" env: envFrom: - configMapRef: name: ums-portal-consumer-common volumeMounts: - name: scripts mountPath: /scripts - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/var/secrets/machine_secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: wait-for-udm securityContext: readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault command: ["/bin/bash", "/scripts/wait-for-udm.sh"] image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" env: envFrom: - configMapRef: name: ums-portal-consumer-common volumeMounts: - name: scripts mountPath: /scripts - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/var/secrets/machine_secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: wait-for-object-storage securityContext: readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault command: ["/usr/bin/python3", "/scripts/wait-for-object-store.py"] image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-portal-consumer-common env: - name: OBJECT_STORAGE_ACCESS_KEY_ID valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "accessKey" - name: OBJECT_STORAGE_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "secretKey" volumeMounts: - name: scripts mountPath: /scripts resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: wait-for-provisioning-api securityContext: readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" command: ["/bin/bash", "/scripts/wait-for-provisioning-api.sh"] volumeMounts: - name: scripts mountPath: /scripts env: - name: PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: "ums-portal-consumer-credentials" key: "PROVISIONING_API_PASSWORD" envFrom: - configMapRef: name: ums-portal-consumer-common resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "univention-compatibility" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-portal-consumer-common env: - name: REQUESTS_CA_BUNDLE value: "/etc/ssl/certs/ca-certificates.crt" - name: OBJECT_STORAGE_ACCESS_KEY_ID valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "accessKey" - name: OBJECT_STORAGE_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "secretKey" - name: PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: "ums-portal-consumer-credentials" key: "PROVISIONING_API_PASSWORD" command: - sh - -c - './50-ldap-setup.envsh; cp -a /etc/univention/* /target/etc/univention/' volumeMounts: - name: etc-univention-volume mountPath: /target/etc/univention - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/var/secrets/machine_secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "portal-consumer" securityContext: readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-portal-consumer-common env: - name: REQUESTS_CA_BUNDLE value: "/etc/ssl/certs/ca-certificates.crt" - name: OBJECT_STORAGE_ACCESS_KEY_ID valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "accessKey" - name: OBJECT_STORAGE_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: "ums-portal-consumer-minio-credentials" key: "secretKey" - name: PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: "ums-portal-consumer-credentials" key: "PROVISIONING_API_PASSWORD" volumeMounts: - name: usr-lib-univention-portal-config-volume mountPath: /usr/lib/univention-portal/config - name: etc-univention-volume mountPath: /etc/univention readOnly: true - name: group-membership-cache mountPath: /usr/share/univention-group-membership-cache/caches - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/var/secrets/machine_secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: "machine.secret" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-portal-consumer-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: "usr-lib-univention-portal-config-volume" emptyDir: {} - name: "etc-univention-volume" emptyDir: {} - name: "scripts" configMap: defaultMode: 0555 name: ums-portal-consumer-scripts - name: "ums-portal-consumer-ldap-credentials-volume" secret: secretName: "ums-portal-consumer-ldap-credentials" - name: "ums-portal-consumer-ldap-tls-volume" secret: secretName: "ums-portal-consumer-ldap-tls" volumeClaimTemplates: - metadata: name: group-membership-cache spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: "1Gi" --- # Source: nubus/charts/nubusProvisioning/charts/nats/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: ums-provisioning-nats namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: ums-provisioning-nats spec: serviceName: "ums-provisioning-nats-headless" replicas: 1 podManagementPolicy: Parallel volumeClaimTemplates: - metadata: name: "nats-data" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "1Gi" selector: matchLabels: app.kubernetes.io/name: provisioning-nats app.kubernetes.io/instance: ums updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 53c56366abd73187e41e32f3abeeb69c21aec733331b4650fb5b91096ab2a284 labels: app.kubernetes.io/name: provisioning-nats helm.sh/chart: nats-0.3.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - nats topologyKey: kubernetes.io/hostname securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning-nats containers: - name: "nats" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/nats:2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7" imagePullPolicy: "IfNotPresent" env: - name: SERVER_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CLUSTER_ADVERTISE value: $(SERVER_NAME).nats.$(NAMESPACE).svc.cluster.local - name: CLUSTER_NAME value: "ums-provisioning-nats" - name: NATS_UDM_LISTENER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-listener-credentials key: NATS_PASSWORD - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-nats-credentials key: admin_password - name: NATS_PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: NATS_PASSWORD - name: NATS_DISPATCHER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-dispatcher-credentials key: NATS_PASSWORD - name: NATS_UDM_TRANSFORMER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-transformer-credentials key: NATS_PASSWORD - name: NATS_PREFILL_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-prefill-credentials key: NATS_PASSWORD args: - --config - /etc/nats-config/nats.conf livenessProbe: failureThreshold: 3 httpGet: path: /healthz?js-enabled-only=true port: monitor scheme: HTTP initialDelaySeconds: 10 periodSeconds: 30 successThreshold: 1 timeoutSeconds: 5 readinessProbe: failureThreshold: 3 httpGet: path: /healthz?js-enabled-only=true port: monitor scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 startupProbe: failureThreshold: 90 httpGet: path: /healthz?js-enabled-only=true port: monitor scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 ports: - name: client containerPort: 4222 protocol: TCP - name: cluster containerPort: 6222 protocol: TCP - name: monitor containerPort: 8222 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 128Mi lifecycle: preStop: exec: command: - nats-server - -sl=ldm=/var/run/nats.pid volumeMounts: - name: var-run-volume mountPath: /var/run - name: config-volume mountPath: /etc/nats-config - name: nats-data mountPath: "/data" - name: "reloader" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/natsio/nats-server-config-reloader:0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99" imagePullPolicy: "IfNotPresent" env: - name: SERVER_NAME valueFrom: fieldRef: fieldPath: metadata.name args: - -pid - /var/run/nats.pid - -config - /etc/nats-config/nats.conf resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumeMounts: - name: config-volume mountPath: /etc/nats-config - name: var-run-volume mountPath: /var/run - name: "nats-box" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/natsio/nats-box:0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51" imagePullPolicy: "IfNotPresent" workingDir: /home/nats env: - name: SERVER_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: NATS_UDM_LISTENER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-listener-credentials key: NATS_PASSWORD - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-nats-credentials key: admin_password - name: NATS_PROVISIONING_API_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: NATS_PASSWORD - name: NATS_DISPATCHER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-dispatcher-credentials key: NATS_PASSWORD - name: NATS_UDM_TRANSFORMER_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-transformer-credentials key: NATS_PASSWORD - name: NATS_PREFILL_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-prefill-credentials key: NATS_PASSWORD - name: NATS_URL value: "nats://$(SERVER_NAME).ums-provisioning-nats-headless.$(NAMESPACE).svc.cluster.local:4222" args: - sh - -c - 'trap true INT TERM; sleep infinity & wait' resources: limits: cpu: 288 memory: 1Gi requests: cpu: 10m memory: 16Mi volumeMounts: volumes: - name: "var-run-volume" emptyDir: {} - name: "config-volume" configMap: name: ums-provisioning-nats-config defaultMode: 420 ... --- # Source: nubus/charts/nubusUdmListener/templates/statefulset.yaml apiVersion: "apps/v1" kind: "StatefulSet" metadata: name: 'ums-provisioning-udm-listener' labels: app.kubernetes.io/name: provisioning-udm-listener helm.sh/chart: nubusUdmListener-0.49.3 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" spec: serviceName: ums-provisioning-udm-listener replicas: 1 selector: matchLabels: app.kubernetes.io/name: provisioning-udm-listener app.kubernetes.io/instance: ums template: metadata: annotations: checksum/config: 'd010754eed8f47b373e2dd6e1a8110e2dbdd6e27f4bf51e0087f79694893d037' checksum/secret: 'dfb18b47dd62ad11226dcb141c57a41fcf226ace38ecfebc2e88d26fe650a5da' labels: app.kubernetes.io/name: provisioning-udm-listener app.kubernetes.io/instance: ums spec: securityContext: fsGroup: 65534 fsGroupChangePolicy: Always sysctls: [] serviceAccountName: ums-provisioning-udm-listener terminationGracePeriodSeconds: 5 containers: - name: "udm-listener" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 65534 runAsNonRoot: true runAsUser: 102 seLinuxOptions: null seccompProfile: type: RuntimeDefault privileged: false # Explicitly set privileged to false image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener:0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 startupProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 envFrom: - configMapRef: name: 'ums-provisioning-udm-listener' command: - "/bin/bash" - "-c" - | /usr/sbin/univention-directory-listener \ -F \ -x \ -d "${DEBUG_LEVEL}" \ -b "${LDAP_BASE_DN}" \ -D "cn=admin,${LDAP_BASE_DN}" \ -n "${NOTIFIER_SERVER}" \ -m "/usr/lib/univention-directory-listener/system" \ -c "/var/lib/univention-directory-listener" \ -y "${LDAP_PASSWORD_FILE}" -Z env: - name: NATS_USER value: "udmlistener" - name: NATS_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-udm-listener-credentials key: "NATS_PASSWORD" - name: EVENTS_USERNAME_UDM valueFrom: secretKeyRef: name: ums-provisioning-udm-listener-credentials key: "EVENTS_USERNAME_UDM" - name: EVENTS_PASSWORD_UDM valueFrom: secretKeyRef: name: ums-provisioning-udm-listener-credentials key: "EVENTS_PASSWORD_UDM" ports: - name: "http" containerPort: 80 protocol: "TCP" volumeMounts: - name: "config-files" mountPath: "/etc/univention" - name: "config-files" mountPath: "/etc/ldap/ldap.conf" subPath: "ldap.conf" - name: "ums-provisioning-udm-listener-ldap-credentials-volume" mountPath: "/var/secrets/ldap_secret" subPath: "ldap.secret" readOnly: true - name: "ums-provisioning-udm-listener-ldap-credentials-volume" mountPath: "/var/secrets/machine_secret" subPath: "machine.secret" readOnly: true - name: "ums-provisioning-udm-listener-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "data" mountPath: "/var/lib/univention-directory-listener" - name: "data" mountPath: "/var/lib/univention-ldap/schema/id" - name: "data" mountPath: "/var/log/univention" volumes: - name: "config-files" configMap: name: "ums-provisioning-udm-listener-files" - name: "ums-provisioning-udm-listener-ldap-credentials-volume" secret: secretName: "ums-provisioning-udm-listener-ldap-credentials" - name: "ums-provisioning-udm-listener-ldap-tls-volume" secret: secretName: "ums-provisioning-udm-listener-ldap-tls" volumeClaimTemplates: - metadata: name: "data" spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: "1Gi" ... --- # Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: ums-umc-server namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" annotations: intents.otterize.com/service-name: ums-umc-server spec: replicas: 1 strategy: type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: umc-server app.kubernetes.io/instance: ums template: metadata: annotations: checksum/configmap: 4941eb87d99515bc5cb280ca1682863759908a792cc0554f1f5c0a9b5b3f15a5 labels: app.kubernetes.io/name: umc-server helm.sh/chart: nubusUmcServer-0.38.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.29" spec: securityContext: fsGroup: 0 fsGroupChangePolicy: Always serviceAccountName: ums-umc-server terminationGracePeriodSeconds: 5 initContainers: - name: "prepare-config" securityContext: allowPrivilegeEscalation: false capabilities: add: - DAC_OVERRIDE - SETGID - SETUID - SYS_ADMIN - NET_ADMIN - AUDIT_CONTROL - CHOWN - FOWNER drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-umc-server command: - bash - -c - | /entrypoint.d/50-entrypoint.sh cp -a /var/lib/sss/* /target/var/lib/sss/ if [[ ! -d /target/var/lib/sss/pipes/private ]]; then mkdir -p /target/var/lib/sss/pipes/private fi chmod 750 /target/var/lib/sss/pipes/private/ chown root:root -R /target/var/lib/sss/pipes /target/var/lib/sss/db /etc/sssd/sssd.conf chmod 0600 /etc/sssd/sssd.conf volumeMounts: - name: "etc-ldap" mountPath: "/etc/ldap" - name: "etc-pam" mountPath: "/etc/pam.d" - name: "etc-sssd" mountPath: "/etc/sssd" - name: "etc-univention-ssl" mountPath: "/etc/univention/ssl" - name: "etc-univention-reports" mountPath: "/etc/univention/directory/reports" - name: "acl-cache" mountPath: "/var/cache/univention-management-console/acls" - name: "config-cache" mountPath: "/var/cache/univention-config" - name: "univention-logs" mountPath: "/var/log/univention" - name: "var-lib-sss" mountPath: "/target/var/lib/sss" - name: "var-www-univention" mountPath: "/var/www/univention" - name: "run" mountPath: "/run" - name: "tmp" mountPath: "/tmp" - name: "usr-share-umc-saml-idp" mountPath: "/usr/share/univention-management-console/saml/idp" - mountPath: /var/secrets/ssl name: certificates - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "ums-umc-server-ldap-credentials-volume" mountPath: "/etc/ldap.secret" subPath: ldap.secret readOnly: true - name: "ums-umc-server-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: machine.secret readOnly: true - name: "ums-umc-server-smtp-credentials-custom-volume" mountPath: "/var/secrets/smtp_secret" subPath: password readOnly: true - name: "ums-umc-server-postgresql-opendesk-credentials-volume" mountPath: "/var/secrets/db_password" subPath: umcServerDatabasePassword readOnly: true - name: "ums-umc-server-memcached-opendesk-credentials-volume" mountPath: "/var/secrets/memcached_password" subPath: umcServerMemcachedPassword readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" imagePullPolicy: "IfNotPresent" command: - sh - -c - | cp -Rv /usr/share/univention-management-console/i18n/ /target/umc-i18n cp -Rv /usr/share/univention-management-console/modules/ /target/umc-modules cp -Rv /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules cp -Rv /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d cp -Rv /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d cp -Rv /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers mkdir -p /target/udm-modules /target/udm-hooks.d /target/udm-syntax.d /target/udm-handlers /target/umc-modules /target/umc-icons volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "umc-server" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" imagePullPolicy: IfNotPresent command: - /bin/bash - -c - | /usr/sbin/univention-management-console-server \ --no-daemonize-module-processes \ --log-file stdout env: - name: "SELF_SERVICE_DB_SECRET" valueFrom: secretKeyRef: name: ums-umc-server-postgresql-opendesk-credentials key: umcServerDatabasePassword - name: "SELF_SERVICE_MEMCACHED_SECRET" valueFrom: secretKeyRef: name: ums-umc-server-memcached-opendesk-credentials key: umcServerMemcachedPassword - name: "PYTHONDONTWRITEBYTECODE" value: "1" envFrom: - configMapRef: name: ums-umc-server volumeMounts: - name: "etc-ldap" mountPath: "/etc/ldap" readOnly: true - name: "etc-pam" mountPath: "/etc/pam.d" readOnly: true - name: "etc-sssd" mountPath: "/etc/sssd" readOnly: true - name: "etc-univention-ssl" mountPath: "/etc/univention/ssl" readOnly: true - name: "etc-univention-reports" mountPath: "/etc/univention/directory/reports" readOnly: true - name: "acl-cache" mountPath: "/var/cache/univention-management-console/acls" - name: "config-cache" mountPath: "/var/cache/univention-config" readOnly: true - name: "univention-logs" mountPath: "/var/log/univention" - name: "var-lib-sss" mountPath: "/var/lib/sss" - name: "var-www-univention" mountPath: "/var/www/univention" readOnly: true - name: "run" mountPath: "/run" - name: "tmp" mountPath: "/tmp" - name: "usr-share-umc-saml-idp" mountPath: "/usr/share/univention-management-console/saml/idp" readOnly: true - mountPath: /var/secrets/ssl name: certificates - name: "config-map-ucr" mountPath: "/etc/univention/base.conf" subPath: "base.conf" - name: "config-map-ucr" mountPath: "/etc/univention/base-defaults.conf" subPath: "base-defaults.conf" - name: "ums-umc-server-ldap-credentials-volume" mountPath: "/etc/ldap.secret" subPath: ldap.secret readOnly: true - name: "ums-umc-server-ldap-credentials-volume" mountPath: "/etc/machine.secret" subPath: machine.secret readOnly: true - name: "ums-umc-server-smtp-credentials-custom-volume" mountPath: "/var/secrets/smtp_secret" subPath: password readOnly: true - name: "ums-umc-server-postgresql-opendesk-credentials-volume" mountPath: "/var/secrets/db_password" subPath: umcServerDatabasePassword readOnly: true - name: "ums-umc-server-memcached-opendesk-credentials-volume" mountPath: "/var/secrets/memcached_password" subPath: umcServerMemcachedPassword readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/ca_cert" subPath: "ca.crt" readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/cert_pem" subPath: "tls.crt" readOnly: true - name: "ums-umc-server-ldap-tls-volume" mountPath: "/var/secrets/private_key" subPath: "tls.key" readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/udm/modules subPath: udm-modules readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d subPath: udm-hooks.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d subPath: udm-syntax.d readOnly: true - name: plugin-targets mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers subPath: udm-handlers readOnly: true - name: plugin-targets mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ subPath: umc-icons readOnly: true - name: plugin-targets mountPath: /usr/share/univention-management-console/modules/ subPath: umc-modules readOnly: true - name: plugin-targets mountPath: /usr/share/univention-management-console/i18n subPath: umc-i18n readOnly: true - name: passwordreset-email-body mountPath: /usr/share/univention-self-service/email_bodies readOnly: true ports: - name: http containerPort: 8090 protocol: TCP livenessProbe: failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 30 successThreshold: 1 tcpSocket: port: http timeoutSeconds: 3 readinessProbe: failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 30 successThreshold: 1 tcpSocket: port: http timeoutSeconds: 3 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi - name: "sssd-sidecar" securityContext: allowPrivilegeEscalation: true capabilities: add: - DAC_OVERRIDE - SETGID - AUDIT_WRITE - SETUID - CHOWN - SETPCAP - FOWNER - FSETID - KILL - MKNOD - NET_BIND_SERVICE - SYS_CHROOT drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" imagePullPolicy: IfNotPresent command: - sh - -c - | sssd -i --logger stderr --debug-level 2 envFrom: - configMapRef: name: ums-umc-server volumeMounts: - name: "etc-ldap" mountPath: "/etc/ldap" readOnly: true - name: "etc-pam" mountPath: "/etc/pam.d" readOnly: true - name: "etc-sssd" mountPath: "/etc/sssd" readOnly: true - name: "etc-univention-ssl" mountPath: "/etc/univention/ssl" readOnly: true - name: "run" mountPath: "/run" - name: "usr-share-umc-saml-idp" readOnly: true mountPath: "/usr/share/univention-management-console/saml/idp" - name: "var-lib-sss" mountPath: "/var/lib/sss" - name: "sssd-db" mountPath: "/var/lib/sss/db/" - mountPath: /var/secrets/ssl name: certificates resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi livenessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 readinessProbe: exec: command: - sh - -c - | exit 0 failureThreshold: 10 initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 5 volumes: - name: certificates secret: secretName: 'ums-saml-tls' - name: "etc-ldap" emptyDir: medium: "Memory" - name: "etc-pam" emptyDir: medium: "Memory" - name: "etc-sssd" emptyDir: medium: "Memory" - name: "etc-univention-ssl" emptyDir: medium: "Memory" - name: "etc-univention-reports" emptyDir: medium: "Memory" - name: "acl-cache" emptyDir: medium: "Memory" - name: "config-cache" emptyDir: medium: "Memory" - name: "univention-logs" emptyDir: medium: "Memory" - name: "sssd-socket" emptyDir: medium: "Memory" - name: "var-lib-sss" emptyDir: {} - name: "var-www-univention" emptyDir: medium: "Memory" - name: "run" emptyDir: medium: "Memory" - name: "tmp" emptyDir: medium: "Memory" - name: "usr-share-umc-saml-idp" emptyDir: medium: "Memory" - name: "sssd-db" emptyDir: medium: "Memory" - name: "config-map-ucr" configMap: name: "ums-stack-data-ums-ucr" - name: "ums-umc-server-ldap-credentials-volume" secret: secretName: ums-umc-server-ldap-credentials - name: "ums-umc-server-smtp-credentials-custom-volume" secret: secretName: ums-umc-server-smtp-credentials-custom - name: "ums-umc-server-postgresql-opendesk-credentials-volume" secret: secretName: ums-umc-server-postgresql-opendesk-credentials - name: "ums-umc-server-memcached-opendesk-credentials-volume" secret: secretName: ums-umc-server-memcached-opendesk-credentials - name: "ums-umc-server-ldap-tls-volume" secret: secretName: "ums-umc-server-ldap-tls" - name: passwordreset-email-body configMap: name: ums-umc-server-pw-reset-email-body defaultMode: 0444 - name: plugin-targets emptyDir: {} --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "ums-keycloak-bootstrap-bootstrap-1" labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" annotations: argocd.argoproj.io/hook: Sync spec: template: metadata: annotations: checksum/config: dfc68a03cb67e395e679d403e3c49f1de9f842af818faea64e4b85bb1660699b intents.otterize.com/service-name: ums-keycloak-bootstrap labels: app.kubernetes.io/name: keycloak-bootstrap helm.sh/chart: nubusKeycloakBootstrap-0.10.2 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "0.0.1" spec: restartPolicy: "Never" serviceAccountName: ums-keycloak-bootstrap terminationGracePeriodSeconds: 5 initContainers: - name: "wait-for-keycloak" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-keycloak-bootstrap-init command: ["/usr/bin/python3", "/scripts/wait-for-keycloak.py"] resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - name: "wait-for-keycloak" mountPath: "/scripts" containers: - name: "univention-keycloak-bootstrap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap:0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa" imagePullPolicy: "IfNotPresent" command: - "/app/entrypoint.sh" envFrom: - configMapRef: name: "ums-keycloak-bootstrap" env: - name: KEYCLOAK_USERNAME value: kcadmin - name: KEYCLOAK_PASSWORD valueFrom: secretKeyRef: name: ums-opendesk-keycloak-credentials key: admin_password - name: LDAP_BIND_DN value: uid=ldapsearch_keycloak,cn=users,dc=swp-ldap,dc=internal - name: LDAP_BIND_PW valueFrom: secretKeyRef: name: ums-keycloak-bootstrap-ldap-opendesk-credentials key: password volumeMounts: - mountPath: "/bootstrap" name: "bootstrap-volume" - mountPath: "/credentials/ldapread.secret" name: "ldap-credentials-volume" subPath: password - mountPath: "/credentials/keycloak.secret" name: "keycloak-credentials-volume" subPath: admin_password - mountPath: "/tmp" name: "temp-dir" resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi volumes: - name: "wait-for-keycloak" configMap: name: ums-keycloak-bootstrap-init - name: "keycloak-credentials-volume" secret: secretName: ums-opendesk-keycloak-credentials - name: "ldap-credentials-volume" secret: secretName: ums-keycloak-bootstrap-ldap-opendesk-credentials - name: "bootstrap-volume" configMap: name: "ums-keycloak-bootstrap-bootstrap-data" - name: "temp-dir" emptyDir: sizeLimit: "20Mi" ... --- # Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml apiVersion: batch/v1 kind: Job metadata: name: ums-provisioning-register-consumers-1 namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-register-consumers-1 helm.sh/chart: nubusProvisioning-0.49.3 annotations: intents.otterize.com/service-name: ums-provisioning-register-consumers spec: template: metadata: annotations: checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 intents.otterize.com/service-name: ums-provisioning-register-consumers labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-provisioning-register-consumers-1 helm.sh/chart: nubusProvisioning-0.49.3 spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always sysctls: - name: net.ipv4.ip_unprivileged_port_start value: "1" serviceAccountName: ums-provisioning restartPolicy: Never volumes: - name: consumer-secrets projected: sources: - secret: name: "ums-provisioning-ox-credentials" items: - key: "ox-connector.json" path: oxconsumer.json - secret: name: "ums-provisioning-register-consumers-json-secrets" items: - key: "portal-consumer.json" path: portalconsumer.json - secret: name: "ums-provisioning-register-consumers-json-secrets" items: - key: "selfservice.json" path: selfserviceconsumer.json - name: "scripts-volume" configMap: name: ums-provisioning-wait-for-api defaultMode: 0555 - name: wait-for-data-loader configMap: name: ums-provisioning-register-consumers initContainers: - name: wait-for-provisioning-api securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-register-consumers command: ["/bin/bash", "-c", "/scripts/wait-for-api.sh ${PROVISIONING_API_BASE_URL}"] resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi volumeMounts: - name: scripts-volume mountPath: /scripts - name: wait-for-data-loader securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault command: ["/bin/bash", "/scripts/wait-for-data-loader.sh"] image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-provisioning-register-consumers env: - name: UDM_USERNAME value: "cn=admin" - name: UDM_PASSWORD valueFrom: secretKeyRef: name: ums-ldap-server-credentials key: adminPassword volumeMounts: - name: wait-for-data-loader mountPath: /scripts resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi containers: - name: consumer-registration securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: "IfNotPresent" volumeMounts: - name: consumer-secrets mountPath: "/secrets" envFrom: - configMapRef: name: ums-provisioning-register-consumers env: - name: ADMIN_USERNAME value: "admin" - name: ADMIN_PASSWORD valueFrom: secretKeyRef: name: ums-provisioning-api-credentials key: ADMIN_PASSWORD command: - "/bin/sh" - "-c" args: - | for file in /secrets/*; do filename=$(basename "${file}" .json) response=$(set +x; curl -s -o response.txt -w "%{http_code}" -u "${ADMIN_USERNAME}":"${ADMIN_PASSWORD}" \ -H 'Content-Type: application/json' \ -d @"${file}" "${PROVISIONING_API_BASE_URL}") if [ "${response}" -eq 201 ]; then echo "Successful registration of the consumer: "${filename}"" elif [ "${response}" -eq 200 ]; then echo "Consumer with the name '"${filename}"' is already registered with the same parameters" else echo "Failed to register the consumer: "${filename}" Response code: "${response}" Response body: $(cat response.txt)" exit 1 fi echo ------------------------------------ done resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi --- # Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: ums-stack-data-ums-1 labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums spec: backoffLimit: 6 template: metadata: name: stack-data-ums labels: app.kubernetes.io/name: stack-data-ums helm.sh/chart: nubusStackDataUms-0.89.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm annotations: checksum/config: '9bd899cd20b0212ff2570ea5a8a25e67f4e8beb6a084ccd940e2c244da20f9c4' checksum/config-data: '7283ada7d5683284a9b1e156a903fe8a82e0bd1ee43fe4a02c59db2b15aa39ba' argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: ums-stack-data-ums spec: restartPolicy: Never serviceAccountName: ums-stack-data-ums initContainers: - name: "load-internal-plugins" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" imagePullPolicy: "IfNotPresent" command: - sh - -c - | mkdir /target/udm-data-loader cp -RLv --preserve=all /join-data/* /target/udm-data-loader volumeMounts: - name: plugin-targets mountPath: /target - name: data mountPath: /join-data resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-portal-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-ox-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: "load-opendesk-a2g-mapper-extension" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" imagePullPolicy: "IfNotPresent" volumeMounts: - name: plugin-targets mountPath: /target resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi - name: wait-for-udm-rest-api command: ["/bin/sh", "-c", "/usr/local/bin/wait-for-udm-rest-api.py"] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-stack-data-ums volumeMounts: - name: "ums-udm-rest-api-credentials" mountPath: /run/secrets/univention.de/data-loader/udm_secret subPath: "machine.secret" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi containers: - name: "load-data-ums" command: - process-all.sh - --template-context - /template-context/context.yaml securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" imagePullPolicy: "IfNotPresent" envFrom: - configMapRef: name: ums-stack-data-ums env: - name: SET_STATUS_FLAG value: "true" volumeMounts: - name: "ums-udm-rest-api-credentials" mountPath: /run/secrets/univention.de/data-loader/udm_secret subPath: "machine.secret" - name: "plugin-targets" mountPath: "/join-data" subPath: udm-data-loader readOnly: true - name: context-config mountPath: /template-context readOnly: true resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi volumes: - name: "ums-udm-rest-api-credentials" secret: secretName: "ums-udm-rest-api-credentials" - name: "data" configMap: name: "ums-stack-data-ums-data" - name: "context-config" secret: secretName: "ums-stack-data-ums-context" - name: "plugin-targets" emptyDir: {} ... --- # Source: nubus/charts/nubusGuardian/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-guardian-management-ui namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: guardian app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 annotations: spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: Prefix path: /univention/guardian/management-ui backend: service: name: "ums-guardian-management-ui" port: number: 80 ... --- # Source: nubus/charts/nubusGuardian/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-guardian-management-api namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: guardian app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 annotations: spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: Prefix path: /guardian/management backend: service: name: "ums-guardian-management-api" port: number: 80 ... --- # Source: nubus/charts/nubusGuardian/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-guardian-authorization-api namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: guardian app.kubernetes.io/version: 2.0.0 helm.sh/chart: nubusGuardian-0.17.0 annotations: spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: Prefix path: /guardian/authorization backend: service: name: "ums-guardian-authorization-api" port: number: 80 ... --- # Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-keycloak-extensions-proxy labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ums-keycloak-extensions-proxy app.kubernetes.io/version: 21.0.1 helm.sh/chart: nubusKeycloakExtensions-0.16.1 annotations: nginx.ingress.kubernetes.io/proxy-buffer-size: 8k nginx.org/proxy-buffer-size: 8k spec: ingressClassName: nginx tls: - hosts: - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: Prefix path: /realms/ backend: service: name: ums-keycloak-extensions-proxy port: name: http - pathType: Prefix path: /js/ backend: service: name: ums-keycloak-extensions-proxy port: name: http - pathType: Prefix path: /resources/ backend: service: name: ums-keycloak-extensions-proxy port: name: http - pathType: Prefix path: /fingerprintjs backend: service: name: ums-keycloak-extensions-proxy port: name: http ... --- # Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-portal-frontend-rewrites namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: portal-frontend app.kubernetes.io/version: 1.16.0 helm.sh/chart: nubusPortalFrontend-0.63.0 annotations: intents.otterize.com/service-name: ums-portal-frontend nginx.ingress.kubernetes.io/rewrite-target: /$2$3 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /univention/(portal|selfservice)/$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/(portal|selfservice)/index.html$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/(portal|selfservice)/(css|fonts|i18n|media|js|oidc|custom)(/.*)$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/(portal)/(icons)(/.*)$ backend: service: name: ums-portal-frontend port: name: http ... --- # Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-portal-frontend-redirects namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: portal-frontend app.kubernetes.io/version: 1.16.0 helm.sh/chart: nubusPortalFrontend-0.63.0 annotations: intents.otterize.com/service-name: ums-portal-frontend nginx.ingress.kubernetes.io/permanent-redirect: /univention/portal/ spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/portal$ backend: service: name: ums-portal-frontend port: name: http - pathType: ImplementationSpecific path: /univention/selfservice$ backend: service: name: ums-portal-frontend port: name: http ... --- # Source: nubus/charts/nubusPortalServer/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-portal-server namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: portal-server app.kubernetes.io/version: 1.16.0 helm.sh/chart: nubusPortalServer-0.63.0 annotations: intents.otterize.com/service-name: ums-portal-server nginx.ingress.kubernetes.io/rewrite-target: /$2$3 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /()(univention/portal/|univention/selfservice/)(portal.json|navigation.json)$ backend: service: name: ums-portal-server port: name: http - pathType: ImplementationSpecific path: /()(univention/portal/|univention/selfservice/)(api/v1/me)$ backend: service: name: ums-portal-server port: name: http ... --- # Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-udm-rest-api namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: udm-rest-api app.kubernetes.io/version: 12.0.7 helm.sh/chart: nubusUdmRestApi-0.29.0 annotations: intents.otterize.com/service-name: ums-udm-rest-api nginx.ingress.kubernetes.io/configuration-snippet-disabled: | rewrite ^/univention(/udm/.*)$ $1 break; nginx.ingress.kubernetes.io/proxy-buffer-size: 64k nginx.ingress.kubernetes.io/rewrite-target: /$2$3 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /(univention/)(udm/.*)$ backend: service: name: ums-udm-rest-api port: name: http ... --- # Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-umc-gateway namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: umc-gateway app.kubernetes.io/version: 12.0.29 helm.sh/chart: nubusUmcGateway-0.38.0 annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2$3 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/cors-allow-origin: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de, https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" spec: ingressClassName: nginx tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /()(univention/)(languages.json|meta.json|theme.css)$ backend: service: name: ums-umc-gateway port: name: http - pathType: ImplementationSpecific path: /()(univention/)((js|management|themes)/.*)$ backend: service: name: ums-umc-gateway port: name: http - pathType: ImplementationSpecific path: /()(univention/login/)(dialog.js|main.js|LoginDialog.js|i18n/en/main.json)$ backend: service: name: ums-umc-gateway port: name: http ... --- # Source: nubus/charts/nubusUmcServer/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-umc-server namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: umc-server app.kubernetes.io/version: 12.0.29 helm.sh/chart: nubusUmcServer-0.38.0 annotations: intents.otterize.com/service-name: ums-umc-server nginx.ingress.kubernetes.io/configuration-snippet: | proxy_set_header X-UMC-HTTPS 'on'; nginx.ingress.kubernetes.io/rewrite-target: /$2$3 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - pathType: ImplementationSpecific path: /(univention)/(auth|logout|saml|get|set|command|upload)(.*)$ backend: service: name: ums-umc-server port: name: http ... --- # Source: nubus/templates/ingresses.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ums-portal-customization annotations: nginx.ingress.kubernetes.io/proxy-body-size: 128k nginx.ingress.kubernetes.io/proxy-buffer-size: 64k nginx.ingress.kubernetes.io/proxy-buffers-number: "4" nginx.ingress.kubernetes.io/proxy-busy-buffers-size: 128k nginx.ingress.kubernetes.io/proxy-http-version: "1.1" nginx.ingress.kubernetes.io/proxy-set-headers: | Host $http_host; X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-Host $http_x_forwarded_host; X-Forwarded-Port $http_x_forwarded_port; X-Forwarded-Proto $http_x_forwarded_proto; nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /favicon.ico$ pathType: ImplementationSpecific backend: service: name: ums-portal-frontend port: number: 80 --- # Source: nubus/charts/keycloak/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/configmap-provisioning.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/extraSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/ingresses.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/job-provisioning.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-handler.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/service-handler.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusLdapServer/templates/configmap-ldif-producer.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusLdapServer/templates/preflight-check.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH222 --- # Source: nubus/charts/nubusLdapServer/templates/secret-ldap-server-auth.yaml # TEST --- # Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusPortalConsumer/templates/extraSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalFrontend/templates/service.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/deployment.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/extraIngresses.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/ingress.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/service.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/extraSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/gateway.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/ingress.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/service.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusProvisioning/templates/virtualservice.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusSelfServiceConsumer/templates/extraSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/secret.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023-2024 Univention GmbH --- # Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUmcServer/templates/ingress.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/cert-manager.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/ingresses.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/nubusSecrets.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/postgresql-provisioning-configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/postgresql-provisioning-job.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/preflight-check.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nubus/templates/cert-manager.yaml apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: "ums-ecdsa-ca-cert" spec: secretName: "ums-ecdsa-ca-secret" duration: 87600h0m0s renewBefore: 78840h0m0s privateKey: algorithm: ECDSA size: 256 isCA: true issuerRef: name: "ums-ecdsa-ss-issuer" kind: Issuer commonName: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de dnsNames: - yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de ... --- # Source: nubus/templates/cert-manager.yaml apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: "ums-saml" spec: secretName: "ums-saml-tls" duration: 87600h0m0s renewBefore: 78840h0m0s subject: organizations: - yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de privateKey: algorithm: RSA encoding: PKCS1 size: 2048 usages: - digital signature - key encipherment - server auth - client auth dnsNames: - "ums-umc-server" - "ums-umc-server.yschmidt-opendesk-argo.svc.cluster.local" issuerRef: name: "ums-ca-issuer" kind: Issuer ... --- # Source: nubus/templates/cert-manager.yaml apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: "ums-ca-issuer" spec: ca: secretName: "ums-ecdsa-ca-secret" ... --- # Source: nubus/templates/cert-manager.yaml apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: "ums-ecdsa-ss-issuer" spec: selfSigned: {} ... --- # Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml apiVersion: "v1" kind: "Pod" metadata: name: "ums-portal-server-test-connection" labels: app.kubernetes.io/name: portal-server helm.sh/chart: nubusPortalServer-0.63.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.16.0" annotations: "helm.sh/hook": test spec: containers: - name: "wget" image: "busybox" command: ['wget'] args: ['ums-portal-server:80'] restartPolicy: "Never" ... --- # Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml apiVersion: "v1" kind: "Pod" metadata: name: "ums-udm-rest-api-test-connection" labels: app.kubernetes.io/name: udm-rest-api helm.sh/chart: nubusUdmRestApi-0.29.0 app.kubernetes.io/instance: ums app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "12.0.7" annotations: "helm.sh/hook": test spec: containers: - name: "wget" image: "busybox" command: ['wget'] args: ['ums-udm-rest-api:9979'] restartPolicy: "Never" ... --- # Source: intercom-service/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: intercom-service namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" annotations: automountServiceAccountToken: false ... --- # Source: intercom-service/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "intercom-service" labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" type: Opaque stringData: SECRET: "3eb73e36131cd6a817564c2144363875cf63a490" INTERCOM_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" BASE_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" PORT: "8008" PROXY: "false" ENABLE_SESSION_COOKIE: "true" SESSION_ROLLING_DURATION: "86400" LOG_LEVEL: "INFO" ORIGIN_REGEX: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" USER_UNIQUE_MAPPER: "opendesk_username" USERNAME_CLAIM: "opendesk_username" # Keycloak ISSUER_BASE_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk" KEYCLOAK_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" REALM_NAME: "opendesk" # Nordeck NORDECK_MODE: "test" NORDECK_URL: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" # Matrix MATRIX_ENABLED: "true" MATRIX_URL: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" MATRIX_SERVER_NAME: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" MATRIX_AS_SECRET: "f4a859990d1d37276a77e88ccd1e67d158b5e18f" # Nextcloud NC_ENABLED: "true" NC_ORIGIN: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" NC_URL: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" NC_AUDIENCE: "opendesk-nextcloud" # XWIKI XWIKI_ENABLED: "true" XWIKI_URL: "https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" XWIKI_AUDIENCE: "opendesk-xwiki" # UCS PORTAL_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" PORTAL_API_KEY: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" # Redis REDIS_HOST: "redis-headless" REDIS_PORT: "6379" REDIS_SSL: "false" REDIS_MTLS: "false" REDIS_PASSWORD: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" # OIDC CLIENT_ID: opendesk-intercom CLIENT_SECRET: "d42f6afee33e28f01222383c86e8741b98e14924" ... --- # Source: intercom-service/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "intercom-service" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" annotations: spec: type: "ClusterIP" ports: - name: "http" port: 8008 targetPort: http protocol: "TCP" selector: app.kubernetes.io/name: intercom-service app.kubernetes.io/instance: intercom-service ... --- # Source: intercom-service/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: "intercom-service" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: intercom-service app.kubernetes.io/instance: intercom-service strategy: type: RollingUpdate template: metadata: annotations: checksum/secret: 06e5393faabd76be04bd2ddb50a48960c3301970c0b1fc62ae8d4c1bef399c0b labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" spec: securityContext: fsGroup: 1000 fsGroupChangePolicy: Always serviceAccountName: "intercom-service" initContainers: containers: - name: "intercom-service" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/intercom-service:2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1" imagePullPolicy: IfNotPresent env: - name: REDIS_USER value: default envFrom: - secretRef: name: intercom-service livenessProbe: tcpSocket: port: "http" initialDelaySeconds: 15 periodSeconds: 5 timeoutSeconds: 2 failureThreshold: 3 successThreshold: 1 readinessProbe: tcpSocket: port: "http" initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 15 successThreshold: 1 ports: - name: http containerPort: 8008 protocol: TCP resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 64Mi volumeMounts: volumes: - name: "temp-dir" emptyDir: sizeLimit: "20Mi" ... --- # Source: intercom-service/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "intercom-service" labels: app.kubernetes.io/name: intercom-service helm.sh/chart: intercom-service-2.12.0 app.kubernetes.io/instance: intercom-service app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.4" annotations: spec: ingressClassName: "nginx" tls: - hosts: - "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: intercom-service port: name: http ... --- # Source: intercom-service/templates/configmap-provisioning.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2024 Univention GmbH --- # Source: nginx-s3-gateway/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: nubus-nginx-s3-gateway namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: nginx-s3-gateway/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "nubus-nginx-s3-gateway" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm annotations: stringData: accessKey: ums_user secretKey: 915f15805278ef774a1cf3abfa6b8623c1fa4544 ... --- # Source: nginx-s3-gateway/templates/configmap.yaml apiVersion: "v1" kind: "ConfigMap" metadata: name: "nubus-nginx-s3-gateway" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm annotations: data: server_variables.conf.template: | # Variable indicating to the awssig4.js script that singing key # caching is turned off. This feature uses the keyval store, so it # is only enabled when using NGINX Plus. set $cache_signing_key_enabled 0; # Variable indicating to the awscredentials.js script that session token # caching is turned on. This feature uses the keyval store, so it # is only enabled when using NGINX Plus. set $cache_instance_credentials_enabled 0; ... --- # Source: nginx-s3-gateway/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "nubus-nginx-s3-gateway" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "gateway" port: 8080 targetPort: "gateway" protocol: "TCP" selector: app.kubernetes.io/name: nginx-s3-gateway app.kubernetes.io/instance: nubus ... --- # Source: nginx-s3-gateway/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: nubus-nginx-s3-gateway namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: nginx-s3-gateway app.kubernetes.io/instance: nubus strategy: type: RollingUpdate template: metadata: annotations: labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: nubus-nginx-s3-gateway containers: - name: "nginx-s3-gateway" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/nginxinc/nginx-s3-gateway:unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4" imagePullPolicy: IfNotPresent env: - name: "ALLOW_DIRECTORY_LIST" value: "false" - name: "AWS_SIGS_VERSION" value: "4" - name: "AWS_ACCESS_KEY_ID" valueFrom: secretKeyRef: name: nubus-nginx-s3-gateway key: accessKey - name: "AWS_SECRET_ACCESS_KEY" valueFrom: secretKeyRef: name: nubus-nginx-s3-gateway key: secretKey - name: "S3_BUCKET_NAME" value: "ums" - name: "S3_REGION" value: "eu-west-1" - name: "S3_SERVER_PORT" value: "443" - name: "S3_SERVER_PROTO" value: "https" - name: "S3_SERVER" value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "S3_STYLE" value: "path" - name: "PROVIDE_INDEX_PAGE" value: "false" - name: "DEBUG" value: "false" livenessProbe: httpGet: path: "/health" port: 8080 initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: "/health" port: 8080 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: gateway containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 64Mi requests: cpu: 100m memory: 16Mi volumeMounts: - name: "tmp" mountPath: "/tmp" - name: "cache" mountPath: "/var/cache/nginx" - name: "conf" mountPath: "/etc/nginx/conf.d" - name: "server-variables" mountPath: "/etc/nginx/templates/gateway/server_variables.conf.template" subPath: "server_variables.conf.template" volumes: - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "100Mi" - name: "cache" emptyDir: medium: "Memory" sizeLimit: "100Mi" - name: "conf" emptyDir: medium: "Memory" sizeLimit: "1Mi" - name: "server-variables" configMap: name: nubus-nginx-s3-gateway items: - key: "server_variables.conf.template" path: "server_variables.conf.template" ... --- # Source: nginx-s3-gateway/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "nubus-nginx-s3-gateway" labels: app.kubernetes.io/name: nginx-s3-gateway helm.sh/chart: nginx-s3-gateway-1.0.1 app.kubernetes.io/instance: nubus app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/rewrite-target: /portal-assets/icons/$2/$3 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: "nginx" tls: - hosts: - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: /univention/(portal|selfservice)/icons/(logos|entries)/(.*)$ pathType: Prefix backend: service: name: nubus-nginx-s3-gateway port: name: gateway ... --- # Source: opendesk-keycloak-bootstrap/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: opendesk-keycloak-bootstrap namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: opendesk-keycloak-bootstrap/templates/secrect.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-keycloak-bootstrap" labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm stringData: values.yaml: | additionalAnnotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation additionalLabels: {} affinity: {} cleanup: deletePodsOnSuccess: true deletePodsOnSuccessTimeout: 60 keepPVCOnDelete: false common: exampleValue: common-chart global: domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de hosts: adminBot: adminbot collabora: office cryptpad: pad element: chat intercomService: ics jitsi: meet keycloak: id matrixNeoBoardWidget: matrix-neoboard-widget matrixNeoChoiceWidget: matrix-neochoice-widget matrixNeoDateFixBot: matrix-neodatefix-bot matrixNeoDateFixWidget: matrix-neodatefix-widget minioApi: objectstore minioConsole: objectstore-ui nextcloud: files notes: notes nubus: portal openproject: projects openxchange: webmail portal: portal static: static synapse: matrix synapseAdmin: synapse-admin synapseFederation: matrix-federation whiteboard: whiteboard xwiki: wiki imagePullSecrets: [] registry: registry.opencode.de config: clientAccessRestrictions: dovecot: client: opendesk-dovecot group: managed-by-attribute-Groupware role: opendesk-dovecot-access-control scope: opendesk-dovecot-scope matrix: client: opendesk-matrix group: managed-by-attribute-Livecollaboration role: opendesk-matrix-access-control scope: opendesk-matrix-scope nextcloud: client: opendesk-nextcloud group: managed-by-attribute-Fileshare role: opendesk-nextcloud-access-control scope: opendesk-nextcloud-scope notes: client: opendesk-notes group: managed-by-attribute-Notes role: opendesk-notes-access-control scope: opendesk-notes-scope openproject: client: opendesk-openproject group: managed-by-attribute-Projectmanagement role: opendesk-openproject-access-control scope: opendesk-openproject-scope oxAppSuite: client: opendesk-oxappsuite group: managed-by-attribute-Groupware role: opendesk-oxappsuite-access-control scope: opendesk-oxappsuite-scope xwiki: client: opendesk-xwiki group: managed-by-attribute-Knowledgemanagement role: opendesk-xwiki-access-control scope: opendesk-xwiki-scope custom: {} debug: enabled: false pauseBeforeScriptStart: 0 keycloak: admin: secret: name: "" values: password: 81d3190e7a7467137ccb11c6fdd2c296986275db username: kcadmin intraCluster: enabled: true internalBaseUrl: http://ums-keycloak.yschmidt-opendesk-argo.svc.cluster.local:8080 realm: opendesk managed: clientScopes: - acr - web-origins - email - profile - microprofile-jwt - role_list - offline_access - roles - address - phone clients: - guardian-management-api - guardian-scripts - guardian-ui - UMC - ${client_account} - ${client_account-console} - ${client_admin-cli} - ${client_broker} - ${client_realm-management} - ${client_security-admin-console} opendesk: clientScopes: - name: read_contacts protocol: openid-connect - name: write_contacts protocol: openid-connect - description: Scope for the claims required by openDesk's OpenProject instance. name: opendesk-openproject-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: openproject_admin id.token.claim: true jsonType.label: String user.attribute: opendeskProjectmanagementAdmin userinfo.token.claim: true consentRequired: false name: opendeskProjectmanagementAdmin protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: email id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: email userinfo.token.claim: true consentRequired: false name: email protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: given_name id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: firstName userinfo.token.claim: true consentRequired: false name: given name protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: family_name id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: lastName userinfo.token.claim: true consentRequired: false name: family name protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's Nextcloud instance. name: opendesk-nextcloud-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: email id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: email userinfo.token.claim: true consentRequired: false name: email protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: context id.token.claim: true jsonType.label: String user.attribute: oxContextIDNum userinfo.token.claim: true consentRequired: false name: context protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's Matrix instance. name: opendesk-matrix-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true id.token.claim: true introspection.token.claim: true userinfo.token.claim: true consentRequired: false name: full name protocol: openid-connect protocolMapper: oidc-full-name-mapper - config: access.token.claim: true claim.name: email id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: email userinfo.token.claim: true consentRequired: false name: email protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's XWiki instance. name: opendesk-xwiki-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true id.token.claim: true introspection.token.claim: true userinfo.token.claim: true consentRequired: false name: full name protocol: openid-connect protocolMapper: oidc-full-name-mapper - config: access.token.claim: true claim.name: email id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: email userinfo.token.claim: true consentRequired: false name: email protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's Dovecot instance. name: opendesk-dovecot-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's OX Appuite instance. name: opendesk-oxappsuite-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: context id.token.claim: true jsonType.label: String user.attribute: oxContextIDNum userinfo.token.claim: true consentRequired: false name: context protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - description: Scope for the claims required by openDesk's Notes instance. name: opendesk-notes-scope protocol: openid-connect protocolMappers: - config: access.token.claim: true claim.name: email id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: email userinfo.token.claim: true consentRequired: false name: email protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: given_name id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: firstName userinfo.token.claim: true consentRequired: false name: given name protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: family_name id.token.claim: true introspection.token.claim: true jsonType.label: String user.attribute: lastName userinfo.token.claim: true consentRequired: false name: family name protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper clients: - attributes: backchannel.logout.revoke.offline.tokens: true backchannel.logout.session.required: true backchannel.logout.url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/backchannel-logout authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-intercom consentRequired: false defaultClientScopes: - offline_access frontchannelLogout: false name: opendesk-intercom protocol: openid-connect protocolMappers: - config: access.token.claim: true id.token.claim: false included.client.audience: opendesk-intercom consentRequired: false name: intercom-audience protocol: openid-connect protocolMapper: oidc-audience-mapper - config: access.token.claim: true claim.name: opendesk_username id.token.claim: true jsonType.label: String user.attribute: uid userinfo.token.claim: true consentRequired: false name: opendesk_username protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper - config: access.token.claim: true claim.name: opendesk_useruuid id.token.claim: true jsonType.label: String user.attribute: entryUUID userinfo.token.claim: true consentRequired: false name: opendesk_useruuid protocol: openid-connect protocolMapper: oidc-usermodel-attribute-mapper publicClient: false redirectUris: - https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/callback secret: d42f6afee33e28f01222383c86e8741b98e14924 - alwaysDisplayInConsole: false attributes: backchannel.logout.revoke.offline.tokens: false backchannel.logout.session.required: false client.introspection.response.allow.jwt.claim.enabled: false client.use.lightweight.access.token.enabled: false client_credentials.use_refresh_token: false display.on.consent.screen: false oauth2.device.authorization.grant.enabled: false oidc.ciba.grant.enabled: false post.logout.redirect.uris: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* require.pushed.authorization.requests: false tls.client.certificate.bound.access.tokens: false token.response.type.bearer.lower-case: false use.jwks.url: false use.refresh.tokens: false user.info.response.signature.alg: RS256 authorizationServicesEnabled: false bearerOnly: false clientAuthenticatorType: client-secret clientId: opendesk-notes consentRequired: false defaultClientScopes: - opendesk-notes-scope directAccessGrantsEnabled: true frontchannelLogout: false implicitFlowEnabled: false name: opendesk-notes protocol: openid-connect publicClient: false redirectUris: - https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/callback/ secret: 0cbc7a3257db722ed76270a547c7dccf1f84db87 serviceAccountsEnabled: false standardFlowEnabled: true surrogateAuthRequired: false - attributes: backchannel.logout.session.required: false authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-dovecot consentRequired: false defaultClientScopes: - opendesk-dovecot-scope frontchannelLogout: false name: opendesk-dovecot protocol: openid-connect publicClient: false secret: b4b4e59939b23669b1287c722376441b0bdcddfa - attributes: backchannel.logout.session.required: true backchannel.logout.url: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ajax/oidc/backchannel_logout post.logout.redirect.uris: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-oxappsuite consentRequired: false defaultClientScopes: - opendesk-oxappsuite-scope - read_contacts - write_contacts frontchannelLogout: false name: opendesk-oxappsuite protocol: openid-connect publicClient: false redirectUris: - https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* secret: ba9c972d28385e400bc71a5869b8219ec42afb45 - attributes: backchannel.logout.session.required: true backchannel.logout.url: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/_synapse/client/oidc/backchannel_logout post.logout.redirect.uris: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-matrix consentRequired: false defaultClientScopes: - opendesk-matrix-scope directAccessGrantsEnabled: true frontchannelLogout: false name: opendesk-matrix protocol: openid-connect publicClient: false redirectUris: - https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* secret: b4f6604310ebd2d06b5fc8832ae1095e43481b04 serviceAccountsEnabled: true standardFlowEnabled: true - attributes: backchannel.logout.session.required: true backchannel.logout.url: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/user_oidc/backchannel-logout/opendesk post.logout.redirect.uris: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-nextcloud consentRequired: false defaultClientScopes: - opendesk-nextcloud-scope - read_contacts - write_contacts frontchannelLogout: false name: opendesk-nextcloud protocol: openid-connect publicClient: false redirectUris: - https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* secret: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 - attributes: backchannel.logout.session.required: true backchannel.logout.url: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/auth/keycloak/backchannel-logout post.logout.redirect.uris: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-openproject consentRequired: false defaultClientScopes: - opendesk-openproject-scope frontchannelLogout: false name: opendesk-openproject protocol: openid-connect publicClient: false redirectUris: - https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* secret: 3621e456b58b341fe12689612e0ca7820974d274 serviceAccountsEnabled: true - attributes: backchannel.logout.session.required: false backchannel.logout.url: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/oidc/authenticator/backchannel_logout post.logout.redirect.uris: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* authorizationServicesEnabled: false clientAuthenticatorType: client-secret clientId: opendesk-xwiki consentRequired: false defaultClientScopes: - opendesk-xwiki-scope frontchannelLogout: false name: opendesk-xwiki protocol: openid-connect publicClient: false redirectUris: - https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* secret: af1243a89d9b55965b6395e3ab7cc6d004dbcdab precreateGroups: - Domain Admins - Domain Users - 2fa-users - IAM API - Full Access - managed-by-attribute-Fileshare - managed-by-attribute-FileshareAdmin - managed-by-attribute-Knowledgemanagement - managed-by-attribute-KnowledgemanagementAdmin - managed-by-attribute-Livecollaboration - managed-by-attribute-LivecollaborationAdmin - managed-by-attribute-Projectmanagement - managed-by-attribute-ProjectmanagementAdmin - managed-by-attribute-Groupware - managed-by-attribute-Notes realmSettings: accessCodeLifespan: 60 accessCodeLifespanLogin: 1800 accessCodeLifespanUserAction: 300 accessTokenLifespan: 300 accessTokenLifespanForImplicitFlow: 900 actionTokenGeneratedByAdminLifespan: 43200 actionTokenGeneratedByUserLifespan: 300 clientOfflineSessionIdleTimeout: 0 clientOfflineSessionMaxLifespan: 0 clientSessionIdleTimeout: 0 clientSessionMaxLifespan: 0 oauth2DeviceCodeLifespan: 600 oauth2DevicePollingInterval: 5 offlineSessionIdleTimeout: 2592000 offlineSessionMaxLifespan: 5184000 offlineSessionMaxLifespanEnabled: false refreshTokenMaxReuse: 0 rememberMe: true revokeRefreshToken: false ssoSessionIdleTimeout: 14400 ssoSessionIdleTimeoutRememberMe: 28800 ssoSessionMaxLifespan: 57600 ssoSessionMaxLifespanRememberMe: 1209600 ssoFederation: enabled: false enforceFederatedLogin: false idpDetails: {} name: My upstream IdP twoFactorSettings: additionalGroups: - foo roleName: 2FA role containerSecurityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL enabled: true privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault extraEnvVars: [] extraVolumeMounts: [] extraVolumes: [] global: domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de hosts: adminBot: adminbot collabora: office cryptpad: pad element: chat intercomService: ics jitsi: meet keycloak: id matrixNeoBoardWidget: matrix-neoboard-widget matrixNeoChoiceWidget: matrix-neochoice-widget matrixNeoDateFixBot: matrix-neodatefix-bot matrixNeoDateFixWidget: matrix-neodatefix-widget minioApi: objectstore minioConsole: objectstore-ui nextcloud: files notes: notes nubus: portal openproject: projects openxchange: webmail portal: portal static: static synapse: matrix synapseAdmin: synapse-admin synapseFederation: matrix-federation whiteboard: whiteboard xwiki: wiki imagePullSecrets: [] registry: registry.opencode.de image: imagePullPolicy: IfNotPresent registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 imagePullSecrets: [] nodeSelector: {} podAnnotations: intents.otterize.com/service-name: ums-keycloak-bootstrap podLabels: {} podSecurityContext: enabled: true fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi serviceAccount: automountServiceAccountToken: false create: true labels: {} terminationGracePeriodSeconds: "" tolerations: [] topologySpreadConstraints: [] ... --- # Source: opendesk-keycloak-bootstrap/templates/secrect.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-keycloak-bootstrap-admin-creds" labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm stringData: admin.yaml: | username: kcadmin password: 81d3190e7a7467137ccb11c6fdd2c296986275db ... --- # Source: opendesk-keycloak-bootstrap/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-keycloak-bootstrap-ansible" labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm data: configure_client_access_restriction.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Configuring client role/group based required scopes to restrict access based on group membership" ansible.builtin.include_tasks: "configure_client_access_restriction_loop.yml" loop: "{{ client_access_restriction_details.values() }}" loop_control: loop_var: "client_access_config" ... configure_client_access_restriction_loop.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" # # create client role # 1. get client_uuid # 2. POST https://keycloak/admin/realms/opendesk/clients//roles # - name: "Fetch client info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "clientqueryresult" - name: "Set fact for client_uuid of {{ client_access_config.client }}" ansible.builtin.set_fact: client_uuid: "{{ clientqueryresult['json'] | json_query('[?clientId==`'+client_access_config.client+'`].id') | first }}" - name: "Create client role" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: | { "name":"{{ client_access_config.role }}", "description":"", "attributes":{} } status_code: [201, 409] # # create client role <> scope mapping # 1. get clientscope_uuid # 2. get clientrole_uuid # 3. POST https://keycloak/admin/realms/opendesk/client-scopes//scope-mappings/clients/ # [{"id":"","name":"","description":""}] # - name: "Fetch clientscope info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "clientscopequeryresult" - name: "Set fact for clientscope_uuid of {{ client_access_config.scope }}" ansible.builtin.set_fact: clientscope_uuid: "{{ clientscopequeryresult['json'] | json_query('[?name==`'+client_access_config.scope+'`].id') | first }}" - name: "Fetch clientroles info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "clientrolesqueryresult" - name: "Set fact for clientrole_uuid of {{ client_access_config.role }}" ansible.builtin.set_fact: clientrole_uuid: "{{ clientrolesqueryresult['json'] | json_query('[?name==`'+client_access_config.role+'`].id') | first }}" - name: "Create client role <> scope mapping" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes/{{ clientscope_uuid }}/scope-mappings/clients/{{ client_uuid }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: | [ { "id":"{{ clientrole_uuid }}", "name":"{{ client_access_config.role }}", "description":"" } ] status_code: [204, 409] # # map client role to (ldap) group # 1. create group or accept if it already exists (as we cannot force Keycloak to just get the groups from LDAP without users being sync'd) # 2. get group_uuid # 3. POST https://keycloak/admin/realms/opendesk/groups/9357d539-a2a3-48db-8345-e689a7bc2cda/role-mappings/clients/8432f49d-d820-4419-960d-b496dfbdc76c # [{"id":"6bc7c56f-739f-415d-98e8-6222f7ffb5d3","name":"opendesk-matrix-access-control","description":""}] # - name: "Create group {{ client_access_config.group }} (accept if it already exists)" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "POST" body: | { "name": "{{ client_access_config.group }}" } status_code: [201, 409] - name: "Fetch groups info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "groupsqueryresult" - name: "Set fact for group_uuid of group {{ client_access_config.group }}" ansible.builtin.set_fact: group_uuid: "{{ groupsqueryresult['json'] | json_query('[?name==`'+client_access_config.group+'`].id') | first }}" - name: "Map client role {{ client_access_config.role }} to group {{ client_access_config.group }}" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ group_uuid }}/role-mappings/clients/{{ client_uuid }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: | [ { "id":"{{ clientrole_uuid }}", "name":"{{ client_access_config.role }}", "description":"" } ] status_code: [204, 409] ... configure_clientpermissions.yml: | # SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - name: "Ensure IntercomService is up and running with retries." ansible.builtin.uri: url: "{{ global_intercom_url }}" method: "GET" register: "ics_alive_response" until: "ics_alive_response.status == 200" retries: 60 delay: 10 - name: "Fetch client info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "clientqueryresult" - name: "Extract client IDs and add to list" ansible.builtin.set_fact: client_ids: "{{ global_cfgobj.config.opendesk.clients | map(attribute='clientId') | list }}" - name: "Looping now" ansible.builtin.include_tasks: "configure_clientpermissions_enable_loop.yml" loop: "{{ client_ids }}" loop_control: loop_var: "client_id" - name: "Set KC internal client ID for realm_management" ansible.builtin.set_fact: kcint_clientid_realmmanagement: "{{ clientqueryresult['json'] | json_query('[?clientId==`realm-management`].id') | first }}" - name: "Add intercom policy to management client" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/policy" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "POST" body: | { "name": "opendesk-intercom", "type": "client", "logic": "POSITIVE", "decisionStrategy": "UNANIMOUS", "config": { "clients": "[\"opendesk-intercom\"]" } } status_code: [201, 409] - name: "Fetch policy info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/policy" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "policyqueryresult" - name: "set intercom_policy_id" ansible.builtin.set_fact: intercom_policy_id: "{{ policyqueryresult['json'] | json_query('[?name==`opendesk-intercom`].id') | first }}" # We also set the intercom client on create, but when re-creating clients the assignment to the policy gets lost and # just assigning the client on create does not add the client when the policy already exists. - name: "Update the intercom policy to be sure it includes the intercom client" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/policy/{{ intercom_policy_id }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "PUT" body: | { "name": "opendesk-intercom", "type": "client", "logic": "POSITIVE", "decisionStrategy": "UNANIMOUS", "config": { "clients": "[\"opendesk-intercom\"]" } } status_code: [201, 409] - name: "Fetch scope info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/scope" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "scopequeryresult" - name: "set tokenexchange_scope_id" ansible.builtin.set_fact: tokenexchange_scope_id: "{{ scopequeryresult['json'] | json_query('[?name==`token-exchange`].id') | first }}" - name: "Fetch permission scope info" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/permission/scope" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "permissionscopequeryresult" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - name: "Will loop over" ansible.builtin.debug: # cannot use json_query's start with due to https://github.com/ansible/ansible/issues/27299 msg: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.') | list | json_query('[*].name') }}" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - name: "Looping now" ansible.builtin.include_tasks: "configure_clientpermissions_configure_loop.yml" loop: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.') | list | json_query('[*].name') }}" loop_control: loop_var: "loop_client_string" ... configure_clientpermissions_configure_loop.yml: | # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - name: "get loop_client_id from loop_client_string" ansible.builtin.set_fact: loop_client_id: "{{ loop_client_string.split('.')[-1] }}" - name: "Get tokenExchange_permission_scope_id_for_loop_client" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/permission/scope" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "result" - name: "Set tokenExchange_permission_scope_id_for_loop_client" ansible.builtin.set_fact: tokenExchange_permission_scope_id_for_loop_client: "{{ result['json'] | json_query('[?name==`token-exchange.permission.client.'+loop_client_id+'`].id') | first }}" - name: "Get resource_id_for_loop_client" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/resource" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "result" - name: "Set resource_id_for_loop_client" ansible.builtin.set_fact: resource_id_for_loop_client: "{{ result['json'] | json_query('[?name==`client.resource.'+loop_client_id+'`]._id') | first }}" - name: "Set body for request" ansible.builtin.set_fact: request_body: | { "name":"token-exchange.permission.client.{{ loop_client_id }}", "type":"scope", "logic":"POSITIVE", "decisionStrategy":"UNANIMOUS", "resources":[ "{{ resource_id_for_loop_client }}" ], "scopes":[ "{{ tokenexchange_scope_id }}" ], "policies":[ "{{ intercom_policy_id }}" ] } - name: "set the policy (realm_management > authorization > permissions > token-xchange.permission.client." ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\ /authz/resource-server/permission/scope/{{ tokenExchange_permission_scope_id_for_loop_client }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: "{{ request_body }}" status_code: [200, 201] ... configure_clientpermissions_enable_loop.yml: | # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Set KC internal clientid for {{ client_id }}" ansible.builtin.set_fact: kcint_clientid: "{{ clientqueryresult['json'] | json_query('[?clientId==`' + client_id + '`].id') | first }}" - name: "Enable permissions for {{ client_id }} / {{ kcint_clientid }}" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid }}\ /management/permissions" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "PUT" body: "{ \"enabled\": true }" status_code: [200] ... configure_create_groups.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Creating groups in loop" ansible.builtin.include_tasks: "configure_create_groups_loop.yml" loop: "{{ precreate_groups }}" loop_control: loop_var: "loop_group_name" ... configure_create_groups_loop.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Create group {{ loop_group_name }} (and accept if it already exists)" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "POST" body: | { "name": "{{ loop_group_name }}" } status_code: [201, 409] configure_realmsettings.yml: | # SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - name: "Configure session timeouts and lifespans" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: | { "accessTokenLifespan": {{ global_cfgobj.config.realmSettings.accessTokenLifespan }}, "ssoSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeout }}, "ssoSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespan }}, "accessTokenLifespanForImplicitFlow": {{ global_cfgobj.config.realmSettings.accessTokenLifespanForImplicitFlow }}, "offlineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.offlineSessionIdleTimeout }}, "offlineSessionMaxLifespanEnabled": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespanEnabled }}, "offlineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespan }}, "clientSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientSessionIdleTimeout }}, "clientSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientSessionMaxLifespan }}, "clientOfflineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientOfflineSessionIdleTimeout }}, "clientOfflineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientOfflineSessionMaxLifespan }}, "accessCodeLifespan": {{ global_cfgobj.config.realmSettings.accessCodeLifespan }}, "accessCodeLifespanUserAction": {{ global_cfgobj.config.realmSettings.accessCodeLifespanUserAction }}, "accessCodeLifespanLogin": {{ global_cfgobj.config.realmSettings.accessCodeLifespanLogin }}, "actionTokenGeneratedByAdminLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByAdminLifespan }}, "actionTokenGeneratedByUserLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByUserLifespan }}, "oauth2DeviceCodeLifespan": {{ global_cfgobj.config.realmSettings.oauth2DeviceCodeLifespan }}, "oauth2DevicePollingInterval": {{ global_cfgobj.config.realmSettings.oauth2DevicePollingInterval }}, "revokeRefreshToken": {{ global_cfgobj.config.realmSettings.revokeRefreshToken }}, "refreshTokenMaxReuse": {{ global_cfgobj.config.realmSettings.refreshTokenMaxReuse }} } status_code: [204] - name: "Configure rememberMe options" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: | { "rememberMe": {{ global_cfgobj.config.realmSettings.rememberMe }}, "ssoSessionIdleTimeoutRememberMe": {{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeoutRememberMe }}, "ssoSessionMaxLifespanRememberMe": {{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespanRememberMe }} } status_code: [204] - name: "Enable login with email" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: | { "loginWithEmailAllowed": true, "duplicateEmailsAllowed": false } status_code: [204] - name: "Enable 'save events' required for Keycloak Extensions Brute Force Protection" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: | { "eventsEnabled": true } status_code: [204] - name: "Explicitly set HTTP headers" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: | { "browserSecurityHeaders": { "contentSecurityPolicyReportOnly": "", "xContentTypeOptions": "nosniff", "referrerPolicy": "no-referrer", "xRobotsTag": "noindex", "xFrameOptions": "SAMEORIGIN", "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self' {{ global_portal_url }} ; object-src 'none';", "xXSSProtection": "1; mode=block", "strictTransportSecurity": "max-age=31536000; includeSubDomains" } } status_code: [204] ... configure_set_2fa_groups.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Get 2FA role" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/roles" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "rolesqueryresult" - name: "Set role id for 2FA role" ansible.builtin.set_fact: two_factor_role_id: "{{ rolesqueryresult['json'] | json_query('[?name==`'+two_factor_role_name+'`].id') | first }}" - name: "Creating 2FA groups in loop" ansible.builtin.include_tasks: "configure_create_groups_loop.yml" loop: "{{ two_factor_additional_groups }}" loop_control: loop_var: "loop_group_name" - name: "Adding mapping groups to 2FA role in loop" ansible.builtin.include_tasks: "configure_set_2fa_groups_loop.yml" loop: "{{ two_factor_additional_groups }}" loop_control: loop_var: "loop_group_name" ... configure_set_2fa_groups_loop.yml: | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Get groups" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "groupsqueryresult" - name: "Set group id for group {{ loop_group_name }} that should be 2FA enabled" ansible.builtin.set_fact: loop_group_id: "{{ groupsqueryresult['json'] | json_query('[?name==`'+loop_group_name+'`].id') | first }}" - name: "Add mapping for group {{ loop_group_name }} / {{ loop_group_id }} to 2FA role {{ two_factor_role_name }} / {{ two_factor_role_id }}" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ loop_group_id }}/role-mappings/realm" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" body_format: "json" method: "POST" body: | [ { "id": "{{ two_factor_role_id }}", "containerId": "{{ global_opendesk_realm }}", "clientRole": false, "composite": false, "name": "{{ two_factor_role_name }}" } ] status_code: [204, 409] ... configure_sso_federation.yml: |+ # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- # We always create the flow, even if SSO federation is not active, as we do not reference it # anywhere else, it does not hurt. - name: "Create 'sso-federation-flow' object" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: alias: "sso-federation-flow" description: "openDesk authentication flow for SSO federation" providerId: "basic-flow" topLevel: true builtIn: false status_code: [201,409] register: "create_flow_response" - name: "Configuring 'sso-federation-flow': Setting exeuction steps to 'REQUIRED'" when: "create_flow_response.status == 201" ansible.builtin.include_tasks: "configure_sso_federation_authexecution.yml" - name: "Creating upstream IdP object" ansible.builtin.include_tasks: "configure_sso_federation_upstreamidp.yml" - name: "Handle upstream SSO enforcement option" ansible.builtin.include_tasks: "configure_sso_federation_handleenforcement.yml" ... configure_sso_federation_authexecution.yml: | # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Add execution step 'detect-existing-broker-user' to 'sso-federation-flow'" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: provider: "idp-detect-existing-broker-user" status_code: [201] - name: "Add execution step 'set-existing-user-authenticated' to 'sso-federation-flow'" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: provider: "idp-auto-link" status_code: [201] - name: "Get details the previously added execution steps" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "executions_list" - name: "Verify there are just two executions (otherwise somebody manually tampered with it or the bootstrapping is buggy)." assert: that: - "executions_list.json | length == 2" fail_msg: "Found more than two executions in 'sso-federation-flow'." - name: "Setting execution steps to 'REQUIRED'" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: id: "{{ item.id }}" requirement: "REQUIRED" description: "openDesk authentication flow for SSO federation" status_code: [204] loop: "{{ executions_list.json }}" ... configure_sso_federation_handleenforcement.yml: | # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Get details for '2fa-browser' execution steps" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/2fa-browser/executions" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "GET" status_code: [200] register: "executions_list" - name: "Get the ID of the element that has 'providerId' set to 'identity-provider-redirector'" set_fact: redirector_execution_id: >- {{ executions_list.json | selectattr('providerId', 'defined') | selectattr('providerId', 'equalto', 'identity-provider-redirector') | map(attribute='id') | list | first }} - name: "Enforcing SSO federated login" when: "global_cfgobj.config.ssoFederation.enabled and global_cfgobj.config.ssoFederation.enforceFederatedLogin" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/executions/{{ redirector_execution_id }}/config" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: alias: sso-federation-idp config: defaultProvider: sso-federation-idp status_code: [201] - name: "Get the ID of a possible configuration of of the element where 'providerId' is 'identity-provider-redirector'" when: >- executions_list.json | selectattr('providerId', 'defined') | selectattr('providerId', 'equalto', 'identity-provider-redirector') | selectattr('authenticationConfig', 'defined') | list | length > 0 set_fact: redirector_execution_authentication_config_id: >- {{ executions_list.json | selectattr('providerId', 'defined') | selectattr('providerId', 'equalto', 'identity-provider-redirector') | map(attribute='authenticationConfig') | list | first }} - name: "Delete the authentication config that enforces the SSO federated login" when: >- ( not global_cfgobj.config.ssoFederation.enforceFederatedLogin or not global_cfgobj.config.ssoFederation.enabled ) and redirector_execution_authentication_config_id is defined ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/config/{{ redirector_execution_authentication_config_id }}" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "DELETE" status_code: [204] ... configure_sso_federation_upstreamidp.yml: | # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- - name: "Merge explicit values into IdP config" when: "global_cfgobj.config.ssoFederation.enabled" set_fact: upstream_idp_config: >- {{ global_cfgobj.config.ssoFederation.idpDetails | combine({ 'displayName': global_cfgobj.config.ssoFederation.name }, recursive=True) | combine({ 'alias': 'sso-federation-idp' }, recursive=True) | combine({ 'firstBrokerLoginFlowAlias': 'sso-federation-flow' }, recursive=True) }} - name: "Create 'sso-federation-idp' object" when: "global_cfgobj.config.ssoFederation.enabled" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "POST" body_format: "json" body: "{{ upstream_idp_config }}" status_code: [201,409] register: "create_idp_response" - name: "Update IdP in case it already exists" when: "global_cfgobj.config.ssoFederation.enabled and create_idp_response.status == 409" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "PUT" body_format: "json" body: "{{ upstream_idp_config }}" status_code: [204] - name: "Delete IdP (but do not fail if it fails, as it might not even exist)" when: "not global_cfgobj.config.ssoFederation.enabled" ansible.builtin.uri: url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp" headers: Accept: "application/json" Authorization: "Bearer {{ global_accesstoken }}" method: "DELETE" status_code: [204,404] ... main.yml: | # SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - hosts: "localhost" tasks: - ansible.builtin.include_tasks: "./set_global_facts.yml" - name: "Debug output" ansible.builtin.debug: var: "global_cfgobj" when: "global_cfgobj.config.debug.enabled|bool" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - ansible.builtin.include_tasks: "./configure_realmsettings.yml" # In the following case we request the access token on every loop, not upfront, # so no need to request it here in the `main.yml` - ansible.builtin.include_tasks: "./configure_client_access_restriction.yml" # To get the access token the Keycloak must be up and running, # we do some loops in order to wait for the service in # `set_global_accesstoken.yml` - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - ansible.builtin.include_tasks: "./configure_sso_federation.yml" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - ansible.builtin.include_tasks: "./configure_set_2fa_groups.yml" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" - ansible.builtin.include_tasks: "./configure_create_groups.yml" - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" # To configure the client permissions we require the Intercom Service # deployment to be completed as it creates the related OIDC client # that is required for the client permission setup. - ansible.builtin.include_tasks: "./configure_clientpermissions.yml" ... set_global_accesstoken.yml: | # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - name: "get authentication token" ansible.builtin.uri: url: "{{ global_keycloak_url }}/realms/master/protocol/openid-connect/token" method: "POST" body_format: "form-urlencoded" body: client_id: "admin-cli" username: "{{ global_admin_username }}" password: "{{ global_admin_password }}" grant_type: "password" register: "access_token_response" # Keycloak is required to be up and running, so we allow some retries until: "access_token_response.status == 200" retries: 30 delay: 10 - name: "Set fact global_accesstoken" ansible.builtin.set_fact: global_accesstoken: "{{ access_token_response['json']['access_token'] }}" ... set_global_facts.yml: | # SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 --- - name: "Global: Read and parse config.yaml" ansible.builtin.set_fact: global_cfgobj: "{{ lookup('file', '/app/values.yaml') | from_yaml }}" global_admin: "{{ lookup ('file', '/app/admin.yaml') | from_yaml }}" - name: "Global: Set variables" ansible.builtin.set_fact: global_admin_username: "{{ global_admin.username }}" global_admin_password: "{{ global_admin.password }}" global_keycloak_host: "{{ global_cfgobj.global.hosts.keycloak }}.{{ global_cfgobj.global.domain }}" global_portal_url: "https://{{ global_cfgobj.global.hosts.portal }}.{{ global_cfgobj.global.domain }}" global_intercom_url: "https://{{ global_cfgobj.global.hosts.intercomService }}.{{ global_cfgobj.global.domain }}" global_opendesk_realm: "{{ global_cfgobj.config.keycloak.realm }}" precreate_groups: "{{ global_cfgobj.config.precreateGroups | default([]) }}" two_factor_role_name: "{{ global_cfgobj.config.twoFactorSettings.roleName }}" two_factor_additional_groups: "{{ global_cfgobj.config.twoFactorSettings.additionalGroups | default([]) }}" client_access_restriction_details: "{{ global_cfgobj.config.clientAccessRestrictions | default({}) }}" - name: "Global: Set Keycloak URL for external connection" ansible.builtin.set_fact: global_keycloak_url: "https://{{ global_keycloak_host }}" when: "not global_cfgobj.config.keycloak.intraCluster.enabled" - name: "Global: Set Keycloak URL for internal connection" ansible.builtin.set_fact: global_keycloak_url: "{{ global_cfgobj.config.keycloak.intraCluster.internalBaseUrl }}" when: "global_cfgobj.config.keycloak.intraCluster.enabled" ... ... --- # Source: opendesk-keycloak-bootstrap/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-keycloak-bootstrap-bootstrap-1" labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation spec: ttlSecondsAfterFinished: 60 template: metadata: annotations: checksum/configmap: b2372a40503669fd5a20e3ac665ac30a1a578e34e7956cb489d20eb0d8684cd3 intents.otterize.com/service-name: ums-keycloak-bootstrap labels: app.kubernetes.io/name: opendesk-keycloak-bootstrap helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 app.kubernetes.io/instance: opendesk-keycloak-bootstrap app.kubernetes.io/managed-by: Helm spec: restartPolicy: "Never" securityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch serviceAccountName: opendesk-keycloak-bootstrap containers: - name: "opendesk-keycloak-bootstrap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap:1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7" imagePullPolicy: IfNotPresent command: - "/app/entrypoint.sh" volumeMounts: - mountPath: "/app/values.yaml" name: "secrets-volume" subPath: "values.yaml" - mountPath: "/app/admin.yaml" name: "admin-creds" subPath: "admin.yaml" - mountPath: "/app/ansible" name: "ansible-directory-volume" - mountPath: "/tmp" name: "temp-dir" resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi env: - name: "OPENDESK_KEYCLOAK_BOOTSTRAP_TEMP_DIR" value: "/tmp" - name: "OPENDESK_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START" value: "0" volumes: - name: "secrets-volume" secret: secretName: "opendesk-keycloak-bootstrap" - name: "admin-creds" secret: secretName: "opendesk-keycloak-bootstrap-admin-creds" - name: "temp-dir" emptyDir: sizeLimit: "20Mi" - name: "ansible-directory-volume" configMap: name: "opendesk-keycloak-bootstrap-ansible" ... --- # Source: dovecot/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "dovecot" labels: app.kubernetes.io/name: dovecot helm.sh/chart: dovecot-2.0.0 app.kubernetes.io/instance: dovecot app.kubernetes.io/managed-by: Helm automountServiceAccountToken: true ... --- # Source: dovecot/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "dovecot" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: dovecot helm.sh/chart: dovecot-2.0.0 app.kubernetes.io/instance: dovecot app.kubernetes.io/managed-by: Helm stringData: password: "2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9" migrationMasterPassword: "1748a0b8a43268f79f9b5a1d27be603ca563702c" ldapPassword: "40290e376095d33c0c650723efa007abec1ee3fd" oidcClientID: "opendesk-dovecot" oidcClientSecret: "b4b4e59939b23669b1287c722376441b0bdcddfa" ... --- # Source: dovecot/templates/configmap-virtual.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "dovecot-virtual" labels: app.kubernetes.io/name: dovecot helm.sh/chart: dovecot-2.0.0 app.kubernetes.io/instance: dovecot app.kubernetes.io/managed-by: Helm data: dovecot-virtual: | * -INBOX/Trash -INBOX/Trash/* -INBOX/Spam -INBOX/Spam/* ... --- # Source: dovecot/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "dovecot" labels: app.kubernetes.io/name: dovecot helm.sh/chart: dovecot-2.0.0 app.kubernetes.io/instance: dovecot app.kubernetes.io/managed-by: Helm data: dovecot.conf: | auth_master_user_separator = * auth_mechanisms = xoauth2 oauthbearer plain login auth_realms = souvap auth_verbose = no first_valid_uid = 1000 listen = * mail_location = mdbox:~/mdbox mail_plugins = acl notify push_notification welcome zlib quota virtual mail_uid=vmail mail_gid=vmail login_trusted_networks = 10.0.0.0/8 doveadm_password = ${DC_PASSWORD} managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext mbox_write_locks = fcntl recipient_delimiter = + # Search inside attachments # https://documentation.open-xchange.com/latest/middleware/mail/dovecot/attachment_marker.html # https://doc.dovecot.org/settings/core/#core_setting-mail_attachment_detection_options mail_attachment_detection_options = add-flags # Submission settings submission_ssl = "no" submission_host = "postfix.yschmidt-opendesk-argo.svc.cluster.local:25" namespace { # FIXME namespaces auslagern? list = children location = mdbox:%%h/mdbox:INDEXPVT=%h/shared/%%u prefix = Freigaben/%%n/ separator = / subscriptions = yes type = shared } namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } # Primary accounts with OAuth2 passdb { driver = oauth2 args = /etc/dovecot/oauth2-primary.conf.ext mechanisms = xoauth2 oauthbearer # Primary accounts from OX have at least one @ in the login name username_filter = *@* # If successful, do not bother with secondary accounts result_success = return-ok result_failure = return-fail result_internalfail = return-fail } # Primary accounts with password use LDAP auth bind passdb { driver = ldap args = /etc/dovecot/ldap-primary.conf.ext mechanisms = plain login # Primary accounts from external clients have at most one @ in the login name username_filter = !*@*@* # If successful, do not bother with secondary accounts result_success = return-ok result_failure = return-fail result_internalfail = return-fail } # OAuth2 authentication # Step 1: authenticate and extract user's UUID from the token passdb { driver = oauth2 args = /etc/dovecot/oauth2-secondary.conf.ext mechanisms = xoauth2 oauthbearer # If authentication successful, continue with fetching user's DN result_success = continue-ok result_failure = return-fail result_internalfail = return-fail } # Step 2: Retrieve user's DN passdb { driver = ldap args = /etc/dovecot/ldap-userdn.conf.ext mechanisms = xoauth2 oauthbearer # If DN was found, continue with authorization result_success = continue-ok result_failure = return-fail result_internalfail = return-fail } # Password authentication via LDAP auth bind passdb { driver = ldap args = /etc/dovecot/ldap-secondary.conf.ext mechanisms = plain login # If authentication successful, continue with authorization result_success = continue-ok result_failure = return-fail result_internalfail = return-fail } # Authorization for secondary accounts via LDAP passdb { driver = ldap args = /etc/dovecot/ldap-authz.conf.ext # After authorization we're done result_success = return-ok result_failure = return-fail result_internalfail = return-fail } # Fixme: Enabled but commented files don't exist on ox-gwb plugin { acl = vfile # acl_shared_dict = file:/data/usr/local/dovecot/db/shared-mailboxes.db sieve_before = /etc/dovecot/global-spam-script.sieve # sieve_default = /data/usr/local/dovecot/sieve/default_scripts # welcome_script = welcome %u } protocols = imap pop3 lmtp sieve service auth { inet_listener { port = 3659 } unix_listener auth-userdb { group = vmail mode = 0666 user = vmail } } service doveadm { inet_listener { port = 9000 } inet_listener http { port = 8080 } } service stats { inet_listener http { port = 9900 } } service imap-login { process_limit = 300 inet_listener imap { port = 143 } } service lmtp { inet_listener lmtp { port = 24 } } # Fixme: script does not exist on ox-gwb service welcome { executable = script /etc/devecot/welcome.sh unix_listener welcome { user = vmail } user = vmail } service managesieve-login { inet_listener sieve { port = 4190 } } # SSL / TLS ssl=yes disable_plaintext_auth = no ssl_cert= "/etc/dovecot/dovecot.conf" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/global-spam-script.sieve" > "/etc/dovecot/global-spam-script.sieve" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-authz.conf.ext" > "/etc/dovecot/ldap-authz.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-primary.conf.ext" > "/etc/dovecot/ldap-primary.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-secondary.conf.ext" > "/etc/dovecot/ldap-secondary.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-userdn.conf.ext" > "/etc/dovecot/ldap-userdn.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/migration-masterpsw.conf.ext" > "/etc/dovecot/migration-masterpsw.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-primary.conf.ext" > "/etc/dovecot/oauth2-primary.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-secondary.conf.ext" > "/etc/dovecot/oauth2-secondary.conf.ext" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/quota-warning.sh" > "/etc/dovecot/quota-warning.sh" envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/welcome.sh" > "/etc/dovecot/welcome.sh" chmod a+x /etc/dovecot/*.sh env: - name: "DC_PASSWORD" valueFrom: secretKeyRef: name: "dovecot" key: password - name: "DC_MIGRATION_MASTER_PASSWORD" valueFrom: secretKeyRef: name: "dovecot" key: migrationMasterPassword - name: "DC_LDAP_PASSWORD" valueFrom: secretKeyRef: name: "dovecot" key: ldapPassword - name: "DC_OIDC_CLIENT_ID" valueFrom: secretKeyRef: name: "dovecot" key: oidcClientID - name: "DC_OIDC_CLIENT_SECRET" valueFrom: secretKeyRef: name: "dovecot" key: oidcClientSecret resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "config-template" mountPath: "/etc/dovecot.template" - name: "config" mountPath: "/etc/dovecot" containers: - name: dovecot securityContext: allowPrivilegeEscalation: false capabilities: add: - CHOWN - DAC_OVERRIDE - KILL - NET_BIND_SERVICE - SETGID - SETUID - SYS_CHROOT drop: - ALL readOnlyRootFilesystem: true seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector:2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc" imagePullPolicy: IfNotPresent env: ports: - name: auth containerPort: 3659 protocol: - name: doveadm containerPort: 9000 protocol: - name: doveadm2 containerPort: 9200 protocol: - name: doveadmhttp containerPort: 8080 protocol: - name: imap containerPort: 143 protocol: - name: imaps containerPort: 993 protocol: - name: lmpt containerPort: 24 protocol: - name: managasieve containerPort: 4190 protocol: - name: openmetrics containerPort: 9900 protocol: - name: pop3 containerPort: 110 protocol: - name: pop3s containerPort: 995 protocol: livenessProbe: tcpSocket: port: "imap" initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: tcpSocket: port: "imap" initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "config" mountPath: "/etc/dovecot" - name: "config-virtual-volume" mountPath: "/etc/dovecot/virtual/All" - name: "tls-volume" mountPath: "/etc/tls" - name: "srv-mail" mountPath: "/srv/mail" - name: "run-dovecot" mountPath: "/run/dovecot" - name: "var-lib-dovecot" mountPath: "/var/lib/dovecot" ... --- # Source: postfix/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: postfix-ox labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm automountServiceAccountToken: true ... --- # Source: postfix/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "postfix-ox" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm stringData: username: "" password: "" ... --- # Source: postfix/templates/configmap-overrides.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-ox-overrides" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: sasl_passwd.map: | : ... --- # Source: postfix/templates/configmap-scripts.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-ox-scripts" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: init-postfix.sh: | #!/bin/bash function initPostfix { cp /etc/postfix/master.cf.template /etc/postfix/master.cf cp /etc/postfix/main.cf.template /etc/postfix/main.cf chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix chown postfix /var/lib/postfix if [ -f /overrides/postfix.cf ]; then while read line; do [[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}" done < /overrides/postfix.cf echo "Loaded '/overrides/postfix.cf'" else echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided." fi # Include table-map files if ls -A /overrides/*.map 1> /dev/null 2>&1; then cp /overrides/*.map /etc/postfix/ postmap /etc/postfix/*.map rm /etc/postfix/*.map chown root:root /etc/postfix/*.lmdb chmod 0600 /etc/postfix/*.lmdb echo "Loaded 'map files'" else echo "No extra map files loaded because optional '/overrides/*.map' not provided." fi cp -a /etc/postfix/* /etc/postfix-copy/ echo "Init done" } initPostfix >> /proc/1/fd/1 start-postfix.sh: | #!/bin/bash function startPostfix { /usr/sbin/postfix start-fg } startPostfix &>> /proc/1/fd/1 namespace-watcher.sh: | #!/bin/bash DELAY=${DELAY:-10} DOMAIN=${DOMAIN:-"develop.souvap-univention.de"} INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"} KUBECTL_BIN="/usr/bin/env kubectl" MAILSERVER=${MAILSERVER:-"dovecot"} MAILSERVER_PORT=${MAILSERVER_PORT:-"24"} MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"} NAMESPACE=${NAMESPACE:-"default"} SERVICE_NAME=${SERVICE_NAME:-"dovecot"} TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"} VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"} WORKDIR=${WORKDIR:-"/namespace-watcher"} touch "${WORKDIR}/virtual_mailbox_domains.txt" touch "${WORKDIR}/transport.map" update-postfix() { echo "updating Postfix ..." cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt" cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map" ${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload" } while true; do # Get all namespaces containting a service called dovecot namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) ) rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp" rm -f "${WORKDIR}/transport.map.tmp" for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do # Get all mail domains from annotation IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' ) # Add default namespace domain domains+=("${ns}.${DOMAIN}") for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp" echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp" done done cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix sleep ${DELAY} echo "👀" done ... --- # Source: postfix/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "postfix-ox-config" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" data: master.cf: | # service type private unpriv chroot wakeup maxproc command + args smtp inet n - n - 200 smtpd -o smtpd_client_connection_count_limit=15 -o smtpd_client_restrictions= -o smtpd_proxy_options=speed_adjust -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject_unauth_destination -o smtpd_sender_restrictions= submission inet n - n - - smtpd -o smtpd_client_connection_count_limit=15 -o smtpd_proxy_options=speed_adjust -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o smtpd_reject_unlisted_recipient=no -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=encrypt -o syslog_name=postfix/submission pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd lmtps unix - - n - - lmtp -o lmtp_send_xforward_command=yes -o lmtp_tls_ciphers=high -o lmtp_tls_mandatory_ciphers=high -o lmtp_tls_mandatory_protocols=>=TLSv1.2 -o lmtp_tls_note_starttls_offer=yes -o lmtp_tls_protocols=>=TLSv1.2 -o lmtp_tls_security_level=encrypt main.cf: | compatibility_level=3.6 mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de myhostname = postfix myorigin = $mydomain inet_protocols = ipv4 # Message size limit message_size_limit = 50000000 # Relayed networks mynetworks = 127.0.0.1/32 [::1]/128 # Empty alias list to override the configuration variable and disable NIS alias_maps = # Only accept virtual emails mydestination = $myhostname, localhost.$mydomain, localhost # What mechanisms the Postfix lmtp/smtp client uses to look up a host's IP address lmtp_host_lookup = native smtp_host_lookup = native recipient_delimiter = + # Relayhost if any is configured relayhost = content_filter = smtp_sasl_auth_enable = yes smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd.map smtp_sasl_security_options = smtp_tls_CAfile = smtp_tls_mandatory_protocols = >=TLSv1.2 smtp_tls_security_level = encrypt smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de virtual_transport = lmtps:dovecot:24 transport_maps = ############### # Restrictions ############### # Delay all rejects until all information can be logged smtpd_delay_reject = yes # Allowed senders are: the user or one of the alias destinations smtpd_sender_login_maps = $virtual_alias_maps # Helo restrictions are specified for smtp only in master.cf smtpd_helo_required = yes # Sender restrictions smtpd_sender_restrictions = permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unlisted_sender, reject_sender_login_mismatch, permit # Recipient restrictions: smtpd_recipient_restrictions = reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, permit_sasl_authenticated, permit # Relay restrictions smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_path = inet:dovecot:3659 smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_cert_file = /etc/tls/tls.crt smtpd_tls_key_file = /etc/tls/tls.key smtpd_tls_mandatory_protocols = >=TLSv1.2 smtpd_tls_security_level = encrypt smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache smtpd_milters = inet:clamav-simple:7357 milter_default_action = tempfail ############### # Extra Settings ############### maillog_file = /dev/stdout smtpd.conf: | pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM sasldb_path: /etc/postfix/sasldb ... --- # Source: postfix/templates/persistentvolumeclaim.yaml apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "postfix-ox" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: postfix/templates/service-external.yaml apiVersion: "v1" kind: "Service" metadata: name: "postfix-ox-external" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" annotations: "helm.sh/resource-policy": "keep" spec: type: "LoadBalancer" externalTrafficPolicy: "Cluster" internalTrafficPolicy: "Cluster" ports: - port: 25 targetPort: 25 protocol: "TCP" name: "smtp" - port: 587 targetPort: 587 protocol: "TCP" name: "smtps" selector: app.kubernetes.io/name: postfix app.kubernetes.io/instance: postfix-ox ... --- # Source: postfix/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "postfix-ox" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" spec: type: "ClusterIP" ports: - port: 25 targetPort: 25 protocol: "TCP" name: "smtp" - port: 587 targetPort: 587 protocol: "TCP" name: "smtps" selector: app.kubernetes.io/name: postfix app.kubernetes.io/instance: postfix-ox ... --- # Source: postfix/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "postfix-ox" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "postfix" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: postfix app.kubernetes.io/instance: postfix-ox strategy: type: Recreate template: metadata: annotations: checksum/configmap: 41de5e81fa3d031735a8bafaaa4f71addb27f60fea82757bbe87ca3e1067841b checksum/configmapoverrides: 58a173189b67d5c2a841e2ba8d602e4fb6d70ffd239bd848b52c3cf03cc98f40 checksum/configmapnamespacewatcherbin: 0acbd8ef08e9799e69bbd9ea562bc7bc253aea187a6e8491ca74f651406464d4 labels: app.kubernetes.io/name: postfix helm.sh/chart: postfix-3.0.1 app.kubernetes.io/instance: postfix-ox app.kubernetes.io/managed-by: Helm spec: imagePullSecrets: securityContext: fsGroup: 101 serviceAccountName: postfix-ox volumes: - name: "postfix-scripts" configMap: name: "postfix-ox-scripts" defaultMode: 0777 - name: "config-templates" configMap: name: "postfix-ox-config" - name: "config-master" configMap: name: "postfix-ox-config" items: - key: "master.cf" path: "master.cf" - name: "config-main" configMap: name: "postfix-ox-config" items: - key: "main.cf" path: "main.cf" - name: "config" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "lib-postfix" emptyDir: sizeLimit: "100Mi" medium: "Memory" - name: "tls" secret: secretName: "opendesk-certificates-tls" - name: "spool-postfix" persistentVolumeClaim: claimName: "postfix-ox" - name: "overrides" configMap: name: "postfix-ox-overrides" initContainers: - name: "init-postfix" image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" imagePullPolicy: "IfNotPresent" command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"] resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi volumeMounts: - name: "config" mountPath: "/etc/postfix-copy" - name: "config-templates" mountPath: "/etc/postfix/master.cf.template" subPath: "master.cf" - name: "config-templates" mountPath: "/etc/postfix/main.cf.template" subPath: "main.cf" - name: "lib-postfix" mountPath: "/var/lib/postfix" - name: "postfix-scripts" mountPath: "/usr/local/bin/init-postfix.sh" subPath: "init-postfix.sh" - name: "tls" mountPath: "/etc/tls" - name: "spool-postfix" mountPath: "/var/spool/postfix" - name: "overrides" mountPath: "/overrides" containers: - name: "postfix" securityContext: allowPrivilegeEscalation: true capabilities: {} privileged: true readOnlyRootFilesystem: true runAsGroup: 0 runAsNonRoot: false runAsUser: 0 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" imagePullPolicy: "IfNotPresent" command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"] env: ports: - name: smtp containerPort: 25 protocol: "TCP" - name: smtps containerPort: 587 protocol: "TCP" readinessProbe: tcpSocket: port: 25 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 livenessProbe: tcpSocket: port: 25 initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi volumeMounts: - name: "config" mountPath: "/etc/postfix" readOnly: true - name: "postfix-scripts" mountPath: "/usr/local/bin/start-postfix.sh" subPath: "start-postfix.sh" - name: "lib-postfix" mountPath: "/var/lib/postfix" - name: "tls" mountPath: "/etc/tls" - name: "spool-postfix" mountPath: "/var/spool/postfix" ... --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: open-xchange-core-mw namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 --- # Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/envvars.yaml apiVersion: v1 kind: Secret metadata: name: open-xchange-core-imageconverter-envvars namespace: yschmidt-opendesk-argo annotations: helm.sh/resource-policy: "keep" labels: helm.sh/chart: core-imageconverter-2.34.1 type: Opaque data: MASTER_ADMIN_USER: "YWRtaW4=" MASTER_ADMIN_PW: "ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg==" OX_BASIC_AUTH_LOGIN: "b3hsb2dpbg==" OX_BASIC_AUTH_PASSWORD: "MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA==" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # contextsets-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-contextsets-secret data: context-sets-secret-overrides.yaml: e30= --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # etc-secrets-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-etc-secrets-secret data: oxguardpass: TUNZakptTW1ZM1pqVmxaVEZoT0dFell6WTRaREE9ClJDWVRobE16WXdNbU5sTVRNM01EQTNOak0zWTJRPQo= --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # mysql-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-mysql labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 type: Opaque stringData: MYSQL_WRITE_HOST: mariadb MYSQL_WRITE_PORT: "3306" MYSQL_WRITE_DATABASE: configdb MYSQL_WRITE_USER: root MYSQL_WRITE_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 MYSQL_READ_HOST: mariadb MYSQL_READ_PORT: "3306" MYSQL_READ_DATABASE: configdb MYSQL_READ_USER: root MYSQL_READ_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 MYSQL_HOST: mariadb MYSQL_PORT: "3306" MYSQL_DATABASE: configdb MYSQL_USER: root MYSQL_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # properties-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-properties-secret data: 1000_secret-overrides.yaml: Cgphbnl3aGVyZTogCiAgY29tLm9wZW5leGNoYW5nZS5jb25mZXJlbmNlLmVsZW1lbnQuYXV0aFRva2VuOiA1ZGJhYTgyZWRhODViYjI1Zjc5NjMwNjNiMzI3NTU1ZTNmM2E4MjFkCiAgY29tLm9wZW5leGNoYW5nZS5jb29raWUuaGFzaC5zYWx0OiA2ZGE0N2NmN2MzMTlkMzk4YWU0YzNhNDgyM2Q1NGQ2MDI0ZTM2ZmQwCiAgY29tLm9wZW5leGNoYW5nZS5zZXNzaW9uZC5lbmNyeXB0aW9uS2V5OiA0M2EwMmIyMzFjYzc1MTVkMTQ3NzI5MDExZTU1ZDMzZGJiN2ExMGZmCiAgY29tLm9wZW5leGNoYW5nZS5zaGFyZS5jcnlwdEtleTogOTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQogIAo= --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # secret-envvars apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-secret-envvars namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 type: Opaque data: CREDSTORAGE_PASSCRYPT: aWx5YUhPRmY1dmVEY0hvdktjTXc4aFVpZ1BSTkxBdVQ= MASTER_ADMIN_USER: YWRtaW4= MASTER_ADMIN_PW: ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg== OX_BASIC_AUTH_LOGIN: b3hsb2dpbg== OX_BASIC_AUTH_PASSWORD: MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA== JOLOKIA_LOGIN: am9sb2tpYQ== JOLOKIA_PASSWORD: MjIwMWViZGM1M2EzMjI1NGE4NzdlNTA1NWRjZjBjZjQwMjYzMDI5NA== --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # ui-settings-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-ui-settings-secret data: 2000_secret-ui-overrides.yaml: Cgovb3B0L29wZW4teGNoYW5nZS9ldGMvc2V0dGluZ3Mvb3ZlcnJpZGVzLnByb3BlcnRpZXM6IAogIHt9Cgo= --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # yaml-secrets-secret apiVersion: v1 kind: Secret metadata: name: open-xchange-core-mw-yaml-secrets-secret data: ldap-client-config.yml: Y29udGFjdHNMZGFwQ2xpZW50OgogIGF1dGg6CiAgICBhZG1pbkROOgogICAgICBkbjogdWlkPWxkYXBzZWFyY2hfb3gsY249dXNlcnMsZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwKICAgICAgcGFzc3dvcmQ6IDU3MzU2YmY5MmU0NzUxNjRhOGM0NTIyZGZkODQ1M2JiMTYyMDk0ZDQKICAgIHR5cGU6IGFkbWluRE4KICBwb29sOgogICAgaG9zdDoKICAgICAgYWRkcmVzczogdW1zLWxkYXAtc2VydmVyCiAgICAgIHBvcnQ6IDM4OQogICAgdHlwZTogc2ltcGxl --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/redis-secret.yaml apiVersion: v1 kind: Secret metadata: name: open-xchange-core-ui-middleware-redis type: Opaque data: username: "ZGVmYXVsdA==" password: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ==" --- # Source: appsuite-public-sector/charts/appsuite/templates/common-env-secret.yaml apiVersion: v1 kind: Secret metadata: name: open-xchange-common-env namespace: yschmidt-opendesk-argo annotations: helm.sh/resource-policy: "keep" labels: helm.sh/chart: appsuite-8.35.284 data: COOKIE_HASH_SALT: NmRhNDdjZjdjMzE5ZDM5OGFlNGMzYTQ4MjNkNTRkNjAyNGUzNmZkMA== SHARE_CRYPT_KEY: OTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQ== SESSIOND_ENCRYPTION_KEY: NDNhMDJiMjMxY2M3NTE1ZDE0NzcyOTAxMWU1NWQzM2RiYjdhMTBmZg== --- # Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-documentconverter-dc-configmap data: logback.xml: | false yyyy-MM-dd'T'HH:mm:ss.SSSZ Etc/UTC false false true 2048 0 true /var/log/open-xchange/documentconverter/documentconverter.log /var/log/open-xchange/documentconverter/documentconverter.log.%d{yyyy-MM-dd}.%i 2MB 5 %-4r [%t] %5p %c{1} - %m %mdc %n 2048 0 true documentconverter.properties: | com.openexchange.documentconverter.cacheDir=/var/spool/open-xchange/documentconverter/cache com.openexchange.documentconverter.scratchDir=/var/spool/open-xchange/documentconverter/scratch com.openexchange.documentconverter.useCool=false com.openexchange.documentconverter.coolUrl=http://open-xchange-collabora-online.yschmidt-opendesk-argo.svc.cluster.local:9980 com.openexchange.documentconverter.jobProcessorCount=3 com.openexchange.documentconverter.jobExecutionTimeoutMilliseconds=60000 com.openexchange.documentconverter.jobQueueCountLimitHigh=40 com.openexchange.documentconverter.jobQueueCountLimitLow=30 com.openexchange.documentconverter.jobQueueTimeoutSeconds=300 com.openexchange.documentconverter.jobAsyncQueueCountLimitHigh=2048 com.openexchange.documentconverter.maxCacheEntries=4000000 com.openexchange.documentconverter.maxCacheSizeMB=-1 com.openexchange.documentconverter.cacheEntryTimeoutSeconds=2592000 com.openexchange.documentconverter.minFreeVolumeSizeMB=1024 com.openexchange.documentconverter.cacheCleanupPeriodSeconds=300 com.openexchange.documentconverter.probe.liveness.periodSeconds=10 com.openexchange.documentconverter.probe.readiness.periodSeconds=5 com.openexchange.documentconverter.probe.readiness.downAfterUsedServiceUnavailabilitySeconds=300 com.openexchange.documentconverter.probe.liveness.downAfterReadinessDownSeconds=15 com.openexchange.documentconverter.probe.readiness.upRecoveryPeriodSeconds=20 readerengine.blacklist: | .* readerengine.whitelist: | file:///opt/readerengine/share/gallery/.* --- # Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-imageconverter-ic-configmap data: configdb.properties: | readDriverClass=com.mysql.cj.jdbc.Driver readUrl=jdbc:mysql://mariadb:3306/configdb readProperty.1=user=root readProperty.2=password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 writeDriverClass=com.mysql.cj.jdbc.Driver writeUrl=jdbc:mysql://mariadb:3306/configdb writeProperty.1=user=root writeProperty.2=password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 cleanerInterval=10000 maxIdle=-1 maxIdleTime=60000 maxActive=100 maxWait=10000 maxLifeTime=600000 exhaustedAction=BLOCK testOnActivate=false testOnDeactivate=true testOnIdle=false testThreads=false com.openexchange.database.replicationMonitor=true com.openexchange.database.checkWriteCons=false logback.xml: | false yyyy-MM-dd'T'HH:mm:ss.SSSZ Etc/UTC false false true 2048 0 true /var/log/open-xchange/imageconverter/imageconverter.log.0 /var/log/open-xchange/imageconverter/imageconverter.log.%i 1 5 2MB %date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ"} %-5level [%thread] %class.%method\(%class{0}.java:%line\)%n%sanitisedMessage%n%lmdc%exception{full} 2048 0 true icconfig.properties: | SERVER_NAME=server com.openexchange.cookie.hash.salt={{ COOKIE_HASH_SALT }} com.openexchange.sessiond.encryptionKey={{ SESSIOND_ENCRYPTION_KEY }} com.openexchange.share.cryptKey={{ SHARE_CRYPT_KEY }} com.openexchange.rest.services.basic-auth.login={{ OX_BASIC_AUTH_LOGIN }} com.openexchange.rest.services.basic-auth.password={{ OX_BASIC_AUTH_PASSWORD }} com.openexchange.connector.networkListenerHost=0.0.0.0 com.openexchange.connector.networkListenerPort=8005 com.openexchange.connector.networkSslListenerPort=8014 com.openexchange.connector.livenessPort=8018 com.openexchange.rmi.port=1095 JMXPort=9995 com.openexchange.hazelcast.enabled=false com.openexchange.monitoring.memory.enabled=false com.openexchange.redis.hosts=redis-headless:6379 com.openexchange.redis.username=default com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e com.openexchange.redis.mode=standalone com.openexchange.redis.ssl=false com.openexchange.redis.cache.enabled=false com.openexchange.objectcache.database.host=mariadb com.openexchange.objectcache.database.port=3306 com.openexchange.objectcache.database.schema=configdb com.openexchange.objectcache.database.user=root com.openexchange.objectcache.database.password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 com.openexchange.objectcache.objectstore.s3.-1.endpoint=. com.openexchange.objectcache.objectstore.s3.-1.region=eu-central-1 com.openexchange.objectcache.objectstore.s3.-1.bucketName=objectcache com.openexchange.objectcache.objectstore.s3.-1.accessKey=. com.openexchange.objectcache.objectstore.s3.-1.secretKey=. com.openexchange.objectcache.objectStoreIds={{ OXENV_OBJECTSTOREID }}, s3:-1, com.openexchange.imageconverter.convertTimeoutMillis=20000 com.openexchange.imageconverter.queueLength=512 com.openexchange.imageconverter.asyncQueueLength=486 --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # as-config-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-as-config-configmap data: as-config.yml: | default: host: all oidcLogin: true oidcPath: /oidc productName: openDesk --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # contextsets-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-contextsets-configmap data: context-sets-overrides.yaml: | {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # etc-files-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-etc-files-configmap data: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # hook-before-apply-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-hook-before-apply-configmap data: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # hook-before-appsuite-start-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-hook-before-appsuite-start-configmap data: create-guard-dir.sh: | mkdir -p /opt/open-xchange/guard-files chown open-xchange:open-xchange /opt/open-xchange/guard-files --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # hook-start-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-hook-start-configmap data: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # meta-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-meta-configmap data: meta-overrides.yaml: | {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # properties-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-default-properties-configmap data: 998_properties.yaml: | anywhere: ENABLE_INTERNAL_USER_EDIT: "false" com.openexchange.IPCheck: "false" com.openexchange.UIWebPath: /appsuite/ com.openexchange.admin.bypassAccessCombinationChecks: "true" com.openexchange.authentication.oauth.clientId: opendesk-oxappsuite com.openexchange.authentication.oauth.clientSecret: ba9c972d28385e400bc71a5869b8219ec42afb45 com.openexchange.authentication.oauth.tokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token com.openexchange.capability.client-onboarding: "true" com.openexchange.capability.document_preview: "true" com.openexchange.capability.dynamic-theme: "true" com.openexchange.capability.filestorage_nextcloud: "true" com.openexchange.capability.filestorage_nextcloud_oauth: "true" com.openexchange.capability.guard: "true" com.openexchange.capability.guard-mail: "true" com.openexchange.capability.invite_guests: "false" com.openexchange.capability.mail_export_pdf: "true" com.openexchange.capability.public-sector: "true" com.openexchange.capability.public-sector-element: "true" com.openexchange.capability.public-sector-navigation: "true" com.openexchange.capability.share_links: "false" com.openexchange.capability.smime: "true" com.openexchange.conference.element.enabled: "true" com.openexchange.conference.element.matrixLoginUrl: http://opendesk-synapse-web:8008/_matrix/client/v3/login com.openexchange.conference.element.matrixUuidClaimName: opendesk_username com.openexchange.conference.element.meetingHostUrl: http://matrix-neodatefix-bot com.openexchange.connector.networkListenerHost: '*' com.openexchange.contacts.ldap.accounts: opendesk,other,functional com.openexchange.cookie.hash: remember com.openexchange.file.storage.nextcloud.oauth.url: http://opendesk-nextcloud-aio/ com.openexchange.file.storage.nextcloud.oauth.webdav.username.strategy: user com.openexchange.folderstorage.database.preferDisplayName: "false" com.openexchange.gdpr.dataexport.active: "false" com.openexchange.gdpr.dataexport.enabled: "false" com.openexchange.guard.guestSMTPMailFrom: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de com.openexchange.guard.guestSMTPPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f com.openexchange.guard.guestSMTPPort: "25" com.openexchange.guard.guestSMTPServer: postfix com.openexchange.guard.guestSMTPUsername: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de com.openexchange.guard.storage.file.fileStorageType: file com.openexchange.guard.storage.file.uploadDirectory: /opt/open-xchange/guard-files/ com.openexchange.guard.useStartTLS: "false" com.openexchange.imap.attachmentMarker.enabled: "true" com.openexchange.jolokia.start: "true" com.openexchange.mail.authType: xoauth2 com.openexchange.mail.exportpdf.collabora.enabled: "true" com.openexchange.mail.exportpdf.collabora.url: http://collabora:9980 com.openexchange.mail.exportpdf.gotenberg.enabled: "true" com.openexchange.mail.exportpdf.gotenberg.url: http://open-xchange-gotenberg:3000 com.openexchange.mail.exportpdf.pdfa.collabora.enabled: "true" com.openexchange.mail.filter.credentialSource: mail com.openexchange.mail.filter.loginType: global com.openexchange.mail.filter.preferredSaslMech: XOAUTH2 com.openexchange.mail.filter.server: dovecot com.openexchange.mail.loginSource: mail com.openexchange.mail.mailServer: dovecot com.openexchange.mail.mailServerSource: global com.openexchange.mail.secondary.authType: XOAUTH2 com.openexchange.mail.transport.authType: xoauth2 com.openexchange.mail.transport.secondary.authType: xoauth2 com.openexchange.mail.transportServer: postfix-ox com.openexchange.mail.transportServerSource: global com.openexchange.nextcloud.filepicker.includeAccessToken: "false" com.openexchange.oauth.provider.allowedIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk com.openexchange.oauth.provider.contextLookupClaim: context com.openexchange.oauth.provider.contextLookupNamePart: full com.openexchange.oauth.provider.enabled: "true" com.openexchange.oauth.provider.jwt.jwksUri: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs com.openexchange.oauth.provider.mode: expect_jwt com.openexchange.oauth.provider.userLookupClaim: opendesk_username com.openexchange.oauth.provider.userLookupNamePart: full com.openexchange.oidc.autologinCookieMode: ox_direct com.openexchange.oidc.backchannelLogoutEnabled: "true" com.openexchange.oidc.clientId: opendesk-oxappsuite com.openexchange.oidc.clientSecret: ba9c972d28385e400bc71a5869b8219ec42afb45 com.openexchange.oidc.contextLookupClaim: context com.openexchange.oidc.contextLookupNamePart: full com.openexchange.oidc.enabled: "true" com.openexchange.oidc.opAuthorizationEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth com.openexchange.oidc.opIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk com.openexchange.oidc.opJwkSetEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs com.openexchange.oidc.opLogoutEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout com.openexchange.oidc.opTokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token com.openexchange.oidc.rpRedirectURIAuth: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/api/oidc/auth com.openexchange.oidc.rpRedirectURILogout: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de com.openexchange.oidc.rpRedirectURIPostSSOLogout: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/api/oidc/logout com.openexchange.oidc.ssoLogout: "true" com.openexchange.oidc.startDefaultBackend: "true" com.openexchange.oidc.userLookupClaim: opendesk_username com.openexchange.oidc.userLookupNamePart: full com.openexchange.secret.secretSource: '" + ''@'' + + ''/'' + "' com.openexchange.showAdmin: "false" com.openexchange.smime.test: "true" com.openexchange.user.enforceUniqueDisplayName: "false" com.openexchange.usm.ox.url: http://localhost:8009/appsuite/api/ /opt/open-xchange/etc/AdminDaemon.properties: MASTER_ACCOUNT_OVERRIDE: "true" /opt/open-xchange/etc/AdminUser.properties: USERNAME_CHANGEABLE: "true" /opt/open-xchange/etc/antivirus.properties: com.openexchange.antivirus.enabled: "true" com.openexchange.antivirus.maxFileSize: "1024" com.openexchange.antivirus.port: "1344" com.openexchange.antivirus.server: clamav-simple /opt/open-xchange/etc/ldapauth.properties: bindDN: uid=ldapsearch_ox,cn=users,dc=swp-ldap,dc=internal bindDNPassword: 57356bf92e475164a8c4522dfd8453bb162094d4 bindOnly: "false" java.naming.provider.url: ldap://ums-ldap-server:389/dc=swp-ldap,dc=internal /opt/open-xchange/etc/system.properties: SERVER_NAME: oxserver --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # properties-lean-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-properties-lean-configmap namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 data: logback.xml: | false yyyy-MM-dd'T'HH:mm:ss.SSSZ Etc/UTC false false true 2048 0 true languages.properties: |- io.ox/appsuite/languages/de_DE=Deutsch io.ox/appsuite/languages/en_US=English (US) io.ox/appsuite/languages/es_ES=Español io.ox/appsuite/languages/fr_FR=Français io.ox/appsuite/languages/it_IT=Italiano properties-lean-config.properties: |- ### This file was generated by Helm (core-mw) # config/redis.properties com.openexchange.redis.hosts=redis-headless:6379 com.openexchange.redis.username=default com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e com.openexchange.redis.mode=standalone com.openexchange.redis.ssl=false com.openexchange.redis.cache.enabled=false --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # properties-overwrite-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-default-properties-overwrite-configmap data: 999_properties_overwrite.yaml: | anywhere: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # ui-settings-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-ui-settings-configmap data: 1999_ui-overrides.yaml: | /opt/open-xchange/etc/settings/overrides.properties: io.ox.nextcloud//server: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/fs/ io.ox.public-sector//ics/url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ io.ox.public-sector//navigation/oxtabname: tab_groupware io.ox/core//apps/quickLaunchCount: "0" io.ox/core//categories/predefined: | [{ "name": "Predefined", "color": "orange", "icon": "bi/exclamation-circle.svg" }] io.ox/core//coloredIcons: "false" io.ox/core//features/categories: "true" io.ox/core//features/enterprisePicker/enabled: "true" io.ox/core//features/enterprisePicker/showLauncher: "false" io.ox/core//features/enterprisePicker/showTopRightLauncher: "true" io.ox/core//features/managedResources: "true" io.ox/core//features/resourceCalendars: "true" io.ox/core//features/templates: "true" io.ox/dynamic-theme//folderBackground: '#ffffff' io.ox/dynamic-theme//folderHover: '#f5f5f5' io.ox/dynamic-theme//folderSelected: '#e7dffa' io.ox/dynamic-theme//listHover: '#f5f5f5' io.ox/dynamic-theme//listSelected: '#e7dffa' io.ox/dynamic-theme//logoURL: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg io.ox/dynamic-theme//logoWidth: "82" io.ox/dynamic-theme//mainColor: '#571EFA' io.ox/dynamic-theme//topbarBackground: '#ffffff' io.ox/dynamic-theme//topbarColor: '#000000' io.ox/dynamic-theme//topbarHover: rgba(0, 0, 0, 0.1) io.ox/mail//contactCollectOnMailTransport: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # yaml-files-configmap apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-mw-yaml-files-configmap data: contacts-provider-ldap-mappings.yml: | functional: displayname: oxPersonal,cn,mailPrimaryAddress email1: mailPrimaryAddress file_as: oxPersonal,cn,mailPrimaryAddress objectid: mailPrimaryAddress ucs: anniversary: oxAnniversary birthday: oxBirthday branches: oxBranches cellular_telephone1: mobile city_business: l city_home: oxCityHome city_other: oxCityOther commercial_register: oxCommercialRegister company: oxCompany,o contextid: oxContextIDNum country_business: oxCountryBusiness,country country_home: oxCountryHome country_other: oxCountryOther creationdate: createTimestamp department: oxDepartment,department displayname: oxDisplayName,displayName,name distributionlist: memberUid email1: mailPrimaryAddress email2: oxEmail2 email3: oxEmail3 employeetype: employeeType fax_business: oxFaxBusiness,facsimileTelehoneNumber fax_home: oxFaxHome fax_other: oxFaxOther file_as: oxDisplayName,displayName,name givenname: givenName image1: jpegPhoto instant_messenger1: oxInstantMessenger1 instant_messenger2: oxInstantMessenger2 internal_userid: uid;logininfo lastmodified: modifyTimestamp manager_name: secretary,oxManagerName marital_status: oxMaritalStatus markasdistributionlist: objectClass=posixGroup middle_name: oxMiddleName,middleName nickname: oxNickName note: oxNote,description number_of_children: oxNumOfChildren number_of_employee: employeeNumber number_of_images: jpegPhoto=* objectid: uidNumber,gidNumber position: oxPosition postal_code_business: postalCode postal_code_home: oxPostalCodeHome postal_code_other: oxPostalCodeOther profession: oxProfession room_number: roomNumber sales_volume: oxSalesVolume spouse_name: oxSpouseName state_business: oxStateBusiness,st state_home: oxStateHome state_other: oxStateOther street_business: streetAddress street_home: oxStreetHome street_other: oxStreetOther suffix: oxSuffix surname: sn tax_id: oxTaxId telephone_assistant: oxTelephoneAssistant telephone_business1: oxTelephoneBusiness1,telephoneNumber telephone_business2: oxTelephoneBusiness2 telephone_car: oxTelephoneCar telephone_company: oxTelephoneCompany telephone_home1: oxTelephoneHome1,homePhone telephone_home2: oxTelephoneHome2 telephone_ip: oxTelephoneIp telephone_isdn: internationaliSDNNumber telephone_other: oxTelephoneOther telephone_pager: oxTelephonePager,pager telephone_telex: oxTelephoneTelex,telexNumber telephone_ttytdd: oxTelephoneTtydd title: title url: oxUrl,wWWHome userfield01: oxUserfiels01 userfield02: oxUserfiels02 userfield03: oxUserfiels03 userfield04: oxUserfiels04 userfield05: oxUserfiels05 userfield06: oxUserfiels06 userfield07: oxUserfiels07 userfield08: oxUserfiels08 userfield09: oxUserfiels09 userfield10: oxUserfiels10 userfield11: oxUserfiels11 userfield12: oxUserfiels12 userfield13: oxUserfiels13 userfield14: oxUserfiels14 userfield15: oxUserfiels15 userfield16: oxUserfiels16 userfield17: oxUserfiels17 userfield18: oxUserfiels18 userfield19: oxUserfiels19 userfield20: oxUserfiels20 contacts-provider-ldap.yml: | functional: folders: mode: static shownInTree: defaultValue: true protected: false static: commonContactFilter: (univentionObjectType=oxmail/functional_account) folders: - contactFilter: (univentionObjectType=oxmail/functional_account) name: Funktionale Postfächer usedForSync: defaultValue: false protected: true usedInPicker: defaultValue: true protected: false ldapClientId: contactsLdapClient mappings: functional name: Functional mailboxes opendesk: cache: useCache: false folders: dynamicAttributes: attributeName: o contactFilterTemplate: (&(univentionObjectType=users/user)(isOxUser=OK)(o=[value])) contactSearchScope: sub refreshInterval: 5m sortOrder: ascending fixedAttributes: attributeValues: - Janitorial - Product Development - Management - Human Resources contactFilterTemplate: (&(|(objectClass=person)(objectClass=groupOfNames))(ou=[value])) contactSearchScope: sub mode: dynamicAttributes shownInTree: defaultValue: true protected: false static: commonContactFilter: (|(objectClass=person)(objectClass=groupOfNames)) commonContactSearchScope: sub folders: - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Cupertino)) contactSearchScope: sub name: Cupertino - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=San Mateo)) contactSearchScope: sub name: San Mateo - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Redwood Shores)) contactSearchScope: sub name: Redwood Shores - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Armonk)) contactSearchScope: sub name: Armonk usedForSync: defaultValue: false protected: true usedInPicker: defaultValue: true protected: false isDeletedSupport: false ldapClientId: contactsLdapClient mappings: ucs maxPageSize: 500 name: Example Address Lists other: folders: mode: static shownInTree: defaultValue: true protected: false static: commonContactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*))) folders: - contactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*))) name: Ohne Organisation usedForSync: defaultValue: false protected: true usedInPicker: defaultValue: true protected: false ldapClientId: contactsLdapClient mappings: ucs name: Other contacts --- # Source: appsuite-public-sector/charts/appsuite/templates/ui-middleware-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: open-xchange-core-ui-middleware data: config.yaml: | baseUrls: - http://open-xchange-core-ui/manifest.json - http://open-xchange-core-guidedtours/manifest.json - http://open-xchange-guard-ui/manifest.json - http://open-xchange-nextcloud-integration-ui/manifest.json - http://open-xchange-public-sector-ui/manifest.json --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: open-xchange-core-mw namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 rules: - apiGroups: - "" resources: - pods - secrets - services verbs: - get - list --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: open-xchange-core-mw namespace: yschmidt-opendesk-argo labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: open-xchange-core-mw subjects: - kind: ServiceAccount name: open-xchange-core-mw namespace: yschmidt-opendesk-argo --- # Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-documentconverter labels: app.kubernetes.io/name: core-documentconverter helm.sh/chart: core-documentconverter-2.33.1 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-documentconverter version: 8.35.0 spec: type: ClusterIP ports: - port: 8008 targetPort: 8008 protocol: TCP name: http - port: 8011 targetPort: 8011 protocol: TCP name: https - port: 8017 targetPort: 8017 protocol: TCP name: http-live selector: app.kubernetes.io/name: core-documentconverter app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-guidedtours labels: app.kubernetes.io/name: core-guidedtours helm.sh/chart: core-guidedtours-2.6.14 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-guidedtours version: 8.6.13 spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: core-guidedtours app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-imageconverter labels: app.kubernetes.io/name: core-imageconverter helm.sh/chart: core-imageconverter-2.34.1 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-imageconverter version: 8.35.0 spec: type: ClusterIP ports: - port: 8005 targetPort: 8005 protocol: TCP name: http - port: 8014 targetPort: 8014 protocol: TCP name: https - port: 8018 targetPort: 8018 protocol: TCP name: http-live selector: app.kubernetes.io/name: core-imageconverter app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-gotenberg labels: helm.sh/chart: gotenberg-1.10.0 app.kubernetes.io/name: gotenberg app.kubernetes.io/instance: open-xchange app.kubernetes.io/version: "8.15.3" app.kubernetes.io/managed-by: Helm spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/name: gotenberg app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-http-api labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP ports: - name: http port: 80 protocol: TCP targetPort: http selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/http-api: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-sync labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP ports: - name: http port: 80 protocol: TCP targetPort: http selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/sync: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-admin labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP ports: - name: http port: 80 protocol: TCP targetPort: http selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/admin: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-businessmobility labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP ports: - name: http port: 80 protocol: TCP targetPort: http selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/businessmobility: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-request-analyzer labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP ports: - name: http port: 80 protocol: TCP targetPort: http selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/request-analyzer: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-mw-hazelcast-headless labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 spec: type: ClusterIP clusterIP: None ports: - name: tcp-hazelcast port: 5701 selector: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange roles.middleware.open-xchange.com/documents: "true" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-ui-middleware labels: grafana.ox.io/service-monitor-implementation: default app.kubernetes.io/name: core-ui-middleware helm.sh/chart: core-ui-middleware-3.2.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-ui-middleware version: 2.1.1 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http - port: 9090 targetPort: tcp-monitoring protocol: TCP name: monitoring selector: app.kubernetes.io/name: core-ui-middleware app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-ui labels: app.kubernetes.io/name: core-ui helm.sh/chart: core-ui-2.37.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-ui version: 8.35.2 spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: core-ui app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-core-user-guide labels: app.kubernetes.io/name: core-user-guide helm.sh/chart: core-user-guide-2.35.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-user-guide version: 8.35.0 spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: core-user-guide app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-guard-ui labels: app.kubernetes.io/name: guard-ui helm.sh/chart: guard-ui-2.7.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: guard-ui version: 8.32.0 spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/name: guard-ui app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-nextcloud-integration-ui labels: app.kubernetes.io/name: nextcloud-integration-ui helm.sh/chart: nextcloud-integration-ui-1.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: nextcloud-integration-ui version: 1.4.0 spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: nextcloud-integration-ui app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/public-sector-ui/templates/service.yaml apiVersion: v1 kind: Service metadata: name: open-xchange-public-sector-ui labels: app.kubernetes.io/name: public-sector-ui helm.sh/chart: public-sector-ui-2.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: public-sector-ui version: 2.4.0 spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: public-sector-ui app.kubernetes.io/instance: open-xchange --- # Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-documentconverter labels: app.kubernetes.io/name: core-documentconverter helm.sh/chart: core-documentconverter-2.33.1 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-documentconverter version: 8.35.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-documentconverter app.kubernetes.io/instance: open-xchange template: metadata: annotations: commit.open-xchange.com/documentconverter: c921fccc4dfd01e208e919a7a44c22aad9b23497 logging.open-xchange.com/format: appsuite-json checksum/commonEnv: e6ddbc18a3e99c6946b281e13d21ba4f42631ee59e6eecdc4c8c786950abbe3d labels: app.kubernetes.io/name: core-documentconverter app.kubernetes.io/instance: open-xchange app: core-documentconverter version: 8.35.0 spec: imagePullSecrets: [] serviceAccountName: default nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 987 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter:8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c imagePullPolicy: IfNotPresent env: - name: CONSOLELOG value: "/dev/tty" - name: DC_JVM_HEAP_SIZE_MB value: "768" - name: DC_JVM_HEAP_MIN_RAM_PERCENTAGE value: - name: DC_JVM_HEAP_MAX_RAM_PERCENTAGE value: - name: RELEASE_NAMESPACE value: "open-xchange" - name: OX_BLACKLISTED_PACKAGES value: "none" - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: LO_URL_BLACKLIST_FILE value: "/opt/open-xchange/etc/readerengine.blacklist" - name: LO_URL_WHITELIST_FILE value: "/opt/open-xchange/etc/readerengine.whitelist" - name: LO_URL_LINK_LIMIT value: "200" - name: LO_URL_LINK_PROXY value: "" envFrom: - secretRef: name: open-xchange-common-env ports: - name: http containerPort: 8008 protocol: TCP - name: https containerPort: 8011 protocol: TCP - name: http-live containerPort: 8017 protocol: TCP livenessProbe: httpGet: path: /health/liveness port: http-live failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: /documentconverterws port: http failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 startupProbe: httpGet: path: /health/liveness port: http-live failureThreshold: 30 initialDelaySeconds: 30 periodSeconds: 10 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 1.25Gi volumeMounts: - name: log-config mountPath: /opt/open-xchange/etc/logback.xml subPath: logback.xml - name: dc-config mountPath: /opt/open-xchange/etc/documentconverter.properties subPath: documentconverter.properties - name: dc-logs mountPath: /var/log/open-xchange/documentconverter - name: dc-spool mountPath: /var/spool/open-xchange - name: dc-urlallow mountPath: /opt/open-xchange/etc/readerengine.whitelist subPath: readerengine.whitelist - name: dc-urldeny mountPath: /opt/open-xchange/etc/readerengine.blacklist subPath: readerengine.blacklist volumes: - name: log-config configMap: name: open-xchange-core-documentconverter-dc-configmap items: - key: logback.xml path: logback.xml - name: dc-config configMap: name: open-xchange-core-documentconverter-dc-configmap items: - key: documentconverter.properties path: documentconverter.properties - name: dc-logs emptyDir: {} - name: dc-spool emptyDir: {} - name: dc-urlallow configMap: name: open-xchange-core-documentconverter-dc-configmap items: - key: readerengine.whitelist path: readerengine.whitelist - name: dc-urldeny configMap: name: open-xchange-core-documentconverter-dc-configmap items: - key: readerengine.blacklist path: readerengine.blacklist --- # Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-guidedtours labels: app.kubernetes.io/name: core-guidedtours helm.sh/chart: core-guidedtours-2.6.14 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-guidedtours version: 8.6.13 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-guidedtours app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: core-guidedtours helm.sh/chart: core-guidedtours-2.6.14 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-guidedtours version: 8.6.13 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours:8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: 8080 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: / port: 8080 failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-imageconverter labels: app.kubernetes.io/name: core-imageconverter helm.sh/chart: core-imageconverter-2.34.1 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-imageconverter version: 8.35.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-imageconverter app.kubernetes.io/instance: open-xchange template: metadata: annotations: commit.open-xchange.com/backend: 823763748212b6d8cf81da680eb719f059c6446f commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697 logging.open-xchange.com/format: appsuite-json checksum/commonEnv: faf45b39870cd824d8bc0c7bca0bba43d0a4fb979275f222bcdcd93ba1bfe557 labels: app.kubernetes.io/name: core-imageconverter app.kubernetes.io/instance: open-xchange app: core-imageconverter version: 8.35.0 spec: imagePullSecrets: [] serviceAccountName: default nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 987 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter:8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 imagePullPolicy: IfNotPresent env: - name: CONSOLELOG value: "/dev/tty" - name: IC_JVM_HEAP_SIZE_MB value: "1024" - name: RELEASE_NAMESPACE value: "open-xchange" - name: OX_BLACKLISTED_PACKAGES value: "none" - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: OXENV_OBJECTSTOREID value: envFrom: - secretRef: name: open-xchange-common-env - secretRef: name: open-xchange-core-imageconverter-envvars ports: - name: http containerPort: 8005 protocol: TCP - name: https containerPort: 8014 protocol: TCP - name: http-live containerPort: 8018 protocol: TCP startupProbe: httpGet: path: /live port: http-live failureThreshold: 30 initialDelaySeconds: 30 periodSeconds: 10 livenessProbe: httpGet: path: /live port: http-live failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: /imageconverter port: http failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.5 memory: 1.25Gi volumeMounts: - name: db-config mountPath: /opt/open-xchange/etc/configdb.properties subPath: configdb.properties - name: log-config mountPath: /opt/open-xchange/etc/logback.xml subPath: logback.xml - name: ic-config mountPath: /opt/open-xchange/etc2/icconfig.properties subPath: icconfig.properties - name: ic-logs mountPath: /var/log/open-xchange/imageconverter - name: ic-spool mountPath: /var/spool/open-xchange volumes: - name: db-config configMap: name: open-xchange-core-imageconverter-ic-configmap items: - key: configdb.properties path: configdb.properties - name: log-config configMap: name: open-xchange-core-imageconverter-ic-configmap items: - key: logback.xml path: logback.xml - name: ic-config configMap: name: open-xchange-core-imageconverter-ic-configmap items: - key: icconfig.properties path: icconfig.properties - name: ic-logs emptyDir: {} - name: ic-spool emptyDir: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-gotenberg labels: helm.sh/chart: gotenberg-1.10.0 app.kubernetes.io/name: gotenberg app.kubernetes.io/instance: open-xchange app.kubernetes.io/version: "8.15.3" app.kubernetes.io/managed-by: Helm spec: replicas: 1 progressDeadlineSeconds: 120 selector: matchLabels: app.kubernetes.io/name: gotenberg app.kubernetes.io/instance: open-xchange template: metadata: labels: app.kubernetes.io/name: gotenberg app.kubernetes.io/instance: open-xchange spec: serviceAccountName: default securityContext: {} containers: - name: gotenberg securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg:8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172" imagePullPolicy: IfNotPresent args: - gotenberg - --api-port=3000 - --api-download-from-max-retry=4 - --chromium-disable-javascript - --gotenberg-graceful-shutdown-duration=30s env: ports: - name: http containerPort: 3000 protocol: TCP livenessProbe: httpGet: path: /health port: http readinessProbe: httpGet: path: /health port: http resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.05 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp-volume terminationGracePeriodSeconds: 30 volumes: - emptyDir: medium: Memory sizeLimit: 256Mi name: tmp-volume --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-ui-middleware labels: app.kubernetes.io/name: core-ui-middleware helm.sh/chart: core-ui-middleware-3.2.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-ui-middleware version: 2.1.1 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-ui-middleware app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: core-ui-middleware app.kubernetes.io/instance: open-xchange app: core-ui-middleware version: 2.1.1 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 imagePullPolicy: IfNotPresent env: - name: CACHE_TTL value: "30000" - name: LOG_LEVEL value: "info" - name: BIND_ADDR value: "::" - name: APP_ROOT value: "/appsuite/" - name: COMPRESS_FILE_SIZE value: "600" - name: COMPRESS_FILE_TYPES value: "application/javascript application/json application/x-javascript application/xml application/xml+rss text/css text/html text/javascript text/plain text/xml image/svg+xml" - name: SLOW_REQUEST_THRESHOLD value: "4000" - name: REDIS_MODE value: "standalone" - name: REDIS_HOSTS value: "redis-headless:6379" - name: REDIS_DB value: "0" - name: REDIS_USERNAME valueFrom: secretKeyRef: name: open-xchange-core-ui-middleware-redis key: username - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: open-xchange-core-ui-middleware-redis key: password - name: REDIS_PREFIX value: "ui-middleware" - name: REDIS_TLS_ENABLED value: "false" ports: - name: http containerPort: 8080 protocol: TCP - name: tcp-monitoring containerPort: 9090 protocol: TCP livenessProbe: httpGet: path: /live port: 9000 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 9000 failureThreshold: 2 initialDelaySeconds: 1 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi volumeMounts: - name: manifest-config mountPath: /app/config/ volumes: - name: manifest-config configMap: name: "open-xchange-core-ui-middleware" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/updater.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-ui-middleware-updater labels: app.kubernetes.io/name: core-ui-middleware helm.sh/chart: core-ui-middleware-3.2.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-ui-middleware version: 2.1.1 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-ui-middleware app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: core-ui-middleware app.kubernetes.io/instance: open-xchange app: core-ui-middleware version: 2.1.1 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 command: ["/nodejs/bin/node", "src/updater.js"] imagePullPolicy: IfNotPresent env: - name: PROPAGATE_UPGRADES value: "true" - name: CACHE_TTL value: "30000" - name: LOG_LEVEL value: "info" - name: BIND_ADDR value: "::" - name: APP_ROOT value: "/appsuite/" - name: COMPRESS_FILE_SIZE value: "600" - name: COMPRESS_FILE_TYPES value: "application/javascript application/json application/x-javascript application/xml application/xml+rss text/css text/html text/javascript text/plain text/xml image/svg+xml" - name: SLOW_REQUEST_THRESHOLD value: "4000" - name: REDIS_MODE value: "standalone" - name: REDIS_HOSTS value: "redis-headless:6379" - name: REDIS_DB value: "0" - name: REDIS_USERNAME valueFrom: secretKeyRef: name: open-xchange-core-ui-middleware-redis key: username - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: open-xchange-core-ui-middleware-redis key: password - name: REDIS_PREFIX value: "ui-middleware" - name: REDIS_TLS_ENABLED value: "false" ports: - name: tcp-monitoring containerPort: 9090 protocol: TCP livenessProbe: httpGet: path: /live port: 9000 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 9000 failureThreshold: 2 initialDelaySeconds: 1 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi volumeMounts: - name: manifest-config mountPath: /app/config/ volumes: - name: manifest-config configMap: name: "open-xchange-core-ui-middleware" --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-ui labels: app.kubernetes.io/name: core-ui helm.sh/chart: core-ui-2.37.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-ui version: 8.35.2 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-ui app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: core-ui app.kubernetes.io/instance: open-xchange app: core-ui version: 8.35.2 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui:8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-core-user-guide labels: app.kubernetes.io/name: core-user-guide helm.sh/chart: core-user-guide-2.35.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-user-guide version: 8.35.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-user-guide app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: core-user-guide app.kubernetes.io/instance: open-xchange spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide:8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: 8080 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: / port: 8080 failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.02 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-guard-ui labels: app.kubernetes.io/name: guard-ui helm.sh/chart: guard-ui-2.7.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: guard-ui version: 8.32.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: guard-ui app.kubernetes.io/instance: open-xchange template: metadata: annotations: commit.open-xchange.com/guard-ui: 18b39d1cce594c72c19a659fd74aa40457080bc2 labels: app.kubernetes.io/name: guard-ui helm.sh/chart: guard-ui-2.7.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: guard-ui version: 8.32.0 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: guard-ui securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui:8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: http readinessProbe: httpGet: path: / port: http resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-nextcloud-integration-ui labels: app.kubernetes.io/name: nextcloud-integration-ui helm.sh/chart: nextcloud-integration-ui-1.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: nextcloud-integration-ui version: 1.4.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: nextcloud-integration-ui app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: nextcloud-integration-ui helm.sh/chart: nextcloud-integration-ui-1.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: nextcloud-integration-ui version: 1.4.0 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui:1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: 8080 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: / port: 8080 failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/public-sector-ui/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: open-xchange-public-sector-ui labels: app.kubernetes.io/name: public-sector-ui helm.sh/chart: public-sector-ui-2.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: public-sector-ui version: 2.4.0 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: public-sector-ui app.kubernetes.io/instance: open-xchange template: metadata: annotations: null labels: app.kubernetes.io/name: public-sector-ui helm.sh/chart: public-sector-ui-2.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: public-sector-ui version: 2.4.0 spec: imagePullSecrets: null serviceAccountName: default securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 nodeSelector: {} affinity: {} tolerations: [] containers: - name: main securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui:2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: / port: 8080 failureThreshold: 15 periodSeconds: 10 readinessProbe: httpGet: path: / port: 8080 failureThreshold: 2 initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 resources: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi volumeMounts: - mountPath: /tmp name: tmp volumes: - name: tmp emptyDir: {} --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: open-xchange-core-mw-default labels: app.kubernetes.io/name: core-mw helm.sh/chart: core-mw-6.6.2 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: core-mw version: 8.35.31 roles.middleware.open-xchange.com/http-api: "true" roles.middleware.open-xchange.com/sync: "true" roles.middleware.open-xchange.com/admin: "true" roles.middleware.open-xchange.com/businessmobility: "true" roles.middleware.open-xchange.com/request-analyzer: "true" roles.middleware.open-xchange.com/documents: "true" spec: serviceName: open-xchange-core-mw-hazelcast-headless podManagementPolicy: OrderedReady volumeClaimTemplates: [] replicas: 1 selector: matchLabels: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange template: metadata: annotations: commit.open-xchange.com/backend: 823763748212b6d8cf81da680eb719f059c6446f commit.open-xchange.com/documentconverter-api: 05f6c22f2e0c7f572efefca0eb8d67d0292d0a48 commit.open-xchange.com/exchange-interop: 7dba363002de2d05f1f5f80cad02e707bb2bac6c commit.open-xchange.com/guard: 74c97ad3539d5e2d76b0e5c5d34915bd3bffb857 commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697 commit.open-xchange.com/nextcloud-integration: 60f9130e052350dcbf7587af508d875f06c276c2 commit.open-xchange.com/office: c2f311e15a7a4b8ab36eff2b3a90ec808b5de77c commit.open-xchange.com/public-sector: ff2817bd44501f651d398c8bfc5185a8a4533ffe commit.open-xchange.com/weakforced: 7e517a2d71f788ac8e48a16b498638ca62265dc3 logging.open-xchange.com/format: appsuite-json checksum/allConfig: "56c481653ad61602d3592b583a139bb5af7260810846e41f8483e72742f9b28" checksum/commonEnv: 0dc97c8ab62b6d74198123eafa78f5e130ccbf213d4a5bda8974bea6862ab119 labels: app.kubernetes.io/name: core-mw app.kubernetes.io/instance: open-xchange app: core-mw version: 8.35.31 roles.middleware.open-xchange.com/http-api: "true" roles.middleware.open-xchange.com/sync: "true" roles.middleware.open-xchange.com/admin: "true" roles.middleware.open-xchange.com/businessmobility: "true" roles.middleware.open-xchange.com/request-analyzer: "true" roles.middleware.open-xchange.com/documents: "true" spec: imagePullSecrets: null serviceAccountName: open-xchange-core-mw nodeSelector: {} affinity: {} tolerations: [] terminationGracePeriodSeconds: 120 initContainers: - name: init-middleware image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false command: - "/bin/bash" - "-c" - | echo -e "Checking for the availability of MySQL Server deployment" while ! nc -z -w 5 "${MYSQL_HOST}" "${MYSQL_PORT}"; do printf "-" done echo -e " >> MySQL Server is up & running" env: - name: MYSQL_ROOT_PASSWORD value: "" - name: SERVER_NAME value: server - name: RELEASE_NAMESPACE value: yschmidt-opendesk-argo - name: OX_LOG_TO_CONSOLE value: "true" - name: OX_BLACKLISTED_PACKAGES value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller open-xchange-authentication-database open-xchange-authentication-imap open-xchange-authentication-ldap open-xchange-authentication-masterpassword open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend open-xchange-documents-monitoring open-xchange-documents-templates open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-storage-provider open-xchange-plugins-contact-whitelist-sync open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso open-xchange-weakforced - name: OX_APPSUITE_APPROOT value: "/appsuite" - name: DCS_SERVICENAME value: open-xchange-core-documents-collaboration - name: DC_SERVER_URL value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws - name: CS_SERVER_URL value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache - name: IC_SERVER_URL value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter - name: SPELLCHECK_SERVER_URL value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.svc.cluster.local:8003 - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: HELM_RELEASE_NAME value: open-xchange - name: JAVA_OPTS_MEM value: "-XX:MaxHeapSize=2048M" envFrom: - secretRef: name: open-xchange-core-mw-mysql - secretRef: name: open-xchange-common-env - secretRef: name: open-xchange-core-mw-secret-envvars resources: limits: cpu: 99 memory: 8Gi requests: cpu: 1 memory: 1.25Gi volumeMounts: - name: logs-default mountPath: /var/log/open-xchange - name: spool-default mountPath: /var/spool/open-xchange/ - name: properties-lean-default mountPath: /opt/open-xchange/etc/logback.xml subPath: logback.xml - name: properties-lean-default mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties subPath: languages.properties - name: properties-lean-default mountPath: /opt/open-xchange/etc/properties-lean-config.properties subPath: properties-lean-config.properties - name: properties-default mountPath: /injections/configuration/properties - name: properties-overwrite-default mountPath: /injections/configuration/properties-overwrite - name: ui-settings-default mountPath: /injections/configuration/ui-settings - name: meta-default mountPath: /injections/etc/meta/meta - name: etc-files-default mountPath: /injections/etc/etc - name: etc-secrets-default mountPath: /injections/etc/secretEtc - name: yaml-files-default mountPath: /injections/etc/yaml - name: yaml-secrets-default mountPath: /injections/etc/secretYaml - name: as-config-default mountPath: /injections/etc/as-config - name: context-sets-default mountPath: /injections/etc/context-sets/contextSets - name: start-hooks-default mountPath: /hooks/start/helm/ - name: before-apply-hooks-default mountPath: /hooks/beforeApply/helm/ - name: before-appsuite-start-hooks-default mountPath: /hooks/beforeAppsuiteStart/helm/ containers: - name: core-mw image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false ports: - containerPort: 8009 name: http livenessProbe: initialDelaySeconds: periodSeconds: 10 failureThreshold: 15 timeoutSeconds: httpGet: path: /live port: 8016 scheme: HTTP startupProbe: initialDelaySeconds: 30 periodSeconds: 10 failureThreshold: 30 timeoutSeconds: httpGet: path: /health port: 8009 scheme: HTTP readinessProbe: initialDelaySeconds: 30 periodSeconds: 5 failureThreshold: 2 timeoutSeconds: 5 httpGet: path: /ready port: 8009 scheme: HTTP env: - name: MYSQL_ROOT_PASSWORD value: "" - name: SERVER_NAME value: server - name: RELEASE_NAMESPACE value: yschmidt-opendesk-argo - name: OX_LOG_TO_CONSOLE value: "true" - name: OX_BLACKLISTED_PACKAGES value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller open-xchange-authentication-database open-xchange-authentication-imap open-xchange-authentication-ldap open-xchange-authentication-masterpassword open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend open-xchange-documents-monitoring open-xchange-documents-templates open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-storage-provider open-xchange-plugins-contact-whitelist-sync open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso open-xchange-weakforced - name: OX_APPSUITE_APPROOT value: "/appsuite" - name: DCS_SERVICENAME value: open-xchange-core-documents-collaboration - name: DC_SERVER_URL value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws - name: CS_SERVER_URL value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache - name: IC_SERVER_URL value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter - name: SPELLCHECK_SERVER_URL value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.svc.cluster.local:8003 - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: HELM_RELEASE_NAME value: open-xchange - name: HZ_ENABLED value: "true" - name: HZ_SERVICE_DNS value: "open-xchange-core-mw-hazelcast-headless.yschmidt-opendesk-argo.svc.cluster.local" - name: HZ_GROUP_NAME value: "hzgroup" - name: HZ_GROUP_PASSWORD value: "6e1ec5fff93ffe194feaec82ae14836c3c33fcb8" - name: JAVA_OPTS_MEM value: "-XX:MaxHeapSize=2048M" envFrom: - secretRef: name: open-xchange-core-mw-mysql - secretRef: name: open-xchange-common-env - secretRef: name: open-xchange-core-mw-secret-envvars resources: limits: cpu: 99 memory: 8Gi requests: cpu: 1 memory: 1.25Gi volumeMounts: - name: logs-default mountPath: /var/log/open-xchange - name: spool-default mountPath: /var/spool/open-xchange/ - name: properties-lean-default mountPath: /opt/open-xchange/etc/logback.xml subPath: logback.xml - name: properties-lean-default mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties subPath: languages.properties - name: properties-lean-default mountPath: /opt/open-xchange/etc/properties-lean-config.properties subPath: properties-lean-config.properties - name: properties-default mountPath: /injections/configuration/properties - name: properties-overwrite-default mountPath: /injections/configuration/properties-overwrite - name: ui-settings-default mountPath: /injections/configuration/ui-settings - name: meta-default mountPath: /injections/etc/meta/meta - name: etc-files-default mountPath: /injections/etc/etc - name: etc-secrets-default mountPath: /injections/etc/secretEtc - name: yaml-files-default mountPath: /injections/etc/yaml - name: yaml-secrets-default mountPath: /injections/etc/secretYaml - name: as-config-default mountPath: /injections/etc/as-config - name: context-sets-default mountPath: /injections/etc/context-sets/contextSets - name: start-hooks-default mountPath: /hooks/start/helm/ - name: before-apply-hooks-default mountPath: /hooks/beforeApply/helm/ - name: before-appsuite-start-hooks-default mountPath: /hooks/beforeAppsuiteStart/helm/ - name: drive-restricted-config mountPath: /opt/open-xchange/etc/pushClientConfig/drive-restricted-config.yaml readOnly: true - name: drive-restricted-fcm-keystore mountPath: /opt/open-xchange/etc/pushClientConfig/drive-mobile-android readOnly: true - name: mobile-api-facade-restricted-config mountPath: /opt/open-xchange/etc/pushClientConfig/mobile-api-facade-restricted-config.yaml readOnly: true volumes: - name: shared-default emptyDir: {} - name: properties-lean-default configMap: name: open-xchange-core-mw-properties-lean-configmap items: - key: logback.xml path: logback.xml - key: languages.properties path: languages.properties - key: properties-lean-config.properties path: properties-lean-config.properties - name: disabled-bundles-default emptyDir: {} - name: logs-default emptyDir: {} - name: spool-default emptyDir: {} - name: properties-default projected: sources: - secret: name: open-xchange-core-mw-properties-secret - configMap: name: open-xchange-core-mw-default-properties-configmap - name: properties-overwrite-default projected: sources: - configMap: name: open-xchange-core-mw-default-properties-overwrite-configmap - name: ui-settings-default projected: sources: - secret: name: open-xchange-core-mw-ui-settings-secret - configMap: name: open-xchange-core-mw-ui-settings-configmap - name: meta-default projected: sources: - configMap: name: open-xchange-core-mw-meta-configmap - name: etc-files-default projected: sources: - configMap: name: open-xchange-core-mw-etc-files-configmap - name: etc-secrets-default projected: sources: - secret: name: open-xchange-core-mw-etc-secrets-secret - name: yaml-files-default projected: sources: - configMap: name: open-xchange-core-mw-yaml-files-configmap items: - key: contacts-provider-ldap-mappings.yml path: contacts-provider-ldap-mappings.yml - key: contacts-provider-ldap.yml path: contacts-provider-ldap.yml - name: yaml-secrets-default projected: sources: - secret: name: open-xchange-core-mw-yaml-secrets-secret items: - key: ldap-client-config.yml path: ldap-client-config.yml - name: context-sets-default projected: sources: - secret: name: open-xchange-core-mw-contextsets-secret - configMap: name: open-xchange-core-mw-contextsets-configmap - name: as-config-default projected: sources: - configMap: name: open-xchange-core-mw-as-config-configmap - name: start-hooks-default configMap: name: open-xchange-core-mw-hook-start-configmap - name: before-apply-hooks-default configMap: name: open-xchange-core-mw-hook-before-apply-configmap - name: before-appsuite-start-hooks-default configMap: name: open-xchange-core-mw-hook-before-appsuite-start-configmap - name: drive-restricted-config secret: secretName: drive-restricted-config optional: true - name: drive-restricted-fcm-keystore secret: secretName: drive-restricted-fcm-keystore optional: true - name: mobile-api-facade-restricted-config secret: secretName: mobile-api-facade-restricted-config optional: true --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-appsuite-base spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/ pathType: Prefix backend: service: name: open-xchange-core-ui-middleware port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rootredirect annotations: nginx.ingress.kubernetes.io/app-root: /appsuite/ spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: / pathType: ImplementationSpecific backend: service: name: open-xchange-core-ui-middleware port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rest-routes-admin annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /admin pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rest-routes-advertisement annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /advertisement pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rest-routes-chronos annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /chronos pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rest-routes-preliminary annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /preliminary pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rest-routes-userfeedback annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /userfeedback pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-static-routes-servlet annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /servlet pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-static-routes-realtime annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /realtime pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-static-routes-infostore annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /infostore pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-static-routes-webservices annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /webservices pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-drive-client-windows-ox-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: drive-client-windows-ox-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /api/drive/client/windows/ox/install(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-drive-client-windows-ox port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-guard-api-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /oxguard$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: guard-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/api/oxguard(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-guard-support-api-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /guardsupport$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: guard-support-api-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/api/guardsupport(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-guard-pgp-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /pgp$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: guard-pgp-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /pks(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-http-api-routes-api annotations: nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-api nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /api(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-http-api-routes-ajax annotations: nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-ajax nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /ajax(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-http-api-routes-appsuite-api annotations: nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-appsuite-api nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "60" nginx.ingress.kubernetes.io/proxy-send-timeout: "60" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/api(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-rt2-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /rt2$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: rt2-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/rt2(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-http-api port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-documents-help-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /help-documents$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: documents-help-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/help-documents(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-office-user-guide port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-drive-help-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /help$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: drive-help-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/help-drive(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-drive-help port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-core-help-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /help$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: core-help-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/help(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-user-guide port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-office-web-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /appsuite$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: office-web-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /appsuite/office(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-ui-middleware port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-caldav-well-known-redirect annotations: nginx.ingress.kubernetes.io/temporal-redirect: /caldav/ spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /.well-known/caldav pathType: ImplementationSpecific backend: service: name: open-xchange-core-ui-middleware port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-carddav-well-known-redirect annotations: nginx.ingress.kubernetes.io/temporal-redirect: /carddav/ spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /.well-known/carddav pathType: ImplementationSpecific backend: service: name: open-xchange-core-ui-middleware port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-dav-infostore-route annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: authorization nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /servlet/webdav.infostore/ pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-sync port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: open-xchange-appsuite-dav-root-route annotations: nginx.ingress.kubernetes.io/rewrite-target: /servlet/dav/$1 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-name: dav-root-route nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true" spec: ingressClassName: nginx tls: - hosts: - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de http: paths: - path: /(.*) pathType: ImplementationSpecific backend: service: name: open-xchange-core-mw-sync port: number: 80 --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # etc-binaries-configmap --- # Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml # etc-binaries-secret --- # Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata: name: "open-xchange-core-guidedtours-test-connection" labels: helm.sh/chart: core-guidedtours-2.6.14 app.kubernetes.io/name: core-guidedtours app.kubernetes.io/instance: open-xchange app.kubernetes.io/version: "8.6.13" app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": test spec: containers: - name: wget image: busybox command: ['wget'] args: ['open-xchange-core-guidedtours:80'] restartPolicy: Never --- # Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata: name: "open-xchange-core-ui-test-connection" labels: helm.sh/chart: core-ui-2.37.2 app.kubernetes.io/name: core-ui app.kubernetes.io/instance: open-xchange app.kubernetes.io/version: "8.35.2" app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": test spec: containers: - name: wget image: busybox command: ['wget'] args: ['open-xchange-core-ui:80'] restartPolicy: Never --- # Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata: name: "open-xchange-core-user-guide-test-connection" labels: helm.sh/chart: core-user-guide-2.35.0 app.kubernetes.io/name: core-user-guide app.kubernetes.io/instance: open-xchange app.kubernetes.io/version: "8.35.0" app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": test spec: containers: - name: wget image: busybox command: ['wget'] args: ['open-xchange-core-user-guide:80'] restartPolicy: Never --- # Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata: name: "open-xchange-nextcloud-integration-ui-test-connection" labels: app.kubernetes.io/name: nextcloud-integration-ui helm.sh/chart: nextcloud-integration-ui-1.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: nextcloud-integration-ui version: 1.4.0 annotations: "helm.sh/hook": test spec: containers: - name: wget image: busybox command: ['wget'] args: ['open-xchange-nextcloud-integration-ui:80'] restartPolicy: Never --- # Source: appsuite-public-sector/charts/public-sector-ui/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata: name: "open-xchange-public-sector-ui-test-connection" labels: app.kubernetes.io/name: public-sector-ui helm.sh/chart: public-sector-ui-2.4.0 app.kubernetes.io/instance: open-xchange app.kubernetes.io/managed-by: Helm app: public-sector-ui version: 2.4.0 annotations: "helm.sh/hook": test spec: containers: - name: wget image: busybox command: ['wget'] args: ['open-xchange-public-sector-ui:80'] restartPolicy: Never --- # Source: opendesk-open-xchange-bootstrap/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-open-xchange-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-open-xchange-bootstrap helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 app.kubernetes.io/instance: opendesk-open-xchange-bootstrap app.kubernetes.io/managed-by: Helm ... --- # Source: opendesk-open-xchange-bootstrap/templates/role.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "Role" metadata: namespace: "yschmidt-opendesk-argo" name: "opendesk-open-xchange-bootstrap" rules: # needed to execute commands inside pod - apiGroups: [""] resources: - "pods" resourceNames: ["open-xchange-core-mw-default-0"] verbs: ["get"] - apiGroups: [""] resources: - "pods/exec" resourceNames: ["open-xchange-core-mw-default-0"] verbs: ["create"] # needed to restart stateful set - apiGroups: ["apps"] resources: - "statefulsets" resourceNames: ["open-xchange-core-mw-default"] verbs: ["get", "patch"] ... --- # Source: opendesk-open-xchange-bootstrap/templates/rolebinding.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "RoleBinding" metadata: name: "opendesk-open-xchange-bootstrap" namespace: "yschmidt-opendesk-argo" roleRef: # points to the ClusterRole apiGroup: "rbac.authorization.k8s.io" kind: "Role" name: "opendesk-open-xchange-bootstrap" subjects: # points to the ServiceAccount - kind: "ServiceAccount" name: "opendesk-open-xchange-bootstrap" namespace: "yschmidt-opendesk-argo" # ns of service account ... --- # Source: opendesk-open-xchange-bootstrap/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-open-xchange-bootstrap" labels: app.kubernetes.io/name: opendesk-open-xchange-bootstrap helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 app.kubernetes.io/instance: opendesk-open-xchange-bootstrap app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded spec: ttlSecondsAfterFinished: 60 template: metadata: labels: app.kubernetes.io/name: opendesk-open-xchange-bootstrap helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 app.kubernetes.io/instance: opendesk-open-xchange-bootstrap app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded spec: serviceAccountName: "opendesk-open-xchange-bootstrap" containers: - name: "opendesk-open-xchange-bootstrap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/alpine/k8s:1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 256Mi env: - name: "NAMESPACE" value: "yschmidt-opendesk-argo" - name: "CORE_MIDDLEWARE_STATEFULSET" value: "open-xchange-core-mw-default" - name: "CORE_MIDDLEWARE_POD" value: "open-xchange-core-mw-default-0" command: - "/bin/bash" - "-c" - > until kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c 'echo core-mw running...'; do echo "waiting for container core-mw to be alive..." sleep 1 done kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c "mkdir -p /opt/open-xchange/ox-filestore" kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c '/opt/open-xchange/sbin/initconfigdb --configdb-user "${MYSQL_USER}" --configdb-pass "${MYSQL_PASSWORD}" --configdb-host "${MYSQL_HOST}" --mysql-root-passwd "${MYSQL_PASSWORD}" --configdb-dbname "${MYSQL_DATABASE}"' || echo "error initconfigdb" kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c 'until nc -z localhost 8009; do echo "waiting for port 8009"; sleep 5; done' kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c '/opt/open-xchange/sbin/registerfilestore -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" -t /opt/open-xchange/ox-filestore -s "100000"' || echo "error: registerfilestore" kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c '/opt/open-xchange/sbin/registerserver -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" -n oxserver' || echo "error: registerserver" kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw -- bash -c '/opt/open-xchange/sbin/registerdatabase -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" --name "PRIMARYDB" --hostname "${MYSQL_HOST}" --dbuser "${MYSQL_USER}" --dbpasswd "${MYSQL_PASSWORD}" --master true' || echo "error: registerdatabase" kubectl --namespace="${NAMESPACE}" rollout restart statefulset ${CORE_MIDDLEWARE_STATEFULSET} restartPolicy: "Never" backoffLimit: 4 ... --- # Source: ox-connector/templates/serviceaccount.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH--- apiVersion: "v1" kind: "ServiceAccount" metadata: name: ox-connector labels: app.kubernetes.io/name: ox-connector helm.sh/chart: ox-connector-0.19.0 app.kubernetes.io/instance: ox-connector app.kubernetes.io/managed-by: Helm ... --- # Source: ox-connector/templates/secret.yaml apiVersion: "v1" kind: "Secret" type: "Opaque" metadata: name: 'ox-connector' labels: app.kubernetes.io/name: ox-connector helm.sh/chart: ox-connector-0.19.0 app.kubernetes.io/instance: ox-connector app.kubernetes.io/managed-by: Helm data: provisioning_api_password: "NWIyNWQyYmUyNjkwZWUzYWNmMzJhNGY5MzAwNmU4MDEwZmY0YmJkMg==" ... --- # Source: ox-connector/templates/configmap.yaml apiVersion: v1 data: DEFAULT_CONTEXT: "1" DOMAINNAME: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de LOCAL_TIMEZONE: Europe/Berlin LOG_LEVEL: INFO MAX_ACKNOWLEDGEMENT_RETRIES: "3" OX_IMAP_SERVER: imap://127.0.0.1:143 OX_LANGUAGE: de_DE OX_MASTER_ADMIN: admin OX_MASTER_PASSWORD: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 OX_SMTP_SERVER: smtp://127.0.0.1:587 OX_SOAP_SERVER: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de PROVISIONING_API_BASE_URL: http://ums-provisioning-api PROVISIONING_API_USERNAME: ox-connector wait-for-api.sh: |- #!/bin/bash until curl -s ${PROVISIONING_API_BASE_URL} > /dev/null; do echo "Waiting for API" sleep 2 done echo "Success, the Provisioning API is available" kind: ConfigMap metadata: labels: app.kubernetes.io/instance: ox-connector app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ox-connector helm.sh/chart: ox-connector-0.19.0 name: ox-connector ... --- # Source: ox-connector/templates/statefulset.yaml apiVersion: "apps/v1" kind: "StatefulSet" metadata: name: ox-connector labels: app.kubernetes.io/name: ox-connector helm.sh/chart: ox-connector-0.19.0 app.kubernetes.io/instance: ox-connector app.kubernetes.io/managed-by: Helm spec: serviceName: ox-connector replicas: 1 selector: matchLabels: app.kubernetes.io/name: ox-connector app.kubernetes.io/instance: ox-connector template: metadata: annotations: checksum/config: 739c01d2384f53e04a3d80abe138614027cffd0847565d475bb2d2658e4d380d checksum/secret: eac4a64240bb01531210eef0fbd84bc9fb0c2f1ef9b92d596497aaebca845eb7 labels: app.kubernetes.io/name: ox-connector app.kubernetes.io/instance: ox-connector spec: serviceAccountName: ox-connector securityContext: fsGroup: 1000 initContainers: - name: wait-for-api securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault command: [ "/bin/bash", "/scripts/wait-for-api.sh" ] image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: ox-connector volumeMounts: - name: wait-for-api mountPath: /scripts resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 64Mi containers: - name: ox-connector securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone:0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e" imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: ox-connector - secretRef: name: ox-connector volumeMounts: - name: ox-connector-ox-contexts mountPath: /etc/ox-secrets - name: ox-connector-appcenter mountPath: /var/lib/univention-appcenter/apps/ox-connector livenessProbe: exec: command: - /bin/sh - -c - | exit 0 failureThreshold: 3 initialDelaySeconds: 120 periodSeconds: 30 successThreshold: 1 timeoutSeconds: 3 readinessProbe: exec: command: - /bin/sh - -c - | exit 0 failureThreshold: 30 initialDelaySeconds: 30 periodSeconds: 15 successThreshold: 1 timeoutSeconds: 3 resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 64Mi volumes: - name: wait-for-api configMap: name: ox-connector volumeClaimTemplates: - metadata: name: ox-connector-ox-contexts spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi - metadata: name: ox-connector-appcenter spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ... --- # Source: ox-connector/templates/configmap.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: ox-connector/templates/hpa.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: ox-connector/templates/secret.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: ox-connector/templates/statefulset.yaml # SPDX-License-Identifier: AGPL-3.0-only # SPDX-FileCopyrightText: 2023 Univention GmbH --- # Source: opendesk-nextcloud-management/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: opendesk-nextcloud-management namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php automountServiceAccountToken: false ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-administrator" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "nextcloud" password: "d132ecf836fac6a43b19341f94d5effff7edee65" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-database" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "nextcloud_user" password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-cache" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "default" password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-ldap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: password: "f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-smtp" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" password: "1884bda7fb31c726adcd094399ab63319e9ca56f" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-integration" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "opendesk_username" password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-oidc" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "opendesk-nextcloud" password: "9ba1ae31cafd277b67b043234aa0d0fdd53d90b8" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-objectstore" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: username: "nextcloud_user" password: "cd58fb1bf965a7605e316b394f11ae9c67b3220f" ... --- # Source: opendesk-nextcloud-management/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-management-serverinfo" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php stringData: token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9" ... --- # Source: opendesk-nextcloud-management/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-nextcloud-management-1" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-php argocd.argoproj.io/hook: "Sync" argocd.argoproj.io/hook-delete-policy: "BeforeHookCreation" spec: backoffLimit: 1 ttlSecondsAfterFinished: 60 template: metadata: labels: app.kubernetes.io/name: opendesk-nextcloud-management helm.sh/chart: opendesk-nextcloud-management-4.0.3 app.kubernetes.io/instance: opendesk-nextcloud-management app.kubernetes.io/managed-by: Helm annotations: checksum/configmap: 5d8dc088de425e524012e21c06f0156608519f8e0110dfa15567545d77fc6677 intents.otterize.com/service-name: opendesk-nextcloud-php spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: opendesk-nextcloud-management restartPolicy: Never containers: - name: "init" command: - "/usr/bin/php" - "/usr/local/bin/entrypoint/entrypoint.php" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" imagePullPolicy: IfNotPresent env: - name: "FS_ENV_SUBSCRIPTION_KEY" value: - name: "FS_ENV_DEFAULT_QUOTA" value: "1 GB" - name: "FS_ENV_RETENTION_OBLIGATION_VERSIONS" value: "auto" - name: "FS_ENV_RETENTION_OBLIGATION_TRASHBIN" value: "auto" - name: "FS_ENV_DEV_MODE" value: "false" - name: "FS_ENV_RUN_MODE" value: "init" - name: "FS_ENV_LOGLEVEL" value: "2" - name: "FS_ENV_DBTYPE" value: "pgsql" - name: "FS_ENV_DBHOST" value: "postgresql" - name: "FS_ENV_DBNAME" value: "nextcloud" - name: "FS_ENV_DBPORT" value: "5432" - name: "FS_ENV_DBUSER" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-database" key: "username" - name: "FS_ENV_DBPASSWORD" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-database" key: "password" - name: "FS_ENV_NCADMINNAME" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-administrator" key: "username" - name: "FS_ENV_NCADMINPASS" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-administrator" key: "password" - name: "FS_ENV_REDIS_HOST" value: "redis-headless" - name: "FS_ENV_REDIS_PORT" value: "6379" - name: "FS_ENV_REDIS_TIMEOUT" value: "30" - name: "FS_ENV_REDIS_DBINDEX" value: "4" - name: "FS_ENV_PHP_REDIS_DBINDEX" value: "5" - name: "FS_ENV_REDIS_USER" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-cache" key: "username" - name: "FS_ENV_REDIS_PASSWORD" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-cache" key: "password" - name: "FS_ENV_REDIS_TLS_ENABLED" value: "false" - name: "FS_ENV_MAIL_SMTPAUTH" value: "true" - name: "FS_ENV_MAIL_SMTPNAME" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-smtp" key: "username" - name: "FS_ENV_MAIL_SMTPPASSWORD" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-smtp" key: "password" - name: "FS_ENV_MAIL_SMTPAUTHTYPE" value: "LOGIN" - name: "FS_ENV_MAIL_SMTPMODE" value: "smtp" - name: "FS_ENV_MAIL_SMTPSECURE" value: "tls" - name: "FS_ENV_MAIL_SMTPHOST" value: "postfix.yschmidt-opendesk-argo.svc.cluster.local" - name: "FS_ENV_MAIL_SMTPPORT" value: "587" - name: "FS_ENV_MAIL_DOMAIN" value: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_MAIL_FROM_ADDRESS" value: "no-reply" - name: "FS_ENV_MAIL_SMTPVERIFYPEER" value: "true" - name: "FS_ENV_PORTAL_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_LOGO_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg" - name: "FS_ENV_WEBMAIL_URL" value: "https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_PORTAL_JSON_USERNAME_ATTRIBUTE" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-integration" key: "username" - name: "FS_ENV_PORTAL_SECRET" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-integration" key: "password" - name: "FS_ENV_PORTAL_NAVIGATION_JSON_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json" - name: "FS_ENV_PORTAL_AUTH_METHOD" value: "basic" - name: "FS_ENV_PORTAL_MENU_TABNAME" value: "target" - name: "FS_ENV_OIDC_CLIENT_ID" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-oidc" key: "username" - name: "FS_ENV_OIDC_CLIENT_SECRET" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-oidc" key: "password" - name: "FS_ENV_OIDC_DISCOVERY_URI" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/.well-known/openid-configuration" - name: "FS_ENV_OIDC_MAPPING_UID" value: "opendesk_useruuid" - name: "FS_ENV_LDAP" value: "ewogICJsZGFwQWdlbnROYW1lIjogInVpZD1sZGFwc2VhcmNoX25leHRjbG91ZCxjbj11c2VycyxkYz1zd3AtbGRhcCxkYz1pbnRlcm5hbCIsCiAgImxkYXBCYXNlIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEJhc2VHcm91cHMiOiAiZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwiLAogICJsZGFwQmFzZVVzZXJzIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEhvc3QiOiAibGRhcDovL3Vtcy1sZGFwLXNlcnZlciIsCiAgImxkYXBQb3J0IjogIjM4OSIsCiAgImxkYXBBZG1pbkdyb3VwIjogIm1hbmFnZWQtYnktYXR0cmlidXRlLUZpbGVzaGFyZUFkbWluIiwKICAibGRhcEdyb3VwRGlzcGxheU5hbWUiOiAiY24iLAogICJsZGFwR3JvdXBGaWx0ZXIiOiAiJygmKG9iamVjdENsYXNzPW9wZW5kZXNrRmlsZXNoYXJlR3JvdXApKG9wZW5kZXNrRmlsZXNoYXJlRW5hYmxlZD1UUlVFKSknIiwKICAibGRhcEdyb3VwRmlsdGVyT2JqZWN0Y2xhc3MiOiAib3BlbmRlc2tGaWxlc2hhcmVHcm91cCIsCiAgImxkYXBMb2dpbkZpbHRlciI6ICInKCYob3BlbmRlc2tGaWxlc2hhcmVFbmFibGVkPVRSVUUpKGVudHJ5VVVJRD0ldWlkKSknIiwKICAibGRhcFVzZXJGaWx0ZXIiOiAiJyhvcGVuZGVza0ZpbGVzaGFyZUVuYWJsZWQ9VFJVRSknIiwKICAibGRhcFVzZXJGaWx0ZXJPYmplY3RjbGFzcyI6ICJvcGVuZGVza0ZpbGVzaGFyZVVzZXIiCn0K" - name: "FS_ENV_LDAP_AGENT_PASSWORD" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-ldap" key: "password" - name: "FS_ENV_ANTIVIRUS_ICAP_HOST" value: "clamav-simple" - name: "FS_ENV_ANTIVIRUS_ICAP_PORT" value: "1344" - name: "FS_ENV_ANTIVIRUS_ICAP_SERVICE" value: "avscan" - name: "FS_ENV_ANTIVIRUS_ICAP_HEADER" value: "X-Infection-Found" - name: "FS_ENV_ANTIVIRUS_ICAP_MODE" value: "reqmod" - name: "FS_ENV_ANTIVIRUS_ICAP_CHUNK_SIZE" value: "1048576" - name: "FS_ENV_ANTIVIRUS_ACTION" value: "delete" - name: "FS_ENV_CRYPTPAD_HOST" value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_MONITORING_TOKEN" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-serverinfo" key: "token" - name: "FS_ENV_OBJECTSTORE_BUCKET" value: "nextcloud" - name: "FS_ENV_OBJECTSTORE_HOST" value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_OBJECTSTORE_ACCESS_KEY" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-objectstore" key: "username" - name: "FS_ENV_OBJECTSTORE_SECRET_KEY" valueFrom: secretKeyRef: name: "opendesk-nextcloud-management-objectstore" key: "password" - name: "FS_ENV_OBJECTSTORE_PORT" value: "443" - name: "FS_ENV_OBJECTSTORE_PATH_STYLE" value: "true" - name: "FS_ENV_OBJECTSTORE_USE_SSL" value: "true" - name: "FS_ENV_OBJECTSTORE_REGION" value: "eu-west-1" - name: "FS_ENV_OBJECTSTORE_STORAGE_CLASS" value: "STANDARD" - name: "FS_ENV_WOPI_ALLOWLIST" value: "10.0.0.0/8" - name: "FS_ENV_INTERNAL_WOPI_URL" value: "https://office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_PUBLIC_WOPI_URL" value: "https://office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_TRUSTED_DOMAINS" value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "FS_ENV_TRUSTED_PROXIES" value: "127.0.0.1" - name: "FS_ENV_THEMING_COLOR" value: "#571EFA" - name: "FS_ENV_THEMING_PRODUCTNAME" value: "openDesk" - name: "FS_ENV_NCADMINENABLED" value: "true" - name: "FS_ENV_SHAREAPI_ALLOW_LINKS" value: "false" - name: "FS_ENV_SHAREAPI_ALLOW_MAIL_NOTIFICATION" value: "false" - name: "FS_ENV_SHAREAPI_ALLOW_PUBLIC_UPLOAD" value: "false" - name: "FS_ENV_SHAREAPI_DEFAULT_INTERNAL_EXPIRE_DATE" value: "false" - name: "FS_ENV_SHAREAPI_ENFORCE_INTERNAL_EXPIRE_DATE" value: "false" - name: "FS_ENV_SHAREAPI_INTERNAL_EXPIRE_AFTER_N_DAYS" value: "90" - name: "FS_ENV_SHAREAPI_DEFAULT_EXPIRE_DATE" value: "true" - name: "FS_ENV_SHAREAPI_ENFORCE_EXPIRE_DATE" value: "false" - name: "FS_ENV_SHAREAPI_EXPIRE_AFTER_N_DAYS" value: "30" - name: "FS_ENV_SHAREAPI_ENFORCE_LINKS_PASSWORD" value: "false" - name: "FS_ENV_SHAREBYMAIL_ENFORCE_PASSWORD_PROTECTION" value: "false" - name: "FS_ENV_SHAREBYMAIL_SEND_PASSWORD_MAIL" value: "true" - name: "FS_ENV_DAV_SYSTEM_ADDRESSBOOK_EXPOSED" value: "true" - name: "FS_ENV_FEATURE_CIRCLES_ENABLED" value: "false" - name: "FS_ENV_FEATURE_BRUTE_FORCE_PROTECTION_ENABLED" value: "true" - name: "FS_ENV_FEATURE_FEDERATION_ENABLED" value: "false" - name: "FS_ENV_FEATURE_APPS_CONTACTS_ENABLED" value: "false" - name: "FS_ENV_FEATURE_APPS_FILES_ZIP_ENABLED" value: "true" - name: "FS_ENV_FEATURE_APPS_GROUPFOLDERS_ENABLED" value: "true" - name: "FS_ENV_FEATURE_APPS_INTEGRATION_OPENPROJECT_ENABLED" value: "true" - name: "FS_ENV_FEATURE_APPS_SPREED_ENABLED" value: "true" - name: "FS_ENV_CREATE_OCDATA" value: "true" - name: "FS_ENV_INTEGRATION_OXAPPSUITE_ENABLED" value: "true" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "nextcloud-data" mountPath: "/var/nextcloud/data" - name: "nextcloud-config" mountPath: "/var/www/html/config" - name: "nextcloud-tmp" mountPath: "/tmp" volumes: - name: "nextcloud-data" emptyDir: {} - name: "nextcloud-tmp" emptyDir: {} - name: "nextcloud-config" emptyDir: {} ... --- # Source: opendesk-nextcloud/charts/aio/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: opendesk-nextcloud-aio namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio automountServiceAccountToken: false ... --- # Source: opendesk-nextcloud/charts/exporter/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: opendesk-nextcloud-exporter namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: exporter helm.sh/chart: exporter-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-exporter automountServiceAccountToken: false ... --- # Source: opendesk-nextcloud/charts/aio/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-aio-database" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio stringData: username: "nextcloud_user" password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f" ... --- # Source: opendesk-nextcloud/charts/aio/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-aio-cache" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio stringData: username: "default" password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" ... --- # Source: opendesk-nextcloud/charts/exporter/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-nextcloud-exporter" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: exporter helm.sh/chart: exporter-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-exporter stringData: token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9" ... --- # Source: opendesk-nextcloud/charts/aio/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-nextcloud-aio" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" - name: "php" port: 9000 targetPort: "php" protocol: "TCP" - name: "status" port: 8081 targetPort: "status" protocol: "TCP" selector: app.kubernetes.io/name: aio app.kubernetes.io/instance: opendesk-nextcloud ... --- # Source: opendesk-nextcloud/charts/exporter/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-nextcloud-exporter" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: exporter helm.sh/chart: exporter-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-exporter spec: type: "ClusterIP" ports: - name: "metrics" port: 9205 targetPort: "metrics" protocol: "TCP" selector: app.kubernetes.io/name: exporter app.kubernetes.io/instance: opendesk-nextcloud ... --- # Source: opendesk-nextcloud/charts/aio/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: "opendesk-nextcloud-aio" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: aio app.kubernetes.io/instance: opendesk-nextcloud strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: opendesk-nextcloud-aio containers: - name: "aio" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" imagePullPolicy: IfNotPresent env: - name: "FS_ENV_OVERWRITE_PROTOCOL" value: "https" - name: "FS_ENV_TRUSTED_PROXIES" value: "10.0.0.0/8" - name: "FS_ENV_RUN_MODE" value: "runtime" - name: "FS_ENV_DBTYPE" value: "pgsql" - name: "FS_ENV_DBHOST" value: "postgresql" - name: "FS_ENV_DBNAME" value: "nextcloud" - name: "FS_ENV_DBPORT" value: "5432" - name: "FS_ENV_DBUSER" valueFrom: secretKeyRef: name: opendesk-nextcloud-aio-database key: username - name: "FS_ENV_DBPASSWORD" valueFrom: secretKeyRef: name: opendesk-nextcloud-aio-database key: password - name: "FS_ENV_REDIS_HOST" value: "redis-headless" - name: "FS_ENV_REDIS_PORT" value: "6379" - name: "FS_ENV_REDIS_TIMEOUT" value: "30" - name: "FS_ENV_REDIS_DBINDEX" value: "4" - name: "FS_ENV_PHP_REDIS_DBINDEX" value: "5" - name: "FS_ENV_REDIS_USER" valueFrom: secretKeyRef: name: opendesk-nextcloud-aio-cache key: username - name: "FS_ENV_REDIS_PASSWORD" valueFrom: secretKeyRef: name: opendesk-nextcloud-aio-cache key: password - name: "FS_ENV_REDIS_TLS_ENABLED" value: "false" - name: "FS_ENV_CREATE_OCDATA" value: "true" - name: "FS_ENV_TRUSTED_DOMAINS" value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" livenessProbe: httpGet: path: "/health" port: 8081 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/health" port: 8081 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 startupProbe: httpGet: path: "/health" port: 8081 httpHeaders: - name: "Host" value: "localhost" initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 8080 protocol: TCP - name: php containerPort: 9000 protocol: TCP - name: status containerPort: 8081 protocol: TCP resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "nextcloud-config" mountPath: "/var/www/html/config" - name: "nextcloud-data" mountPath: "/var/nextcloud/data" - name: "nextcloud-tmp" mountPath: "/tmp" - name: "nginx-config" mountPath: "/etc/nginx/conf.d" - name: "nginx-tmp" mountPath: "/var/cache/nginx/" - name: "run" mountPath: "/var/run/" volumes: - name: "nextcloud-data" emptyDir: {} - name: "nextcloud-tmp" emptyDir: {} - name: "nginx-tmp" emptyDir: {} - name: "run" emptyDir: {} - name: "nextcloud-config" emptyDir: medium: "Memory" sizeLimit: "5Mi" - name: "nginx-config" emptyDir: medium: "Memory" sizeLimit: "5Mi" ... --- # Source: opendesk-nextcloud/charts/exporter/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: "opendesk-nextcloud-exporter" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: exporter helm.sh/chart: exporter-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-exporter spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: exporter app.kubernetes.io/instance: opendesk-nextcloud strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 10de92135dcd0e95bbf37a6366bb4b4ddc721b3e87fcea1d926e929af485c573 labels: app.kubernetes.io/name: exporter helm.sh/chart: exporter-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 65532 fsGroupChangePolicy: Always serviceAccountName: opendesk-nextcloud-exporter containers: - name: "exporter" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 65532 runAsNonRoot: true runAsUser: 65532 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter:1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0" imagePullPolicy: IfNotPresent env: - name: "NEXTCLOUD_TIMEOUT" value: "5s" - name: "NEXTCLOUD_TLS_SKIP_VERIFY" value: "false" - name: "NEXTCLOUD_AUTH_TOKEN" valueFrom: secretKeyRef: name: opendesk-nextcloud-exporter key: token - name: "NEXTCLOUD_SERVER" value: "http://opendesk-nextcloud-aio" livenessProbe: tcpSocket: port: 9205 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 successThreshold: 1 readinessProbe: tcpSocket: port: 9205 initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 startupProbe: tcpSocket: port: 9205 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: metrics containerPort: 9205 protocol: TCP resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: volumes: ... --- # Source: opendesk-nextcloud/charts/aio/templates/cron-job.yaml apiVersion: "batch/v1" kind: "CronJob" metadata: name: "opendesk-nextcloud-aio-cron" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio spec: schedule: "*/5 * * * *" concurrencyPolicy: "Forbid" successfulJobsHistoryLimit: 0 failedJobsHistoryLimit: 1 jobTemplate: spec: ttlSecondsAfterFinished: 180 activeDeadlineSeconds: 600 template: metadata: labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb intents.otterize.com/service-name: opendesk-nextcloud-aio spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: opendesk-nextcloud-aio restartPolicy: Never containers: - name: "cron" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" command: - "/usr/bin/php" - "/usr/local/bin/entrypoint/entrypoint.php" imagePullPolicy: IfNotPresent env: - name: "FS_ENV_RUN_MODE" value: "cron" - name: "FS_ENV_CRON_PHP_MEMORY_LIMIT" value: "1G" - name: "FS_ENV_DBTYPE" value: "pgsql" - name: "FS_ENV_DBHOST" value: "postgresql" - name: "FS_ENV_DBNAME" value: "nextcloud" - name: "FS_ENV_DBPORT" value: "5432" - name: "FS_ENV_DBUSER" valueFrom: secretKeyRef: name: "opendesk-nextcloud-aio-database" key: "username" - name: "FS_ENV_DBPASSWORD" valueFrom: secretKeyRef: name: "opendesk-nextcloud-aio-database" key: "password" - name: "FS_ENV_CREATE_OCDATA" value: "true" resources: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "nextcloud-config" mountPath: "/var/www/html/config" - name: "nextcloud-data" mountPath: "/var/nextcloud/data" - name: "nextcloud-tmp" mountPath: "/tmp" volumes: - name: "nextcloud-data" emptyDir: {} - name: "nextcloud-tmp" emptyDir: {} - name: "nextcloud-config" emptyDir: medium: "Memory" sizeLimit: "5Mi" ... --- # Source: opendesk-nextcloud/charts/aio/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-nextcloud-aio" labels: app.kubernetes.io/name: aio helm.sh/chart: aio-4.0.2 app.kubernetes.io/instance: opendesk-nextcloud app.kubernetes.io/managed-by: Helm annotations: intents.otterize.com/service-name: opendesk-nextcloud-aio nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.org/client-max-body-size: 100M nginx.org/proxy-read-timeout: 600s nginx.org/proxy-send-timeout: 600s spec: ingressClassName: "nginx" tls: - hosts: - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: opendesk-nextcloud-aio port: name: http ... --- # Source: collabora-online/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: collabora labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm --- # Source: collabora-online/templates/secret.yaml apiVersion: v1 kind: Secret metadata: name: collabora labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm data: username: Y29sbGFib3JhLWludGVybmFsLWFkbWlu password: MWYxODAyODk1NDM2ODY1MmFhNzBjNTQ5OGE1MmYxOTRlNzIxYjE0NQ== --- # Source: collabora-online/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: collabora annotations: confighash: config-acf7fcfbc47208034cd636e2a5b93730 labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm data: extra_params: --o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0 --o:num_prespawn_children=4 --o:remote_font_config.url=https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/richdocuments/settings/fonts.json --o:net.proto=all --o:logging.anonymize.anonymize_user_data=true aliasgroup1: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de --- # Source: collabora-online/templates/service.yaml apiVersion: v1 kind: Service metadata: name: collabora labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm type: main spec: type: ClusterIP ports: - port: 9980 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online type: main --- # Source: collabora-online/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: collabora labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm spec: minReadySeconds: 0 replicas: 1 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online type: main template: metadata: annotations: confighash: config-acf7fcfbc47208034cd636e2a5b93730 cluster-autoscaler.kubernetes.io/safe-to-evict: "true" labels: app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online type: main spec: terminationGracePeriodSeconds: 60 serviceAccountName: collabora securityContext: fsGroup: 1001 containers: - name: collabora-online securityContext: allowPrivilegeEscalation: true capabilities: add: - CHOWN - FOWNER - SYS_CHROOT drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk:24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f" imagePullPolicy: IfNotPresent ports: - name: http containerPort: 9980 protocol: TCP startupProbe: httpGet: path: / port: 9980 scheme: HTTP failureThreshold: 30 periodSeconds: 3 livenessProbe: httpGet: path: / port: 9980 scheme: HTTP initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 30 successThreshold: 1 failureThreshold: 4 readinessProbe: httpGet: path: / port: 9980 scheme: HTTP initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 30 successThreshold: 1 failureThreshold: 2 envFrom: - configMapRef: name: collabora env: - name: username valueFrom: secretKeyRef: name: collabora key: username - name: password valueFrom: secretKeyRef: name: collabora key: password - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 512Mi volumeMounts: - name: tmp mountPath: /tmp volumes: - name: tmp emptyDir: {} --- # Source: collabora-online/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: collabora labels: helm.sh/chart: collabora-online-1.1.37 app.kubernetes.io/name: collabora-online app.kubernetes.io/instance: collabora-online app.kubernetes.io/version: "24.04.13.3.1" app.kubernetes.io/managed-by: Helm annotations: haproxy-ingress.github.io/balance-algorithm: url_param WOPISrc check_post haproxy-ingress.github.io/config-backend: | hash-type consistent # block admin urls from outside acl admin_url path_beg /cool/getMetrics acl admin_url path_beg /cool/adminws/ acl admin_url path_beg /browser/dist/admin/admin.html http-request deny if admin_url haproxy-ingress.github.io/timeout-tunnel: 600s haproxy.org/backend-config-snippet: | balance url_param WOPISrc check_post hash-type consistent haproxy.org/timeout-tunnel: 600s nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/server-snippet: | # block admin and metrics endpoint from outside by default location /cool/getMetrics { deny all; return 403; } location /cool/adminws/ { deny all; return 403; } location /browser/dist/admin/admin.html { deny all; return 403; } nginx.ingress.kubernetes.io/upstream-hash-by: $arg_WOPISrc nginx.org/client-max-body-size: 100M nginx.org/lb-method: hash $arg_WOPISrc consistent nginx.org/proxy-read-timeout: 600s nginx.org/proxy-send-timeout: 600s nginx.org/server-snippets: | # block admin and metrics endpoint from outside by default location /cool/getMetrics { deny all; return 403; } location /cool/adminws/ { deny all; return 403; } location /browser/dist/admin/admin.html { deny all; return 403; } nginx.org/websocket-services: collabora spec: ingressClassName: nginx tls: - hosts: - "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: collabora port: number: 9980 --- # Source: cryptpad/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: cryptpad labels: helm.sh/chart: cryptpad-0.0.20 app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad app.kubernetes.io/managed-by: Helm --- # Source: cryptpad/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: cryptpad labels: helm.sh/chart: cryptpad-0.0.20 app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad app.kubernetes.io/managed-by: Helm data: config.js: | /* globals module */ module.exports = { httpUnsafeOrigin: 'https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de', httpSafeOrigin: 'https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de', adminKeys: [], archivePath: "./data/archive", blobPath: "./blob", blobStagingPath: "./data/blobstage", blockPath: "./block", decreePath: "./data/decrees", filePath: "./datastore/", httpAddress: "0.0.0.0", installMethod: "helm-docker", logFeedback: "false", logLevel: "info", logPath: "./data/logs", logToStdout: "false", pinPath: "./data/pins", taskPath: "./data/tasks", verbose: "false", }; application_config.js: | /* * You can override the configurable values from this file. * The recommended method is to make a copy of this file (/customize.dist/application_config.js) in a 'customize' directory (/customize/application_config.js). * If you want to check all the configurable values, you can open the internal configuration file but you should not change it directly (/common/application_config_internal.js) */ define(['/common/application_config_internal.js'], function (AppConfig) { AppConfig.availablePadTypes = ["diagram"]; return AppConfig; }); --- # Source: cryptpad/templates/service.yaml apiVersion: v1 kind: Service metadata: name: cryptpad labels: helm.sh/chart: cryptpad-0.0.20 app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad app.kubernetes.io/managed-by: Helm spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http - port: 83 targetPort: ws protocol: TCP name: ws sessionAffinity: ClientIP selector: app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad --- # Source: cryptpad/templates/cryptpad.yaml apiVersion: apps/v1 kind: Deployment metadata: name: cryptpad labels: helm.sh/chart: cryptpad-0.0.20 app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad template: metadata: annotations: checksum/configmap: befacf9ece1dd46940ff5e5118bea194b0f5878d37b80fbc85cebb087d9dc317 labels: app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad spec: serviceAccountName: cryptpad securityContext: fsGroup: 4001 initContainers: - name: init-cryptpad securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 4001 runAsNonRoot: true runAsUser: 4001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17" imagePullPolicy: IfNotPresent command: ['/bin/sh', '-c'] volumeMounts: - name: cryptpad-data mountPath: /cryptpad/data args: - | FILE=/cryptpad/data/decrees/decree.ndjson mkdir -p /cryptpad/data/decrees VALUE='["ENABLE_EMBEDDING", [true], "", 0]' if [ -f $FILE ] && [ $(grep -c "ENABLE_EMBEDDING" $FILE) -gt 0 ] then sed -i "s|.*ENABLE_EMBEDDING.*|$VALUE|g" "$FILE" else echo "$VALUE" >> "$FILE" fi resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi containers: - name: cryptpad securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 4001 runAsNonRoot: true runAsUser: 4001 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17" imagePullPolicy: IfNotPresent env: - name: CPAD_MAIN_DOMAIN value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: CPAD_SANDBOX_DOMAIN value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: CPAD_CONF value: "/cryptpad/config/config.js" ports: - name: http containerPort: 3000 protocol: TCP - name: ws containerPort: 3003 protocol: TCP startupProbe: tcpSocket: port: 3000 initialDelaySeconds: 0 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 5 successThreshold: 1 livenessProbe: httpGet: path: / port: 3000 initialDelaySeconds: 0 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 5 successThreshold: 1 readinessProbe: httpGet: path: / port: 3000 initialDelaySeconds: 0 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 5 successThreshold: 1 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: cryptpad-blob mountPath: /cryptpad/blob - name: cryptpad-block mountPath: /cryptpad/block - name: cryptpad-data mountPath: /cryptpad/data - name: cryptpad-datastore mountPath: /cryptpad/datastore - name: configmaps mountPath: /cryptpad/config/config.js subPath: config.js - name: configmaps mountPath: /cryptpad/customize/application_config.js subPath: application_config.js volumes: - name: configmaps configMap: name: cryptpad - name: cryptpad-blob emptyDir: {} - name: cryptpad-block emptyDir: {} - name: cryptpad-data emptyDir: {} - name: cryptpad-datastore emptyDir: {} --- # Source: cryptpad/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cryptpad labels: helm.sh/chart: cryptpad-0.0.20 app.kubernetes.io/name: cryptpad app.kubernetes.io/instance: cryptpad app.kubernetes.io/managed-by: Helm annotations: nginx.org/websocket-services: cryptpad spec: ingressClassName: nginx tls: - hosts: - "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: ImplementationSpecific backend: service: name: cryptpad port: number: 80 - path: /cryptpad_websocket pathType: ImplementationSpecific backend: service: name: cryptpad port: number: 83 --- # Source: opendesk-element/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-element" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: opendesk-element/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-element" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm data: config.json: |- { "default_server_config": { "m.homeserver": { "base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" } }, "sso_redirect_options": { "on_welcome_page": true }, "jitsi": { "preferred_domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" }, "jitsi_widget": { "skip_built_in_welcome_screen": true }, "permalink_prefix": "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de", "default_federate": false, "disable_custom_urls": true, "integrations_ui_url": "", "integrations_rest_url": "", "integrations_widgets_urls": [], "features": { "feature_rust_crypto": true, "feature_video_rooms": false, "feature_ask_to_join": true }, "enable_presence_by_hs_url": { "https://matrix.org": false, "https://matrix-client.matrix.org": false }, "setting_defaults": { "UIFeature.feedback": false, "UIFeature.advancedSettings": false, "UIFeature.shareQrCode": false, "UIFeature.shareSocial": false, "UIFeature.identityServer": false, "UIFeature.thirdPartyId": false, "UIFeature.registration": false, "UIFeature.passwordReset": false, "UIFeature.deactivate": false, "UIFeature.advancedEncryption": false, "UIFeature.roomHistorySettings": false, "MessageComposerInput.showStickersButton": false, "breadcrumbs": false, "fallbackICEServerAllowed": false }, "default_theme": "light", "brand": "Chat - openDesk", "custom_translations_url": "/custom-translations.json", "embeddedPages": { "homeUrl": "/custom-home.html" }, "net.nordeck.element_web.module.widget_toggles": { "config": { "types": [ "jitsi", "net.nordeck" ] } }, "net.nordeck.element_web.module.guest": { "config": { "guest_user_homeserver_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" } }, "logout_redirect_url":"https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout?client_id=opendesk-matrix\u0026post_logout_redirect_uri=https%3A%2F%2Fportal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","net.nordeck.element_web.module.opendesk":{"config":{"banner":{"ics_navigation_json_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/navigation.json","ics_silent_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/silent","portal_logo_svg_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg","portal_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/"},"custom_css_variables":{"--cpd-color-bg-action-primary-rest":"#571EFA","--cpd-color-text-action-accent":"#571EFA"}}},"net.nordeck.element_web.module.widget_lifecycle":{"widget_permissions":{"https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html":{"identity_approved":true},"https://matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.send.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard.sessions#*","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard.sessions","org.matrix.msc3819.send.to_device:net.nordeck.whiteboard.connection_signaling","org.matrix.msc3819.receive.to_device:net.nordeck.whiteboard.connection_signaling","town.robin.msc3846.turn_servers","org.matrix.msc4039.upload_file","org.matrix.msc4039.download_file"],"preload_approved":true},"https://matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.poll.vote","org.matrix.msc2762.receive.event:net.nordeck.poll.vote","org.matrix.msc2762.send.state_event:net.nordeck.poll","org.matrix.msc2762.receive.state_event:net.nordeck.poll","org.matrix.msc2762.send.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:net.nordeck.poll.group","org.matrix.msc2762.receive.state_event:net.nordeck.poll.group","org.matrix.msc2762.send.event:net.nordeck.poll.start","org.matrix.msc2762.receive.event:net.nordeck.poll.start"],"preload_approved":true},"https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2931.navigate","org.matrix.msc2762.timeline:*","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.event:m.reaction","org.matrix.msc2762.receive.state_event:m.room.create","org.matrix.msc2762.receive.state_event:m.room.tombstone","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.topic","org.matrix.msc2762.receive.state_event:m.space.parent","org.matrix.msc2762.receive.state_event:m.space.child","org.matrix.msc2762.receive.state_event:net.nordeck.meetings.metadata","org.matrix.msc2762.receive.state_event:im.vector.modular.widgets","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.send.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.send.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc2762.receive.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc3973.user_directory_search"],"identity_approved":true,"preload_approved":true}}}, "dummy_end": "placeholder" } custom-home.html: |-

Willkommen

Terminplaner öffnen custom-translations.json: |- { "power_level|default": { "de": "Teilnehmer*in", "en": "Participant" }, "power_level|moderator": { "de": "Assistent*in", "en": "Assistant" }, "power_level|mod": { "de": "Assistent*in", "en": "Assistant" }, "power_level|admin": { "de": "Moderator*in", "en": "Moderator" }, "room|header|n_people_asking_to_join": { "de": { "one": "Möchte beitreten", "other": "%(count)s Personen möchten beitreten" }, "en": { "one": "Asking to join", "other": "%(count)s people asking to join" } }, "room|knock_denied_subtitle": { "de": "Da deine Beitrittsanfrage abgelehnt wurde, bitten wir um Geduld, bis du eine Einladung vom Administrator oder Moderator erhältst.", "en": "As you have been denied access, you cannot rejoin unless you are invited by the admin or moderator of the group." }, "room|knock_denied_title": { "de": "Deine Beitrittsanfrage wurde abgelehnt", "en": "You have been denied access" }, "room_settings|security|publish_room": { "de": "Diesen Raum im Raumverzeichnis veröffentlichen.", "en": "Make this room visible in the public room directory." } } --- # Source: opendesk-element/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-element-nginx" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm data: nginx.conf: |- worker_processes auto; error_log stderr warn; pid /tmp/nginx.pid; events { worker_connections 1024; } http { client_body_temp_path /tmp/client_temp; proxy_temp_path /tmp/proxy_temp_path; fastcgi_temp_path /tmp/fastcgi_temp; uwsgi_temp_path /tmp/uwsgi_temp; scgi_temp_path /tmp/scgi_temp; include /etc/nginx/mime.types; default_type application/octet-stream; set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; server { listen 8080; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "frame-ancestors 'self'"; add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex"; location / { root /usr/share/nginx/html; index index.html index.htm; charset utf-8; } location = /health { allow all; default_type 'application/json'; return 200 '{"status": "ok"}'; } } } ... --- # Source: opendesk-element/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-element" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "element" port: 8080 targetPort: 8080 protocol: "TCP" selector: app.kubernetes.io/name: opendesk-element app.kubernetes.io/instance: opendesk-element ... --- # Source: opendesk-element/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "opendesk-element" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "clamd" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: opendesk-element app.kubernetes.io/instance: opendesk-element strategy: rollingUpdate: maxSurge: 2 maxUnavailable: 1 type: RollingUpdate template: metadata: annotations: checksum/configmap: f02bdecaabb0dda8c51db14f7561c1c30eba253577adf829ee6cab07adffe33b labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app.kubernetes.io/name" operator: "In" values: - "opendesk-element" topologyKey: "kubernetes.io/hostname" securityContext: fsGroup: 101 serviceAccountName: opendesk-element terminationGracePeriodSeconds: 30 initContainers: - name: "copy-modules" command: - cp - -r - /tmp/element-web-modules - /mnt/tmp/element-web-modules securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" imagePullPolicy: IfNotPresent env: resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "tmp" mountPath: "/mnt/tmp" - name: "init-element" command: - /bin/sh - -c - | /docker-entrypoint.sh nginx -t; cat /tmp/element-web-config/config.json cp /tmp/element-web-config/config.json /tmp-app/config.json cp -r /tmp/element-web-modules /tmp-app/modules securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" imagePullPolicy: IfNotPresent env: resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "config" mountPath: "/app/config.json" subPath: "config.json" readOnly: false - name: "config" mountPath: "/app/custom-home.html" subPath: "custom-home.html" readOnly: true - name: "config" mountPath: "/app/custom-translations.json" subPath: "custom-translations.json" readOnly: true - name: "nginx-config" mountPath: "/etc/nginx/nginx.conf" subPath: "nginx.conf" readOnly: false - name: "tmp" mountPath: "/tmp" - name: "tmp-app" mountPath: "/tmp-app" containers: - name: "element" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" imagePullPolicy: IfNotPresent env: - name: NGINX_ENVSUBST_TEMPLATE_DIR value: /non-existant-so-that-this-works-with-read-only-root-filesystem ports: - name: element containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: "/health" port: "element" scheme: "HTTP" initialDelaySeconds: 1 periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/health" port: "element" scheme: "HTTP" initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 startupProbe: httpGet: path: "/health" port: "element" scheme: "HTTP" initialDelaySeconds: 2 periodSeconds: 2 timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "tmp-app" mountPath: "/app/config.json" subPath: "config.json" readOnly: true - name: "tmp-app" mountPath: "/app/modules" subPath: "modules" readOnly: true - name: "config" mountPath: "/app/custom-home.html" subPath: "custom-home.html" readOnly: true - name: "config" mountPath: "/app/custom-translations.json" subPath: "custom-translations.json" readOnly: true - name: "nginx-config" mountPath: "/etc/nginx/nginx.conf" subPath: "nginx.conf" readOnly: true - name: "tmp" mountPath: "/tmp" volumes: - name: "config" configMap: name: "opendesk-element" defaultMode: 420 - name: "nginx-config" configMap: name: "opendesk-element-nginx" defaultMode: 420 - name: "tmp-app" emptyDir: medium: "Memory" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: opendesk-element/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-element" labels: app.kubernetes.io/name: opendesk-element helm.sh/chart: opendesk-element-6.1.3 app.kubernetes.io/instance: opendesk-element app.kubernetes.io/managed-by: Helm spec: ingressClassName: "nginx" tls: - hosts: - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/" pathType: "Prefix" backend: service: name: opendesk-element port: name: element ... --- # Source: opendesk-well-known/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-well-known" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: opendesk-well-known/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-well-known" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm data: client: |- { "m.homeserver": { "base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" }, "im.vector.riot.jitsi": { "preferredDomain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" } } server: |- { "m.server": "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de:443" } --- # Source: opendesk-well-known/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-well-known-nginx" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm data: nginx.conf: |- # © 2023 New-Vector # # SPDX-License-Identifier: AGPL-3.0-or-later worker_processes auto; error_log stderr warn; pid /tmp/nginx.pid; events { worker_connections 1024; } http { client_body_temp_path /tmp/client_temp; proxy_temp_path /tmp/proxy_temp_path; fastcgi_temp_path /tmp/fastcgi_temp; uwsgi_temp_path /tmp/uwsgi_temp; scgi_temp_path /tmp/scgi_temp; include /etc/nginx/mime.types; default_type application/octet-stream; set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; server { listen 8080; location / { root /usr/share/nginx/html; index index.html index.htm; charset utf-8; location /.well-known/matrix { default_type application/json; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "frame-ancestors 'self'"; add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex"; add_header "Access-Control-Allow-Origin" *; add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS"; add_header "Access-Control-Allow-Headers" "X-Requested-With, Content-Type, Authorization"; if ($request_method = OPTIONS) { return 200; } } } } } ... --- # Source: opendesk-well-known/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-well-known" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "well-known" port: 8080 targetPort: 8080 protocol: "TCP" selector: app.kubernetes.io/name: opendesk-well-known app.kubernetes.io/instance: opendesk-well-known ... --- # Source: opendesk-well-known/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "opendesk-well-known" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: "clamd" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: opendesk-well-known app.kubernetes.io/instance: opendesk-well-known strategy: rollingUpdate: maxSurge: 2 maxUnavailable: 1 type: RollingUpdate template: metadata: annotations: checksum/configmap: a68724b6be43558d837b3c60ae6e7c99978e7e573a7e22c4b93c4575a505eeef labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app.kubernetes.io/name" operator: In values: - "opendesk-well-known" topologyKey: "kubernetes.io/hostname" securityContext: fsGroup: 101 serviceAccountName: "opendesk-well-known" terminationGracePeriodSeconds: 30 containers: - name: "well-known" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" imagePullPolicy: IfNotPresent env: ports: - name: well-known containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: "/.well-known/matrix/server" port: "well-known" scheme: "HTTP" initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/.well-known/matrix/server" port: "well-known" scheme: "HTTP" initialDelaySeconds: 20 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "config" mountPath: "/usr/share/nginx/html/.well-known/matrix" readOnly: true - name: "nginx-config" mountPath: "/etc/nginx/nginx.conf" subPath: "nginx.conf" readOnly: true - name: "tmp" mountPath: "/tmp" volumes: - name: "config" configMap: name: "opendesk-well-known" defaultMode: 420 - name: "nginx-config" configMap: name: "opendesk-well-known-nginx" defaultMode: 420 - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: opendesk-well-known/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-well-known" labels: app.kubernetes.io/name: opendesk-well-known helm.sh/chart: opendesk-well-known-6.1.3 app.kubernetes.io/instance: opendesk-well-known app.kubernetes.io/managed-by: Helm spec: ingressClassName: "nginx" tls: - hosts: - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/.well-known/matrix" pathType: "Prefix" backend: service: name: opendesk-well-known port: name: well-known ... --- # Source: opendesk-synapse-web/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-synapse-web" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: opendesk-synapse-web/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-synapse-web" labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm data: 429.http: > HTTP/1.0 429 Too Many Requests Cache-Control: no-cache Connection: close Content-Type: text/html access-control-allow-origin: * access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization

429 Too Many Requests

No server is available to handle this request. haproxy.cfg: | global maxconn 40000 log stdout format raw local0 info # Allow for rewriting HTTP headers (e.g. Authorization) up to 4k # https://github.com/haproxy/haproxy/issues/1743 tune.maxrewrite 4096 # Allow start of container when fd limit is too low # https://github.com/haproxy/haproxy/issues/1866 no strict-limits defaults mode http fullconn 20000 # wait for 5s when connecting to a server timeout connect 5s # ... but if there is a backlog of requests, wait for 60s before returning a 500 timeout queue 60s # close client connections 5m after the last request # (as recommened by https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-with-CloudFlare) timeout client 900s # give clients 5m between requests (otherwise it defaults to the value of 'timeout http-request') timeout http-keep-alive 900s # give clients 10s to complete a request (either time between handshake and first request, or time spent sending headers) timeout http-request 10s # time out server responses after 90s timeout server 180s # allow backend sessions to be shared across frontend sessions http-reuse aggressive # limit the number of concurrent requests to each server, to stop # the python process having to juggle hundreds of queued # requests. Any requests beyond this limit are held in a queue for # up to seconds, before being rejected according # to "errorfile 503" below. # # (bear in mind that we have two haproxies, each of which will use # up to this number of connections, so the actual number of # connections to the server may be up to twice this figure.) # # Note that this is overridden for some servers and backends. default-server maxconn 500 option redispatch compression algo gzip compression type text/plain text/html text/xml application/json text/css # if we hit the maxconn on a server, and the queue timeout expires, we want # to avoid returning 503, since that will cause cloudflare to mark us down. # # https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#1.3.1 says: # # 503 when no server was available to handle the request, or in response to # monitoring requests which match the "monitor fail" condition # errorfile 503 /usr/local/etc/haproxy/429.http resolvers kubedns parse-resolv-conf hold timeout 600s hold refused 600s frontend http-in bind :::8008 v4v6 maxconn 20000 log global # same as http log, with %Th (handshake time) log-format "%ci:%cp [%tr] %ft %b/%s %Th/%TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r" capture request header Host len 32 capture request header Referer len 200 capture request header User-Agent len 200 # before we change the 'src', stash it in a session variable http-request set-var(sess.orig_src) src if !{ var(sess.orig_src) -m found } # in case this is not the first request on the connection, restore the # 'src' to the original, in case we fail to parse the x-f-f header. http-request set-src var(sess.orig_src) # Traditionally do this only for traffic from some limited IP addreses # but the incoming router being what it is, means we have no fixed IP here. http-request set-src hdr(x-forwarded-for) # We always add a X-Forwarded-For header (clobbering any existing # headers). http-request set-header X-Forwarded-For %[src] # Ingresses by definition run on both 80 & 443 and there's no customising of that # It is up to the ingress controller and any annotations provided to it whether # it sets any additional headers or not or whether it redirects http -> https # We don't have control (or even visiblity) on what the ingress controller is or does # So we can't guarantee the header is present # https is a more sensible default than http for the missing header as we force public_baseurl to https http-request set-header X-Forwarded-Proto https if !{ hdr(X-Forwarded-Proto) -m found } monitor-uri /haproxy_test # If we get here then we want to proxy everything to synapse or a worker. use_backend return_204 if { method OPTIONS } # try to extract a useful access token from either the auth header or a # query-param http-request set-var(req.access_token) urlp("access_token") if { urlp("access_token") -m found } http-request set-var(req.access_token) req.fhdr(Authorization),word(2," ") if { hdr_beg("Authorization") -i "Bearer " } # We also need a http header format to allow us to loadbalance and make decisions: http-request set-header X-Access-Token %[var(req.access_token)] # Disable Google FLoC http-response set-header Permissions-Policy "interest-cohort=()" # Load the backend from one of the map files. acl has_get_map path -m reg -M -f /usr/local/etc/haproxy/path_map_file_get http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file_get,main) if has_get_map METH_GET http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file,main) unless { var(req.backend) -m found } use_backend %[var(req.backend)] backend main default-server maxconn 250 # Use DNS SRV service discovery on the headless service server-template main 1 _synapse-http._tcp.opendesk-synapse.yschmidt-opendesk-argo.svc.cluster.local resolvers kubedns init-addr none # a backend which responds to everything with a 204 backend return_204 http-request return status 204 hdr "Access-Control-Allow-Origin" "*" hdr "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS" hdr "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization" # a fake backend which fonxes every request with a 500. Useful for # handling overloads etc. backend return_500 http-request deny deny_status 500 path_map_file: | # A map file that is used in haproxy config to map from matrix paths to the # named backend. The format is: path_regexp backend_name path_map_file_get: | # A map file that is used in haproxy config to map from matrix paths to the # named backend. The format is: path_regexp backend_name ... --- # Source: opendesk-synapse-web/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-synapse-web" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "web" port: 8008 targetPort: 8008 protocol: "TCP" selector: app.kubernetes.io/name: opendesk-synapse-web app.kubernetes.io/instance: opendesk-synapse-web ... --- # Source: opendesk-synapse-web/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "opendesk-synapse-web" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: opendesk-synapse-web app.kubernetes.io/instance: opendesk-synapse-web strategy: rollingUpdate: maxSurge: 2 maxUnavailable: 1 type: RollingUpdate template: metadata: annotations: checksum/configmap: 23b977b6314dd51e3b93937bf5399f74d3b74e20ef62e4f4c17beec211cfff18 labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app.kubernetes.io/name" operator: In values: - "opendesk-synapse-web" topologyKey: "kubernetes.io/hostname" securityContext: fsGroup: 101 serviceAccountName: opendesk-synapse-web terminationGracePeriodSeconds: 30 containers: - name: "haproxy" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/rapidfort/haproxy-official:2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c" imagePullPolicy: IfNotPresent env: ports: - name: web containerPort: 8008 protocol: TCP livenessProbe: httpGet: path: "/haproxy_test" port: "web" scheme: "HTTP" initialDelaySeconds: 1 periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: "/haproxy_test" port: "web" scheme: "HTTP" initialDelaySeconds: 1 periodSeconds: 1 timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 64Mi volumeMounts: - name: "config" mountPath: "/usr/local/etc/haproxy" readOnly: true volumes: - name: "config" configMap: name: "opendesk-synapse-web" defaultMode: 420 ... --- # Source: opendesk-synapse-web/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-synapse-web" labels: app.kubernetes.io/name: opendesk-synapse-web helm.sh/chart: opendesk-synapse-web-6.1.3 app.kubernetes.io/instance: opendesk-synapse-web app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "60" nginx.ingress.kubernetes.io/proxy-send-timeout: "60" nginx.org/client-max-body-size: 100M nginx.org/proxy-read-timeout: 60s nginx.org/proxy-send-timeout: 60s spec: ingressClassName: "nginx" tls: - hosts: - "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/_matrix" pathType: "Prefix" backend: service: name: opendesk-synapse-web port: name: web - path: "/_synapse" pathType: "Prefix" backend: service: name: opendesk-synapse-web port: name: web ... --- # Source: opendesk-synapse/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-synapse" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: opendesk-synapse/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-synapse" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm stringData: app-service-intercom-service.yaml: | as_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f hs_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f id: intercom-service namespaces: users: - exclusive: false regex: '@.*' sender_localpart: intercom-service url: null app-service-ox-appsuite.yaml: | as_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d hs_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d id: ox-appsuite namespaces: users: - exclusive: false regex: '@.*' sender_localpart: ox-appsuite url: null ... --- # Source: opendesk-synapse/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-synapse-database-password" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm stringData: pgpass.conf: "postgresql:5432:matrix:matrix_user:5cd0a266029154912dd660f748137982a924e6f5" ... --- # Source: opendesk-synapse/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-synapse-main" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm data: instance_template.yaml: |- worker_app: synapse.app.homeserver database: name: "psycopg2" args: user: matrix_user passfile: "/config/rendered/pgpass.conf" database: matrix host: postgresql port: 5432 channel_binding: prefer connect_timeout: 10 client_encoding: auto application_name: REPLACE_HOSTNAME keepalives: 1 keepalives_idle: 10 keepalives_interval: 10 keepalives_count: 3 replication: false gssencmode: prefer sslmode: prefer sslcompression: 0 ssl_min_protocol_version: TLSv1.2 cp_min: 3 cp_max: 5 --- # Source: opendesk-synapse/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-synapse-shared" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm data: homeserver.yaml: | server_name: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de public_baseurl: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de report_stats: false signing_key_path: /media/generatedSecrets/signingKey log_config: "/config/log_config.yaml" email: enable_notifs: true enable_tls: false force_tls: false require_transport_security: false notif_from: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" smtp_host: "postfix.yschmidt-opendesk-argo.svc.cluster.local" smtp_port: "25" smtp_user: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" smtp_pass: "1884bda7fb31c726adcd094399ab63319e9ca56f" ip_range_blacklist: - '127.0.0.0/8' - '10.0.0.0/8' - '172.16.0.0/12' - '192.168.0.0/16' - '100.64.0.0/10' - '192.0.0.0/24' - '169.254.0.0/16' - '192.88.99.0/24' - '198.18.0.0/15' - '192.0.2.0/24' - '198.51.100.0/24' - '203.0.113.0/24' - '224.0.0.0/4' - '::1/128' - 'fe80::/10' - 'fc00::/7' - '2001:db8::/32' - 'ff00::/8' - 'fec0::/10' listeners: - port: 8008 tls: false bind_addresses: ['0.0.0.0'] type: http x_forwarded: true resources: - names: [client] compress: false - port: 8448 tls: false bind_addresses: ['0.0.0.0'] type: http x_forwarded: true resources: - names: [federation] compress: false - port: 9093 tls: false bind_addresses: ['0.0.0.0'] type: http x_forwarded: false resources: - names: [replication] compress: false - type: metrics port: 9001 bind_addresses: ['0.0.0.0'] - port: 8080 tls: false bind_addresses: ['0.0.0.0'] type: http x_forwarded: false resources: - names: [] compress: false enabled_media_repo: True media_store_path: "/media/media_store" uploads_path: "/media/uploads" enable_metrics: true registration_shared_secret_path: "/media/generatedSecrets/sharedSecret" use_presence: false presence: enabled: false enable_set_displayname: true require_auth_for_profile_requests: true limit_profile_requests_to_users_who_share_rooms: false allow_public_rooms_without_auth: false allow_public_rooms_over_federation: false room_list_publication_rules: - "action": "allow" federation_domain_whitelist: sso: client_whitelist: - https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de oidc_providers: - idp_id: oidc idp_name: OIDC issuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk client_id: opendesk-matrix client_secret: "b4f6604310ebd2d06b5fc8832ae1095e43481b04" scopes: - openid - opendesk-matrix-scope allow_existing_users: true user_mapping_provider: config: subject_template: "{{ user.opendesk_useruuid }}" display_name_template: "{{ user.name }}" localpart_template: "{{ user.opendesk_username }}" email_template: "{{ user.email }}" backchannel_logout_enabled: true backchannel_logout_ignore_sub: true password_config: enabled: true localdb_enabled: true turn_uris: turn_username: "" turn_password: "" turn_user_lifetime: 1h turn_allow_guests: true allow_guest_access: true modules: - module: synapse_guest_module.GuestModule config: display_name_suffix: ' (Gast)' instance_map: main: host: opendesk-synapse port: 9093 send_federation: True start_pushers: True app_service_config_files: - /secrets/app-service-intercom-service.yaml - /secrets/app-service-ox-appsuite.yaml rc_login: account: burst_count: 8 per_second: 2 address: burst_count: 12 per_second: 2 room_prejoin_state: additional_event_types: - m.space.parent - net.nordeck.meetings.metadata - m.room.power_levels user_directory: enabled: true search_all_users: true log_config.yaml: | version: 1 formatters: precise: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' handlers: console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: level: "INFO" root: level: "INFO" handlers: - console disable_existing_loggers: false ... --- # Source: opendesk-synapse/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-synapse" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" clusterIP: None ports: - name: "synapse-health" port: 8080 targetPort: 8080 protocol: "TCP" - name: "synapse-http" port: 8008 targetPort: 8008 protocol: "TCP" - name: "synapse-metrics" port: 9001 targetPort: 9001 protocol: "TCP" - name: "synapse-repl" port: 9093 targetPort: 9093 protocol: "TCP" selector: app.kubernetes.io/name: opendesk-synapse app.kubernetes.io/instance: opendesk-synapse ... --- # Source: opendesk-synapse/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-synapse-federation" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm spec: type: "ClusterIP" ports: - name: "federation" port: 8448 targetPort: 8448 protocol: "TCP" selector: app.kubernetes.io/name: opendesk-synapse app.kubernetes.io/instance: opendesk-synapse ... --- # Source: opendesk-synapse/templates/statefulset.yaml apiVersion: apps/v1 kind: "StatefulSet" metadata: name: "opendesk-synapse" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm spec: replicas: 1 serviceName: opendesk-synapse selector: matchLabels: app.kubernetes.io/name: opendesk-synapse app.kubernetes.io/instance: opendesk-synapse updateStrategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 7e90bcb43ebf501dd9715bacbc262849eca65ba5a3a1470821263d9fbb36e8f0 checksum/secret: d256494dce085a3e07453ccda7bd396ee7629298a316508e5030eaaec90e2aa0 labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 10991 serviceAccountName: "opendesk-synapse" terminationGracePeriodSeconds: 30 initContainers: - name: "install-guest-module" image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module:1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea" imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 10991 runAsNonRoot: true runAsUser: 10991 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 256Mi volumeMounts: - name: "synapse-modules" mountPath: "/modules" containers: - name: "synapse" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 10991 runAsNonRoot: true runAsUser: 10991 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse:v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc" imagePullPolicy: IfNotPresent command: - "bash" - "-cx" - | mkdir -p /media/generatedSecrets cp /secret/pgpass.conf /config/rendered/pgpass.conf chmod 0400 /config/rendered/pgpass.conf sed "s/REPLACE_HOSTNAME/$(hostname -s)/g" /config/instance_template.yaml > /config/rendered/instance.yaml /start.py run --config-path=/config/homeserver.yaml --config-path=/config/rendered/instance.yaml env: - name: "SYNAPSE_WORKER" value: "synapse.app.homeserver" - name: "SSL_CERT_DIR" value: "/etc/ssl/certs" - name: "PYTHONPATH" value: "/modules" ports: - name: "synapse-health" containerPort: 8080 protocol: TCP - name: "synapse-http" containerPort: 8008 protocol: TCP - name: "synapse-metrics" containerPort: 9001 protocol: TCP - name: "synapse-repl" containerPort: 9093 protocol: TCP livenessProbe: httpGet: path: "/health" port: "synapse-health" scheme: "HTTP" initialDelaySeconds: 1 periodSeconds: 6 timeoutSeconds: 2 failureThreshold: 8 successThreshold: 1 readinessProbe: httpGet: path: "/health" port: "synapse-health" scheme: "HTTP" initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 2 failureThreshold: 8 successThreshold: 1 resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 256Mi volumeMounts: - mountPath: "/config/homeserver.yaml" name: "shared-config" readOnly: true subPath: "homeserver.yaml" - mountPath: "/config/instance_template.yaml" name: "process-type-config" readOnly: true subPath: "instance_template.yaml" - mountPath: "/config/log_config.yaml" name: "shared-config" readOnly: true subPath: "log_config.yaml" - mountPath: "/secrets/" name: "external-secrets" readOnly: true - mountPath: "/secret/pgpass.conf" name: "database-password" readOnly: true subPath: "pgpass.conf" - mountPath: "/config/rendered" name: "rendered-config" - mountPath: "/media" name: "media" - mountPath: "/tmp" name: "tmp" - name: "synapse-modules" mountPath: "/modules" volumes: - name: "external-secrets" secret: secretName: "opendesk-synapse" defaultMode: 420 - name: "database-password" secret: secretName: "opendesk-synapse-database-password" defaultMode: 420 - name: "shared-config" configMap: name: "opendesk-synapse-shared" defaultMode: 420 - name: "process-type-config" configMap: name: "opendesk-synapse-main" defaultMode: 420 - name: "rendered-config" emptyDir: medium: "Memory" sizeLimit: "50Mi" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" - name: "synapse-modules" emptyDir: medium: "Memory" sizeLimit: "50Mi" volumeClaimTemplates: - metadata: name: "media" spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: opendesk-synapse/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "opendesk-synapse" labels: app.kubernetes.io/name: opendesk-synapse helm.sh/chart: opendesk-synapse-6.1.3 app.kubernetes.io/instance: opendesk-synapse app.kubernetes.io/managed-by: Helm spec: ingressClassName: "nginx" tls: - hosts: - "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/" pathType: "Prefix" backend: service: name: opendesk-synapse-federation port: name: federation ... --- # Source: opendesk-synapse-create-account/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-matrix-user-verification-service-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap app.kubernetes.io/managed-by: Helm ... --- # Source: opendesk-synapse-create-account/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-matrix-user-verification-service-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap app.kubernetes.io/managed-by: Helm stringData: password: "3187b7b18610762c770a46421965e3a7e6ce93f7" ... --- # Source: opendesk-synapse-create-account/templates/role.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "Role" metadata: namespace: "yschmidt-opendesk-argo" name: "opendesk-matrix-user-verification-service-bootstrap" rules: # needed to execute commands inside pod - apiGroups: [""] resources: - "pods" resourceNames: ["opendesk-synapse-0"] verbs: ["get"] - apiGroups: [""] resources: - "pods/exec" resourceNames: ["opendesk-synapse-0"] verbs: ["create"] # needed to create and replace the secret - apiGroups: [""] resources: - "secrets" verbs: ["create"] - apiGroups: [""] resources: - "secrets" resourceNames: - "opendesk-matrix-user-verification-service-account" verbs: ["delete"] ... --- # Source: opendesk-synapse-create-account/templates/rolebinding.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "RoleBinding" metadata: name: "opendesk-matrix-user-verification-service-bootstrap" namespace: "yschmidt-opendesk-argo" roleRef: # points to the ClusterRole apiGroup: "rbac.authorization.k8s.io" kind: "Role" name: "opendesk-matrix-user-verification-service-bootstrap" subjects: # points to the ServiceAccount - kind: "ServiceAccount" name: "opendesk-matrix-user-verification-service-bootstrap" namespace: "yschmidt-opendesk-argo" # ns of service account ... --- # Source: opendesk-synapse-create-account/templates/delete-job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-matrix-user-verification-service-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "pre-delete" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded "argocd.argoproj.io/hook": "Skip" spec: ttlSecondsAfterFinished: 60 template: spec: serviceAccountName: "opendesk-matrix-user-verification-service-bootstrap" containers: - name: "opendesk-synapse-create-account" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 256Mi tty: true env: - name: NAMESPACE value: "yschmidt-opendesk-argo" - name: SECRET_NAME value: "opendesk-matrix-user-verification-service-account" command: - "/bin/bash" - "-c" - | kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found restartPolicy: Never backoffLimit: 4 ... --- # Source: opendesk-synapse-create-account/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-matrix-user-verification-service-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "post-install" "argocd.argoproj.io/hook": "Sync" spec: ttlSecondsAfterFinished: 60 template: spec: serviceAccountName: "opendesk-matrix-user-verification-service-bootstrap" containers: - name: "opendesk-synapse-create-account" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 256Mi tty: true env: - name: "NAMESPACE" value: "yschmidt-opendesk-argo" - name: "SYNAPSE_POD" value: "opendesk-synapse-0" - name: "MATRIX_USERNAME" value: "uvs" - name: "MATRIX_PASSWORD" valueFrom: secretKeyRef: name: "opendesk-matrix-user-verification-service-bootstrap" key: "password" - name: "DEVICE_ID" value: "DEFAULT" - name: "SECRET_NAME" value: "opendesk-matrix-user-verification-service-account" command: - "/bin/bash" - "-c" - | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ -- bash -c 'curl -sf http://localhost:8008/health'; do echo "waiting for container to be alive..." sleep 1 done ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ -- bash -c " echo \"create the user ${MATRIX_USERNAME} if not exists\" register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true RESULT='' ACCESS_TOKEN='' MATRIX_USER_ID='' create_user() { RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login) ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p') MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p') if [ -z "\${ACCESS_TOKEN}" ] then return 1 else return 0 fi } echo \"login as user ${MATRIX_USERNAME}\" until create_user do echo \$RESULT echo 'waiting for user to login...' sleep 5 done echo \"disable rate limiting for user ${MATRIX_USERNAME}\" until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit do echo 'waiting for rate limit to be set...' sleep 5 done echo "\n" echo \$ACCESS_TOKEN " | tee /dev/tty | tail -1) kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN volumeMounts: - name: "tmp" mountPath: "/tmp" restartPolicy: "Never" volumes: - name: "tmp" emptyDir: medium: "Memory" backoffLimit: 4 ... --- # Source: opendesk-matrix-user-verification-service/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-matrix-user-verification-service" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-matrix-user-verification-service helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: opendesk-matrix-user-verification-service/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "opendesk-matrix-user-verification-service" labels: app.kubernetes.io/name: opendesk-matrix-user-verification-service helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service app.kubernetes.io/managed-by: Helm data: {} ... --- # Source: opendesk-matrix-user-verification-service/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "opendesk-matrix-user-verification-service" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-matrix-user-verification-service helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: opendesk-matrix-user-verification-service app.kubernetes.io/instance: opendesk-matrix-user-verification-service ... --- # Source: opendesk-matrix-user-verification-service/templates/deployment.yaml apiVersion: "apps/v1" kind: "Deployment" metadata: name: "opendesk-matrix-user-verification-service" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-matrix-user-verification-service helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: opendesk-matrix-user-verification-service app.kubernetes.io/instance: opendesk-matrix-user-verification-service strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 225323de6c98cae082cc08ad900b49fb0e713bc64fc94525e8bdcc92b8e05d4c labels: app.kubernetes.io/name: opendesk-matrix-user-verification-service helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 app.kubernetes.io/instance: opendesk-matrix-user-verification-service app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: "opendesk-matrix-user-verification-service" containers: - name: "uvs" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service:v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008" imagePullPolicy: "IfNotPresent" env: - name: UVS_HOMESERVER_URL value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: UVS_ACCESS_TOKEN valueFrom: secretKeyRef: key: access_token name: opendesk-matrix-user-verification-service-account - name: UVS_DISABLE_IP_BLACKLIST value: "true" livenessProbe: httpGet: path: /health port: http initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: /health port: http initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 3000 protocol: TCP resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi volumeMounts: volumes: ... --- # Source: matrix-neoboard-widget/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: matrix-neoboard-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neoboard-widget helm.sh/chart: matrix-neoboard-widget-3.5.1 app.kubernetes.io/instance: matrix-neoboard-widget app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: matrix-neoboard-widget/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "matrix-neoboard-widget" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neoboard-widget helm.sh/chart: matrix-neoboard-widget-3.5.1 app.kubernetes.io/instance: matrix-neoboard-widget app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: matrix-neoboard-widget app.kubernetes.io/instance: matrix-neoboard-widget ... --- # Source: matrix-neoboard-widget/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: matrix-neoboard-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neoboard-widget helm.sh/chart: matrix-neoboard-widget-3.5.1 app.kubernetes.io/instance: matrix-neoboard-widget app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: matrix-neoboard-widget app.kubernetes.io/instance: matrix-neoboard-widget strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b labels: app.kubernetes.io/name: matrix-neoboard-widget helm.sh/chart: matrix-neoboard-widget-3.5.1 app.kubernetes.io/instance: matrix-neoboard-widget app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: matrix-neoboard-widget containers: - name: "widget" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget:2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5" imagePullPolicy: IfNotPresent env: - name: REACT_APP_HOME_SERVER_URL value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_PRIMARY_COLOR value: "#571EFA" - name: REACT_APP_LIGHT_PRIMARY_COLOR value: "#571EFA" - name: REACT_APP_DARK_PRIMARY_COLOR value: "#571EFA" livenessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 48Mi volumeMounts: - name: "cache" mountPath: "/var/cache/nginx" - name: "tmp" mountPath: "/tmp" volumes: - name: "cache" emptyDir: medium: "Memory" sizeLimit: "50Mi" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: matrix-neoboard-widget/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "matrix-neoboard-widget" labels: app.kubernetes.io/name: matrix-neoboard-widget helm.sh/chart: matrix-neoboard-widget-3.5.1 app.kubernetes.io/instance: matrix-neoboard-widget app.kubernetes.io/managed-by: Helm annotations: spec: ingressClassName: "nginx" tls: - hosts: - "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: matrix-neoboard-widget port: name: http ... --- # Source: matrix-neochoice-widget/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: matrix-neochoice-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neochoice-widget helm.sh/chart: matrix-neochoice-widget-3.5.1 app.kubernetes.io/instance: matrix-neochoice-widget app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: matrix-neochoice-widget/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "matrix-neochoice-widget" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neochoice-widget helm.sh/chart: matrix-neochoice-widget-3.5.1 app.kubernetes.io/instance: matrix-neochoice-widget app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: matrix-neochoice-widget app.kubernetes.io/instance: matrix-neochoice-widget ... --- # Source: matrix-neochoice-widget/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: matrix-neochoice-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neochoice-widget helm.sh/chart: matrix-neochoice-widget-3.5.1 app.kubernetes.io/instance: matrix-neochoice-widget app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: matrix-neochoice-widget app.kubernetes.io/instance: matrix-neochoice-widget strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b labels: app.kubernetes.io/name: matrix-neochoice-widget helm.sh/chart: matrix-neochoice-widget-3.5.1 app.kubernetes.io/instance: matrix-neochoice-widget app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: matrix-neochoice-widget containers: - name: "widget" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget:1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb" imagePullPolicy: IfNotPresent env: - name: REACT_APP_HOME_SERVER_URL value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_POLL_DESCRIPTION_REQUIRED value: "true" - name: REACT_APP_IGNORE_USER_IDS value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_PRIMARY_COLOR value: "#571EFA" livenessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi volumeMounts: - name: "cache" mountPath: "/var/cache/nginx" - name: "tmp" mountPath: "/tmp" volumes: - name: "cache" emptyDir: medium: "Memory" sizeLimit: "50Mi" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: matrix-neochoice-widget/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "matrix-neochoice-widget" labels: app.kubernetes.io/name: matrix-neochoice-widget helm.sh/chart: matrix-neochoice-widget-3.5.1 app.kubernetes.io/instance: matrix-neochoice-widget app.kubernetes.io/managed-by: Helm annotations: spec: ingressClassName: "nginx" tls: - hosts: - "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: matrix-neochoice-widget port: name: http ... --- # Source: matrix-neodatefix-widget/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: matrix-neodatefix-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-widget helm.sh/chart: matrix-neodatefix-widget-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-widget app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: matrix-neodatefix-widget/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "matrix-neodatefix-widget" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-widget helm.sh/chart: matrix-neodatefix-widget-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-widget app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: matrix-neodatefix-widget app.kubernetes.io/instance: matrix-neodatefix-widget ... --- # Source: matrix-neodatefix-widget/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: matrix-neodatefix-widget namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-widget helm.sh/chart: matrix-neodatefix-widget-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-widget app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: matrix-neodatefix-widget app.kubernetes.io/instance: matrix-neodatefix-widget strategy: type: RollingUpdate template: metadata: annotations: checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b labels: app.kubernetes.io/name: matrix-neodatefix-widget helm.sh/chart: matrix-neodatefix-widget-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-widget app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: matrix-neodatefix-widget containers: - name: "widget" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget:1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b" imagePullPolicy: IfNotPresent env: - name: REACT_APP_HOME_SERVER_URL value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_API_BASE_URL value: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_BOT_USER_ID value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: REACT_APP_DISPLAY_ALL_MEETINGS value: "true" - name: REACT_APP_PRIMARY_COLOR value: "#571EFA" livenessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi volumeMounts: - name: "cache" mountPath: "/var/cache/nginx" - name: "tmp" mountPath: "/tmp" volumes: - name: "cache" emptyDir: medium: "Memory" sizeLimit: "50Mi" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: matrix-neodatefix-widget/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "matrix-neodatefix-widget" labels: app.kubernetes.io/name: matrix-neodatefix-widget helm.sh/chart: matrix-neodatefix-widget-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-widget app.kubernetes.io/managed-by: Helm annotations: spec: ingressClassName: "nginx" tls: - hosts: - "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: matrix-neodatefix-widget port: name: http ... --- # Source: opendesk-synapse-create-account/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "matrix-neodatefix-bot-bootstrap" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap app.kubernetes.io/managed-by: Helm ... --- # Source: opendesk-synapse-create-account/templates/secret.yaml kind: "Secret" apiVersion: "v1" metadata: name: "matrix-neodatefix-bot-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap app.kubernetes.io/managed-by: Helm stringData: password: "f14e2756afd0fba205bd037f1d2363e7cedc8f89" ... --- # Source: opendesk-synapse-create-account/templates/role.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "Role" metadata: namespace: "yschmidt-opendesk-argo" name: "matrix-neodatefix-bot-bootstrap" rules: # needed to execute commands inside pod - apiGroups: [""] resources: - "pods" resourceNames: ["opendesk-synapse-0"] verbs: ["get"] - apiGroups: [""] resources: - "pods/exec" resourceNames: ["opendesk-synapse-0"] verbs: ["create"] # needed to create and replace the secret - apiGroups: [""] resources: - "secrets" verbs: ["create"] - apiGroups: [""] resources: - "secrets" resourceNames: - "matrix-neodatefix-bot-account" verbs: ["delete"] ... --- # Source: opendesk-synapse-create-account/templates/rolebinding.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "RoleBinding" metadata: name: "matrix-neodatefix-bot-bootstrap" namespace: "yschmidt-opendesk-argo" roleRef: # points to the ClusterRole apiGroup: "rbac.authorization.k8s.io" kind: "Role" name: "matrix-neodatefix-bot-bootstrap" subjects: # points to the ServiceAccount - kind: "ServiceAccount" name: "matrix-neodatefix-bot-bootstrap" namespace: "yschmidt-opendesk-argo" # ns of service account ... --- # Source: opendesk-synapse-create-account/templates/delete-job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "matrix-neodatefix-bot-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "pre-delete" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded "argocd.argoproj.io/hook": "Skip" spec: ttlSecondsAfterFinished: 60 template: spec: serviceAccountName: "matrix-neodatefix-bot-bootstrap" containers: - name: "opendesk-synapse-create-account" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 256Mi tty: true env: - name: NAMESPACE value: "yschmidt-opendesk-argo" - name: SECRET_NAME value: "matrix-neodatefix-bot-account" command: - "/bin/bash" - "-c" - | kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found restartPolicy: Never backoffLimit: 4 ... --- # Source: opendesk-synapse-create-account/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "matrix-neodatefix-bot-bootstrap" labels: app.kubernetes.io/name: opendesk-synapse-create-account helm.sh/chart: opendesk-synapse-create-account-6.1.3 app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap app.kubernetes.io/managed-by: Helm annotations: "helm.sh/hook": "post-install" "argocd.argoproj.io/hook": "Sync" spec: ttlSecondsAfterFinished: 60 template: spec: serviceAccountName: "matrix-neodatefix-bot-bootstrap" containers: - name: "opendesk-synapse-create-account" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" imagePullPolicy: "IfNotPresent" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 256Mi tty: true env: - name: "NAMESPACE" value: "yschmidt-opendesk-argo" - name: "SYNAPSE_POD" value: "opendesk-synapse-0" - name: "MATRIX_USERNAME" value: "meetings-bot" - name: "MATRIX_PASSWORD" valueFrom: secretKeyRef: name: "matrix-neodatefix-bot-bootstrap" key: "password" - name: "DEVICE_ID" value: "DEFAULT" - name: "SECRET_NAME" value: "matrix-neodatefix-bot-account" command: - "/bin/bash" - "-c" - | # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" # SPDX-License-Identifier: Apache-2.0 until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ -- bash -c 'curl -sf http://localhost:8008/health'; do echo "waiting for container to be alive..." sleep 1 done ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ -- bash -c " echo \"create the user ${MATRIX_USERNAME} if not exists\" register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true RESULT='' ACCESS_TOKEN='' MATRIX_USER_ID='' create_user() { RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login) ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p') MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p') if [ -z "\${ACCESS_TOKEN}" ] then return 1 else return 0 fi } echo \"login as user ${MATRIX_USERNAME}\" until create_user do echo \$RESULT echo 'waiting for user to login...' sleep 5 done echo \"disable rate limiting for user ${MATRIX_USERNAME}\" until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit do echo 'waiting for rate limit to be set...' sleep 5 done echo "\n" echo \$ACCESS_TOKEN " | tee /dev/tty | tail -1) kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN volumeMounts: - name: "tmp" mountPath: "/tmp" restartPolicy: "Never" volumes: - name: "tmp" emptyDir: medium: "Memory" backoffLimit: 4 ... --- # Source: matrix-neodatefix-bot/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: matrix-neodatefix-bot namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm annotations: automountServiceAccountToken: false ... --- # Source: matrix-neodatefix-bot/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "matrix-neodatefix-bot-config" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm data: default_events.json: |+ { "state_events": [ { "type": "m.room.power_levels", "state_key": "", "content": { "events": { "net.nordeck.meetings.metadata": 100, "net.nordeck.whiteboard.sessions": 0, "net.nordeck.whiteboard": 0, "net.nordeck.meetings.meeting.update": 100, "net.nordeck.meetings.meeting.close": 100, "m.room.tombstone": 100, "im.vector.modular.widgets": 50, "net.nordeck.meetings.meeting.widgets.handle": 50, "io.element.widgets.layout": 50, "net.nordeck.meetings.meeting.participants.handle": 50, "net.nordeck.meetings.breakoutsessions.create": 25, "net.nordeck.meetings.meeting.change.message_permissions": 25, "net.nordeck.meetings.sub_meetings.send_message": 50, "net.nordeck.poll": 50, "net.nordeck.poll.settings": 50, "net.nordeck.poll.vote": 25 }, "users_default": 25, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50 } }, { "type": "m.room.history_visibility", "content": { "history_visibility": "shared" } }, { "type": "m.room.guest_access", "content": { "guest_access": "forbidden" } }, { "type": "m.room.join_rules", "content": { "join_rule": "knock" } }, { "type": "im.vector.modular.widgets", "state_key": "jitsi", "content": { "type": "jitsi", "url": "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html", "name": "Videokonferenz", "data": { "domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de", "conferenceId": "{{base32_room_id}}", "roomName": "{{title}}", "startWithAudioMuted": "true", "startWithVideoMuted": "true", "auth": "openidtoken-jwt" } } }, { "type": "im.vector.modular.widgets", "state_key": "neochoice", "content": { "type": "net.nordeck.neochoice", "url": "https://matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url", "name": "Abstimmungen", "avatar_url": "../widget-images/poll.png" } }, { "type": "im.vector.modular.widgets", "state_key": "neoboard", "content": { "type": "net.nordeck.neoboard", "url": "https://matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url", "name": "Whiteboard", "avatar_url": "../widget-images/neoboard.png" } } ], "room_events": [] } default_widget_layouts.json: | [ { "widgetIds": ["jitsi"], "layouts": { "jitsi": { "container": "top", "index": 0, "width": 100, "height": 100 } } }, { "widgetIds": ["neoboard"], "layouts": { "neoboard": { "container": "top", "index": 0, "width": 100, "height": 100 } } }, { "widgetIds": ["jitsi", "neoboard"], "layouts": { "jitsi": { "container": "top", "index": 0, "width": 50, "height": 100 }, "neoboard": { "container": "top", "index": 0, "width": 50, "height": 100 } } }, { "widgetIds": ["jitsi", "neochoice"], "layouts": { "jitsi": { "container": "top", "index": 0, "width": 100, "height": 100 } } }, { "widgetIds": ["jitsi", "neoboard", "neochoice"], "layouts": { "jitsi": { "container": "top", "index": 0, "width": 50, "height": 100 }, "neoboard": { "container": "top", "index": 0, "width": 50, "height": 100 } } } ] --- # Source: matrix-neodatefix-bot/templates/configmap.yaml kind: "ConfigMap" apiVersion: "v1" metadata: name: "matrix-neodatefix-bot-widget-images" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm binaryData: neoboard.png: |- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEfklEQVRYCcVXfVBUVRT/7RNEiBAisAEZ/GKkqCSjBmjcmKzAqRnGBsYwzdSykGCQcESnBKfBQYXIzNYPItPNxmSicJDUxsJJ46OSj7FkREEjRGlZQViElaV37nCXfbvvwS6DdP54795zzv39znv3nXfPUQ2KgiE5ef5P7Ck7g3MXL6O9sxumYRN3GdNdUKngM9UdkcGz8c4iNV584hEzjooC6DMa8eauQ9D+XGU23MvBsqinUZC8HC7OzhCIaCLJiY8elDhJVCf+uDAYnfkJm9DlsUA/ZMTFIMjPF/TqxkNoKy+13kRO0Q+ov9pqhjyxJQWqxdmaweKKGqYk8orcDLi5TDY7jefA0NeP8PQccxCLw0Mh0AfHhZ78XpETB2ETBxfidqKvnQu9dmvRd/dgd2k5fqpvAD3B4zP8kbjoWYTOCrB2tWtuyUHcgmWqWe95XVMLQpK2YPNXJegy9MJJEHDwdAXC0rai8NRZuwitnSw5iNvJ2oHPe8Wnjc3WsFSp2/UBHg30Z6ZW3S0s2b4fa3ZrMf1BL0lO87WO3Fkayi04evZ3NN/UYc/apWZy8vPz9kRp5ruY4euNFfkH0HG7R2653TrFACobmhmIOiTIBszDzRV5q+LQdqsLW4+W2dgdUSgGwEF6+418KLnHiikUMXcmNMfL0dnTK7E5MlEMIDx4JsMp/vW8Il7SS1EwiAGWVNUq+oxmUAwg/pknMV3c7w1fFuNae4cszpIFYdi79jVEWxwuso4jKBUDmDLZGQdS32DpF715J/7R6W1gnCZNwpqYBfD19EB6YRHa9J02PqMpFAOghQvnBePgupVovN4u/kK3obKhSRHvWFUd5qdmo+bK34o+coYRA6AFr6qfQllWMrrv9EG9MZfVC3JAK56LwHV9F6I25YF+YPbKqAEQ0POhD6M6byPm+k9DouYw1hV8A5PJJOF4W9wK9ykumP2QDwJ8vNAonn4XW9okPnITuwKghXPEc4JOygTxjXxcchrJe49I8Lw93FGZuwGVeRkYMA0iLmcfItdvx2Vx+0YSuwMgEDrNtGkr8UpEKD4rK0dpdb0Ee5r4MWqOn8G8lA9R29wCfY8BCTsKYLw7IPGznDgUAC0UxANpX9Iy3O/qgqyvj1lioemGDin7j6C1Yzgbqhuv4n3t9xI/y4nDAdBiet1xkfPxW+M13DbcMeOFBQWyLTIrhgY7vj2JH2v+slaz+ZgCoJVe7m4MYMDqY9QkLmUHFTMOXajsfj3/C+i6hmsPbh9TAHRUf1dRy7LCcygQDjj1PlccTl/Nageuozul6Fufai1VbOxwAP3Gu3hB/DNeufEvshJetgEkRUTwLGTK2Kj2LDx1TrJGsK5QJFaZCa+g8lfHs5+UjAtTbYqPgTpkjo2ZsocLcQvUsXCh0nk0oTPil23rkRq7cERXyhZt2ip4iluiJMQtULvEhep2KjzHSwJ8HmApq4RH3BPSmLz3eRHKL1yyiYM1JtQbLv+ocML6Qh4F9YeHxC1iWUCNIikmSnhzSnysO+bE/0d7/h9DXZ8X7llkrwAAAABJRU5ErkJggg== poll.png: |- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNpiZIACpR1dAkCqAIjjgViBgTbgARAvBOIJ9zzKPoAEGKGWgyxcD8QGDPQBF4A4EeiIC4xQn++no+XIjnBkggY7vS1ngNpZwASN84EC8Uw0THDEAAUmhgEGNHWAJq/YwDmgS8eTYYtVPBjzsbDT1wEgy4OldeChsMwsAqcjmGhpOXJUJCqY0N4B2CyHgWufXtHWAfgsL7uynWH3q9ukOwAUdPkq1gwynPwUWb726RXSEyEs8eQpWzFsBqZkXFmKEstxOgA95YJoEB/dEZRajtMBbuKqGNkG3RHUsBynA3a9vM3w6c9PDHGYI2YYBlDFcpwOuP75FUPUqRU4HeEqpkoVy/EmQnyOoJblBLMhsY4g13KiCiJCjqDEcqJLQlyOoNRykopidEdQw3JwsxzYKv5PigZQLuBj5WB48v0jVeoQFlI1gEKA2Jwx4E0yYh3wYADtf8AE7asNFFgIcsAEaDeJ3gBk5wQmaC81kc6OgHVOPzAOdPccIMAAntC9XAhEIcEAAAAASUVORK5CYII= ... --- # Source: matrix-neodatefix-bot/templates/persistentvolumeclaim.yaml apiVersion: "v1" kind: "PersistentVolumeClaim" metadata: name: "matrix-neodatefix-bot" annotations: labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" ... --- # Source: matrix-neodatefix-bot/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: "matrix-neodatefix-bot" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm annotations: spec: type: "ClusterIP" ports: - name: "http" port: 80 targetPort: "http" protocol: "TCP" selector: app.kubernetes.io/name: matrix-neodatefix-bot app.kubernetes.io/instance: matrix-neodatefix-bot ... --- # Source: matrix-neodatefix-bot/templates/deployment.yaml apiVersion: apps/v1 kind: "Deployment" metadata: name: matrix-neodatefix-bot namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: matrix-neodatefix-bot app.kubernetes.io/instance: matrix-neodatefix-bot strategy: type: Recreate template: metadata: annotations: checksum/configmap: e2562485c3184f39461d0cdec7a81497ef67b9a091b8dcd5e3cdfd268aea289b labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm spec: securityContext: fsGroup: 101 fsGroupChangePolicy: Always serviceAccountName: matrix-neodatefix-bot containers: - name: "widget" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 101 runAsNonRoot: true runAsUser: 101 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot:2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96" imagePullPolicy: IfNotPresent env: - name: LOG_LEVEL value: "info" - name: ENABLE_PRIVATE_ROOM_ERROR_SENDING value: "false" - name: STORAGE_FILE_DATA_PATH value: "/app/storage" - name: "ENABLE_CRYPTO" value: "false" - name: HOMESERVER_URL value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: MEETINGWIDGET_URL value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url" - name: MEETINGWIDGET_COCKPIT_URL value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/cockpit/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url" - name: BREAKOUT_SESSION_WIDGET_URL value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url" - name: MATRIX_LINK_SHARE value: "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/room/" - name: MEETINGWIDGET_NAME value: "Terminplaner" - name: MEETINGWIDGET_COCKPIT_NAME value: "Meeting Steuerung" - name: BREAKOUT_SESSION_WIDGET_NAME value: "Breakoutsessions" - name: CALENDAR_ROOM_NAME value: "Terminplaner" - name: BOT_DISPLAYNAME value: "Meetings Bot" - name: OPEN_XCHANGE_MEETING_URL_TEMPLATE value: "https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/#app=io.ox/calendar&id={{id}}&folder={{folder}}" - name: ENABLE_GUEST_USER_POWER_LEVEL_CHANGE value: "true" # TODO: enable this if the room reaper is deployed #- name: AUTO_DELETION_OFFSET # value: 60 - name: ACCESS_TOKEN valueFrom: secretKeyRef: key: access_token name: matrix-neodatefix-bot-account livenessProbe: tcpSocket: port: "http" initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 readinessProbe: tcpSocket: port: "http" initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 10 successThreshold: 1 ports: - name: http containerPort: 3000 protocol: TCP resources: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 128Mi volumeMounts: - name: "data" mountPath: "/app/storage" - name: "config" mountPath: "/app/conf" - name: "widget-images" mountPath: "/app/widget-images" #- name: "tmp" # mountPath: "/tmp" volumes: - name: "data" persistentVolumeClaim: claimName: matrix-neodatefix-bot - name: config configMap: name: "matrix-neodatefix-bot-config" - name: widget-images configMap: name: "matrix-neodatefix-bot-widget-images" - name: "tmp" emptyDir: medium: "Memory" sizeLimit: "50Mi" ... --- # Source: matrix-neodatefix-bot/templates/ingress.yaml apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "matrix-neodatefix-bot" labels: app.kubernetes.io/name: matrix-neodatefix-bot helm.sh/chart: matrix-neodatefix-bot-3.5.1 app.kubernetes.io/instance: matrix-neodatefix-bot app.kubernetes.io/managed-by: Helm annotations: spec: ingressClassName: "nginx" tls: - hosts: - "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: matrix-neodatefix-bot port: name: http ... --- # Source: openproject/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: openproject labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" ... --- # Source: openproject/templates/secret_core.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-core" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: DATABASE_HOST: "postgresql" DATABASE_PORT: "5432" DATABASE_URL: "postgresql://openproject_user@postgresql:5432/openproject" OPENPROJECT_SEED_ADMIN_USER_PASSWORD: "487706602e4fedcb300a24af26a25be29bc8530c" OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: "false" OPENPROJECT_SEED_ADMIN_USER_NAME: "OpenProject Internal Admin" OPENPROJECT_SEED_ADMIN_USER_MAIL: "openproject-admin@swp-domain.internal" OPENPROJECT_HTTPS: "true" OPENPROJECT_SEED_LOCALE: "de" OPENPROJECT_HOST__NAME: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_HSTS: "true" OPENPROJECT_RAILS__CACHE__STORE: "memcache" OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "" POSTGRES_STATEMENT_TIMEOUT: "120s" ... --- # Source: openproject/templates/secret_cron_environment.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-cron-environment" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: # Additional environment variables IMAP_HOST: IMAP_PORT: "993" IMAP_USERNAME: IMAP_PASSWORD: ... --- # Source: openproject/templates/secret_environment.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-environment" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: # Additional environment variables OPENPROJECT_APP__TITLE: "Projekte - openDesk" OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: "9e8d27af068f15dce7b940241ddac82785935239" OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: "abbb47d550ea03225cb109388f296cbc3a4b66eb" OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: "desc" OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp" OPENPROJECT_HOME__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/" OPENPROJECT_LOGIN__REQUIRED: "true" OPENPROJECT_LOG__LEVEL: "info" OPENPROJECT_MAIL__FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true" OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: "https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/" OPENPROJECT_SEED_DESIGN_ACCENT__COLOR: "#571EFA" OPENPROJECT_SEED_DESIGN_FAVICON: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo=" OPENPROJECT_SEED_DESIGN_HEADER__BG__COLOR: "#ffffff" OPENPROJECT_SEED_DESIGN_HEADER__ITEM__BG__HOVER__COLOR: "#f5f5f5" OPENPROJECT_SEED_DESIGN_LOGO: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==" OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__COLOR: "#ffffff" OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__HOVER__BACKGROUND: "#f5f5f5" OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__SELECTED__BACKGROUND: "#571EFA" OPENPROJECT_SEED_DESIGN_PRIMARY__BUTTON__COLOR: "#571EFA" OPENPROJECT_SEED_LDAP_OPENDESK_ADMIN__MAPPING: "opendeskProjectmanagementAdmin" OPENPROJECT_SEED_LDAP_OPENDESK_BASEDN: "dc=swp-ldap,dc=internal" OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: "9c96f85df1170aaa929a6763111ff9472b2d109f" OPENPROJECT_SEED_LDAP_OPENDESK_BINDUSER: "uid=ldapsearch_openproject,cn=users,dc=swp-ldap,dc=internal" OPENPROJECT_SEED_LDAP_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementUser)(opendeskProjectmanagementEnabled=TRUE))" OPENPROJECT_SEED_LDAP_OPENDESK_FIRSTNAME__MAPPING: "givenName" OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_BASE: "dc=swp-ldap,dc=internal" OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementGroup)(opendeskProjectmanagementEnabled=TRUE))" OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_GROUP__ATTRIBUTE: "cn" OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_SYNC__USERS: "true" OPENPROJECT_SEED_LDAP_OPENDESK_HOST: "ums-ldap-server" OPENPROJECT_SEED_LDAP_OPENDESK_LASTNAME__MAPPING: "sn" OPENPROJECT_SEED_LDAP_OPENDESK_LOGIN__MAPPING: "uid" OPENPROJECT_SEED_LDAP_OPENDESK_MAIL__MAPPING: "mailPrimaryAddress" OPENPROJECT_SEED_LDAP_OPENDESK_PORT: "389" OPENPROJECT_SEED_LDAP_OPENDESK_SECURITY: "plain_ldap" OPENPROJECT_SEED_LDAP_OPENDESK_SYNC__USERS: "true" OPENPROJECT_SMTP__ADDRESS: "postfix.yschmidt-opendesk-argo.svc.cluster.local" OPENPROJECT_SMTP__AUTHENTICATION: "cram_md5" OPENPROJECT_SMTP__DOMAIN: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true" OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "none" OPENPROJECT_SMTP__PASSWORD: "1884bda7fb31c726adcd094399ab63319e9ca56f" OPENPROJECT_SMTP__PORT: "587" OPENPROJECT_SMTP__SSL: "false" OPENPROJECT_SMTP__USER__NAME: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_SOUVAP__NAVIGATION__SECRET: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json?base=https%3A//portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin" ... --- # Source: openproject/templates/secret_memcached.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-memcached" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: OPENPROJECT_CACHE__MEMCACHE__SERVER: "memcached:11211" ... --- # Source: openproject/templates/secret_oidc.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-oidc" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: # OpenID Connect settings OPENPROJECT_OPENID__CONNECT_KEYCLOAK_DISPLAY__NAME: "Keycloak" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_HOST: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_IDENTIFIER: "opendesk-openproject" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SECRET: "3621e456b58b341fe12689612e0ca7820974d274" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_AUTHORIZATION__ENDPOINT: "/realms/opendesk/protocol/openid-connect/auth" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_TOKEN__ENDPOINT: "/realms/opendesk/protocol/openid-connect/token" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_USERINFO__ENDPOINT: "/realms/opendesk/protocol/openid-connect/userinfo" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_END__SESSION__ENDPOINT: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SCOPE: "[openid,opendesk-openproject-scope]" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_ADMIN: "openproject_admin" OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_LOGIN: "opendesk_username" ... --- # Source: openproject/templates/secret_s3.yaml apiVersion: "v1" kind: "Secret" metadata: name: "openproject-s3" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" data: # reset data to make sure only keys defined below remain stringData: OPENPROJECT_ATTACHMENTS__STORAGE: fog OPENPROJECT_FOG_CREDENTIALS_PROVIDER: AWS OPENPROJECT_FOG_CREDENTIALS_AWS__ACCESS__KEY__ID: "openproject_user" OPENPROJECT_FOG_CREDENTIALS_AWS__SECRET__ACCESS__KEY: "200f449601dec2cd474d0695f4f802493413f322" OPENPROJECT_FOG_CREDENTIALS_ENDPOINT: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de OPENPROJECT_FOG_CREDENTIALS_HOST: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de OPENPROJECT_FOG_DIRECTORY: openproject OPENPROJECT_FOG_CREDENTIALS_REGION: eu-west-1 OPENPROJECT_FOG_CREDENTIALS_PATH__STYLE: "true" OPENPROJECT_FOG_CREDENTIALS_AWS__SIGNATURE__VERSION: "4" # remove use_iam_profile fallback after some point OPENPROJECT_FOG_CREDENTIALS_USE__IAM__PROFILE: "false" OPENPROJECT_FOG_CREDENTIALS_ENABLE__SIGNATURE__V4__STREAMING: "true" OPENPROJECT_DIRECT__UPLOADS: "true" ... --- # Source: openproject/templates/service.yaml apiVersion: "v1" kind: "Service" metadata: name: openproject labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" spec: type: ClusterIP ports: - port: 8080 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/name: openproject app.kubernetes.io/instance: openproject openproject/process: web ... --- # Source: openproject/templates/cron-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: openproject-cron labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: cron spec: replicas: 0 strategy: type: "Recreate" selector: matchLabels: app.kubernetes.io/name: openproject app.kubernetes.io/instance: openproject openproject/process: cron template: metadata: annotations: # annotate pods with env value checksums so changes trigger re-deployments checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 checksum/env-cron-environment: cac20d0a5e2341c45cc50011b86c87bf026d9e02f1fe21c701125559ec398556 labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: cron spec: securityContext: fsGroup: 1000 serviceAccountName: openproject volumes: - name: tmp # we can't use emptyDir due to the sticky bit issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi - name: app-tmp # we can't use emptyDir due to the sticky bit / world writable issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi initContainers: - name: wait-for-db securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment - secretRef: name: openproject-cron-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 command: - bash - /app/docker/prod/wait-for-db resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp containers: - name: "cron" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment - secretRef: name: openproject-cron-environment command: - bash - /app/docker/prod/cron env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "1Gi" cpu: "1" --- # Source: openproject/templates/web-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: openproject-web labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: web spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: openproject app.kubernetes.io/instance: openproject openproject/process: web template: metadata: annotations: # annotate pods with env value checksums so changes trigger re-deployments checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: web spec: securityContext: fsGroup: 1000 serviceAccountName: openproject volumes: - name: tmp # we can't use emptyDir due to the sticky bit issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi - name: app-tmp # we can't use emptyDir due to the sticky bit / world writable issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi initContainers: - name: wait-for-db securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 command: - bash - /app/docker/prod/wait-for-db resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp containers: - name: "openproject" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 command: - bash - /app/docker/prod/web volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp ports: - name: http containerPort: 8080 protocol: TCP livenessProbe: httpGet: path: "/health_checks/default" port: 8080 httpHeaders: # required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants - name: Host value: localhost initialDelaySeconds: 300 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 30 successThreshold: 1 readinessProbe: httpGet: path: "/health_checks/default" port: 8080 httpHeaders: # required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants - name: Host value: localhost initialDelaySeconds: 150 timeoutSeconds: 3 periodSeconds: 15 failureThreshold: 30 successThreshold: 1 resources: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 768Mi --- # Source: openproject/templates/worker-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: openproject-worker-default labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: worker-default spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: openproject app.kubernetes.io/instance: openproject openproject/process: worker-default template: metadata: annotations: # annotate pods with env value checksums so changes trigger re-deployments checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: worker-default spec: securityContext: fsGroup: 1000 serviceAccountName: openproject volumes: - name: tmp # we can't use emptyDir due to the sticky bit issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi - name: app-tmp # we can't use emptyDir due to the sticky bit / world writable issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi initContainers: - name: wait-for-db securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 command: - bash - /app/docker/prod/wait-for-db resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp containers: - name: "openproject" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment command: - bash - /app/docker/prod/worker env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 - name: "OPENPROJECT_GOOD_JOB_QUEUES" value: "" volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp resources: limits: cpu: 99 memory: 4Gi requests: cpu: 0.25 memory: 512Mi --- # Source: openproject/templates/seeder-job.yaml apiVersion: batch/v1 kind: Job metadata: name: openproject-seeder-1 labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: openproject-seeder spec: ttlSecondsAfterFinished: 6000 template: metadata: labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" openproject/process: seeder annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: HookSucceeded intents.otterize.com/service-name: openproject-seeder spec: securityContext: fsGroup: 1000 volumes: - name: tmp # we can't use emptyDir due to the sticky bit issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi - name: app-tmp # we can't use emptyDir due to the sticky bit / world writable issue # see: https://github.com/kubernetes/kubernetes/issues/110835 ephemeral: volumeClaimTemplate: metadata: creationTimestamp: null spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi initContainers: - name: check-db-ready image: "registry-1.docker.io/library/postgres:16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0" imagePullPolicy: IfNotPresent command: [ 'sh', '-c', 'until pg_isready -h $DATABASE_HOST -p $DATABASE_PORT -U openproject_user; do echo "waiting for database $DATABASE_HOST:$DATABASE_PORT"; sleep 2; done;' ] envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault containers: - name: seeder image: "registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969" imagePullPolicy: IfNotPresent args: - bash - /app/docker/prod/seeder envFrom: - secretRef: name: openproject-core - secretRef: name: openproject-oidc - secretRef: name: openproject-s3 - secretRef: name: openproject-memcached - secretRef: name: openproject-environment env: - name: OPENPROJECT_DB_PASSWORD value: 0b4d7caf9005abcc8df53519620dd00619de27f8 resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi volumeMounts: - mountPath: /tmp name: tmp - mountPath: /app/tmp name: app-tmp securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault restartPolicy: OnFailure --- # Source: openproject/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: openproject labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" annotations: nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "60" nginx.ingress.kubernetes.io/proxy-send-timeout: "60" nginx.org/client-max-body-size: 100M nginx.org/proxy-read-timeout: 60s nginx.org/proxy-send-timeout: 60s spec: ingressClassName: nginx tls: - hosts: - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: "opendesk-certificates-tls" rules: - host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: Prefix backend: service: name: openproject port: name: http ... --- # Source: openproject/templates/tests/test-connection.yaml apiVersion: "v1" kind: "Pod" metadata: name: "openproject-test-connection" labels: app.kubernetes.io/name: openproject helm.sh/chart: openproject-9.9.0 app.kubernetes.io/instance: openproject app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "15.5.0" annotations: "helm.sh/hook": test spec: containers: - name: "wget" image: "busybox" command: ['wget'] args: - '--no-verbose' - '--tries=1' - '--spider' - 'openproject:8080/health_check' restartPolicy: "Never" ... --- # Source: xwiki/templates/xwiki-sa.yaml apiVersion: v1 kind: ServiceAccount metadata: name: xwiki-sa --- # Source: xwiki/templates/secrets.yaml apiVersion: v1 kind: Secret metadata: name: xwiki labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: type: Opaque data: DB_PASSWORD: "Y2YwMzE3MDYzNmQxZmE4OTYxNzM3MGZlNTFhZWZjNDcwMjIxYWUyOA==" --- # Source: xwiki/templates/configmaps.yaml apiVersion: v1 kind: ConfigMap metadata: name: xwiki labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: data: DB_USER: "xwiki_user" DB_HOST: "postgresql:5432" DB_DATABASE: "xwiki" # --- # Source: xwiki/templates/initialization-configmaps.yaml apiVersion: v1 kind: ConfigMap metadata: name: xwiki-init-scripts labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: data: entrypoint: | #!/bin/bash ## # *Experimental* solution for custom properties. # With time we are looking other alternatives to setup this custom values. ## # Always execute "first_start" in order to get all new values keys from future versions. rm -f /usr/local/xwiki/data/xwiki.cfg rm -f /usr/local/xwiki/data/xwiki.properties rm -f /usr/local/xwiki/data/hibernate.cfg.xml # Reuse commands/resources from default entrypoint. source /usr/local/bin/docker-entrypoint.sh file_env 'CONTEXT_PATH' 'ROOT' if [ -d "/usr/local/tomcat" ]; then export AS_PATH=/usr/local/tomcat else export AS_PATH=/var/lib/jetty fi echo "Path: ${AS_PATH}" # Currently database preferences are replaced on hibernate (XML) file. # To prevent errors with special XML chars, replace all for respective encoded alternative. escapeXML() { echo "$1" | sed -e 's/&/\&/g' -e 's//\>/g' -e 's/"/\"/g' -e "s/'/\'/g" } if [[ -n "$DB_PASSWORD" ]]; then export DB_PASSWORD=$(escapeXML $DB_PASSWORD) fi if [[ -n "$JDBC_PARAMS" ]]; then export JDBC_PARAMS=$(escapeXML $JDBC_PARAMS) fi # Setup all default actions from first start first_start ## # On future versions, when LTS start have this method we can remove this from this script. # This method was requested on: https://github.com/xwiki/xwiki-docker/pull/36 ## function xwiki_replace_or_add() { local file_path="$1" local setting="$2" local new_value="$3" # Check if the setting exists in the file if grep -Eq "^ *#? *$setting=" "$file_path"; then # If the setting exists, replace the occurrence with the new value sed -i 's|^\( *#\? *\)'"$setting"'=.*$|'"$setting"'='"$new_value"'|g' "$file_path" else # If the setting doesn't exist, add it at the end of the file echo "$setting=$new_value" >> "$file_path" fi } # Add URL for Solr Remote instance # Backward compatibility for old image # Replace all values from keys defineded on customConfigs # If we detect extension, we loop over the array and add them xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.UID_attr' 'uid' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.base_DN' 'dc=swp-ldap,dc=internal' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_DN' 'uid=ldapsearch_xwiki,cn=users,dc=swp-ldap,dc=internal' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_pass' '8072148becdef928e46f5686560bbbcd9c9a4284' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.fields_mapping' 'last_name=sn,first_name=givenName,email=mailPrimaryAddress' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.groupcache_expiration' '300' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.photo_attribute' 'jpegPhoto' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.port' '389' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.server' 'ums-ldap-server' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.update_photo' '1' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.url.protocol' 'https' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'notifications.emails.live.graceTime' '5' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.clientid' 'opendesk-xwiki' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.token.auth_method' 'client_secret_basic' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.userinfo.method' 'GET' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.logoutMechanism' 'rpInitiated' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.provider' 'https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.scope' 'openid,opendesk-xwiki-scope' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.secret' 'af1243a89d9b55965b6395e3ab7cc6d004dbcdab' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.skipped' 'false' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.nameFormater' '${oidc.user.opendesk_username._clean._lowerCase}' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.subjectFormater' '${oidc.user.opendesk_username._lowerCase}' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.userinfoclaims' 'xwiki_user_accessibility,xwiki_user_company,xwiki_user_displayHiddenDocuments,xwiki_user_editor,xwiki_user_usertype' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.autoStart' 'false' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.homePath' '/tmp' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.serverType' '0' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'url.trustedDomains' 'id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.contextPath' '/' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.remoteAddress' 'wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.url' 'https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/distribution/' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.base' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.navigationEndpoint' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json' xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.portalSecret' '1e2eb0fc3815d766ef1be11fb4edba676856ba52' # Replace the platform provenance to keep track of the image sed -i 's/org.xwiki.platform:xwiki-platform-distribution-war/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \ $AS_PATH/webapps/${CONTEXT_PATH}/META-INF/extension.xed sed -i 's/org.xwiki.platform:xwiki-platform-distribution-docker/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \ $AS_PATH/webapps/${CONTEXT_PATH}/META-INF/extension.xed if [ -d "/var/lib/jetty" ]; then echo "" > start.d/xwiki.ini echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5' >> start.d/xwiki.ini echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1' >> start.d/xwiki.ini echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true' >> start.d/xwiki.ini echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=Wissen - $!tdoc.displayTitle - openDesk' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1' >> start.d/xwiki.ini echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini export JAVA_OPTIONS="${JAVA_OPTS}" else if (/usr/local/tomcat/bin/version.sh | grep -q 'Tomcat/8'); then echo "Old Tomcat don't support java_opts file... Using normal props." export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=Wissen - $!tdoc.displayTitle - openDesk" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1" export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" else ## Clear contents of /tmp/java_opts.txt so that we don't add extra arguments at each pod restart. echo "" > /tmp/java_opts.txt echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=="' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary="#571EFA"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode="li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg="#ffffff"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg="#f5f5f5"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color="@brand-primary"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer="https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject="1"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate="1"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN="dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter="(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes="sn,givenname,uid,mailPrimaryAddress"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport="1"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate="1"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport="globalAdmin"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from="no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host="postfix.yschmidt-opendesk-argo.svc.cluster.local"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password="1884bda7fb31c726adcd094399ab63319e9ca56f"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port="587"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties="mail.smtp.starttls.enable=true"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username="opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService="keycloak-bridge-auth"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme="FlamingoThemes.Iceberg"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language="de_DE"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages="de_DE"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping="xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone="Europe/Berlin"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title="Wissen - $!tdoc.displayTitle - openDesk"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port="443"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure="1"' >> /tmp/java_opts.txt echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server="wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt export JAVA_OPTS="${JAVA_OPTS} @/tmp/java_opts.txt" fi fi exec /usr/local/bin/docker-entrypoint.sh xwiki glowroot.properties: | data.dir=/usr/local/xwiki/data/glowroot/data log.dir=/usr/local/xwiki/data/glowroot/log tmp.dir=/usr/local/xwiki/data/glowroot/tmp --- # Source: xwiki/templates/service.yaml apiVersion: v1 kind: Service metadata: name: xwiki labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http sessionAffinity: ClientIP selector: app.kubernetes.io/name: xwiki app.kubernetes.io/instance: xwiki --- # Source: xwiki/templates/xwiki.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: xwiki labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: spec: replicas: 1 serviceName: xwiki selector: matchLabels: app.kubernetes.io/name: xwiki app.kubernetes.io/instance: xwiki template: metadata: annotations: # Annotations to rollout changes on configs on workload checksum/configmap: 25831d9af41b8f070a7aa2b0e6a84e9561f8a468e5dedc0b0eab7c4ca866077f checksum/initialization-configmaps: 9b4efa8ff1cec573de2eaa8ea1d4ef83c9e9ac8fd0539deb8cfbe11287090f9f labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm spec: serviceAccountName: xwiki-sa initContainers: - name: xwiki-data-permissions image: registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 imagePullPolicy: IfNotPresent command: - /bin/sh - -ec - chown -R "100:101" /usr/local/xwiki/data securityContext: runAsUser: 0 seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 8Gi requests: cpu: 0.1 memory: 1.5Gi volumeMounts: - name: xwiki-data mountPath: /usr/local/xwiki/data containers: - name: xwiki image: registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 imagePullPolicy: IfNotPresent command: ["/bin/bash", "/configmaps/entrypoint"] securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsGroup: 101 runAsNonRoot: true runAsUser: 100 seLinuxOptions: null seccompProfile: type: RuntimeDefault ports: - containerPort: 8080 env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: "xwiki" key: DB_PASSWORD - name: DB_HOST valueFrom: configMapKeyRef: name: xwiki key: DB_HOST - name: DB_USER valueFrom: configMapKeyRef: name: xwiki key: DB_USER - name: DB_DATABASE valueFrom: configMapKeyRef: name: xwiki key: DB_DATABASE startupProbe: tcpSocket: port: 8080 initialDelaySeconds: 120 timeoutSeconds: 60 periodSeconds: 30 failureThreshold: 5 successThreshold: 1 livenessProbe: httpGet: path: /rest port: 8080 initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 10 successThreshold: 1 readinessProbe: httpGet: path: /rest/wikis/xwiki/spaces port: 8080 initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 30 failureThreshold: 10 successThreshold: 1 resources: limits: cpu: 99 memory: 8Gi requests: cpu: 0.1 memory: 1.5Gi volumeMounts: - name: xwiki-data mountPath: /usr/local/xwiki/data - name: configmaps mountPath: /configmaps securityContext: fsGroup: 101 volumes: - name: configmaps configMap: name: xwiki-init-scripts - name: xwiki-data volumeClaimTemplates: - metadata: name: xwiki-data spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" --- # Source: xwiki/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: xwiki labels: app.kubernetes.io/name: xwiki helm.sh/chart: xwiki-1.4.4 app.kubernetes.io/instance: xwiki app.kubernetes.io/managed-by: Helm annotations: haproxy-ingress.github.io/headers: X-Forwarded-Host wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-body-size: 100M nginx.ingress.kubernetes.io/proxy-read-timeout: "60" nginx.ingress.kubernetes.io/proxy-send-timeout: "60" nginx.ingress.kubernetes.io/session-cookie-expires: "1800" nginx.ingress.kubernetes.io/session-cookie-name: XNGINX nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.org/client-max-body-size: 100M nginx.org/proxy-read-timeout: 60s nginx.org/proxy-send-timeout: 60s spec: ingressClassName: nginx tls: - hosts: - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" secretName: opendesk-certificates-tls rules: - host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: / pathType: ImplementationSpecific backend: service: name: xwiki port: number: 80 --- # Source: impress/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: frontend-runtime-env namespace: "yschmidt-opendesk-argo" data: runtime-env.js: | window.RUNTIME_ENV = {"ICS_BASE_URL":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","PORTAL_BASE_URL":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"}; ... --- # Source: impress/templates/backend_svc.yaml apiVersion: v1 kind: Service metadata: name: impress-backend namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: backend annotations: null spec: type: ClusterIP ports: - port: 80 targetPort: 8000 protocol: TCP name: http selector: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: backend --- # Source: impress/templates/frontend_svc.yaml apiVersion: v1 kind: Service metadata: name: impress-frontend namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: frontend annotations: null spec: type: ClusterIP ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: frontend --- # Source: impress/templates/media_svc.yaml apiVersion: v1 kind: Service metadata: name: impress-media namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: media annotations: null spec: type: ExternalName externalName: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de --- # Source: impress/templates/yprovider_svc.yaml apiVersion: v1 kind: Service metadata: name: impress-y-provider namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: yProvider annotations: null spec: type: ClusterIP ports: - port: 443 targetPort: 4444 protocol: TCP name: http selector: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: yProvider --- # Source: impress/templates/backend_deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: impress-backend namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: backend spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: backend template: metadata: annotations: labels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: backend spec: imagePullSecrets: - name: impress-dockerconfig shareProcessNamespace: false containers: - name: impress image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" imagePullPolicy: IfNotPresent env: - name: "AI_API_KEY" value: "" - name: "AI_BASE_URL" value: "" - name: "AI_MODEL" value: "" - name: "AWS_S3_ACCESS_KEY_ID" value: "notes_user" - name: "AWS_S3_ENDPOINT_URL" value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "AWS_S3_SECRET_ACCESS_KEY" value: "5c58820a84259ce3b869bfc267b53437f49d9902" - name: "AWS_STORAGE_BUCKET_NAME" value: "notes" - name: "COLLABORATION_API_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" - name: "COLLABORATION_SERVER_ORIGIN" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "COLLABORATION_SERVER_SECRET" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" - name: "COLLABORATION_WS_URL" value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" - name: "DB_HOST" value: "postgresql" - name: "DB_NAME" value: "notes" - name: "DB_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "DB_PORT" value: "5432" - name: "DB_USER" value: "notes_user" - name: "DJANGO_ALLOWED_HOSTS" value: "*" - name: "DJANGO_CONFIGURATION" value: "Production" - name: "DJANGO_CSRF_TRUSTED_ORIGINS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_BRAND_NAME" value: "openDesk" - name: "DJANGO_EMAIL_FROM" value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_HOST" value: "postfix" - name: "DJANGO_EMAIL_HOST_PASSWORD" value: "1884bda7fb31c726adcd094399ab63319e9ca56f" - name: "DJANGO_EMAIL_HOST_USER" value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_LOGO_IMG" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" - name: "DJANGO_EMAIL_PORT" value: "25" - name: "DJANGO_EMAIL_USE_SSL" value: "false" - name: "DJANGO_EMAIL_USE_TLS" value: "false" - name: "DJANGO_SECRET_KEY" value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" - name: "DJANGO_SETTINGS_MODULE" value: "impress.settings" - name: "DJANGO_SITE_DOMAIN" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SITE_NAME" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SUPERUSER_PASSWORD" value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" - name: "FRONTEND_THEME" value: "openDesk" - name: "LOGIN_REDIRECT_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGIN_REDIRECT_URL_FAILURE" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGOUT_REDIRECT_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" value: "{}" - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" - name: "OIDC_OP_JWKS_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" - name: "OIDC_OP_LOGOUT_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" - name: "OIDC_OP_TOKEN_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" - name: "OIDC_OP_USER_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" - name: "OIDC_REDIRECT_ALLOWED_HOSTS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" - name: "OIDC_RENEW_ID_TOKEN" value: "False" - name: "OIDC_RP_CLIENT_ID" value: "opendesk-notes" - name: "OIDC_RP_CLIENT_SECRET" value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" - name: "OIDC_RP_SCOPES" value: "openid opendesk-notes-scope" - name: "OIDC_RP_SIGN_ALGO" value: "RS256" - name: "POSTGRES_DB" value: "notes" - name: "POSTGRES_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "POSTGRES_USER" value: "notes_user" - name: "REDIS_URL" value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" - name: "USER_OIDC_ESSENTIAL_CLAIMS" value: "email" - name: "USER_OIDC_FIELDS_TO_FULLNAME" value: "given_name,family_name" - name: "USER_OIDC_FIELD_TO_SHORTNAME" value: "given_name" - name: "Y_PROVIDER_API_BASE_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" - name: "Y_PROVIDER_API_KEY" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault ports: - name: http containerPort: 8000 protocol: TCP livenessProbe: httpGet: path: /__heartbeat__ port: 8000 initialDelaySeconds: 10 timeoutSeconds: 1 readinessProbe: httpGet: path: /__lbheartbeat__ port: 8000 initialDelaySeconds: 10 timeoutSeconds: 1 resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "tmp" mountPath: "/tmp" volumes: - name: "tmp" emptyDir: {} --- # Source: impress/templates/frontend_deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: impress-frontend namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: frontend spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: frontend template: metadata: annotations: labels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: frontend spec: imagePullSecrets: - name: impress-dockerconfig shareProcessNamespace: false containers: - name: impress image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887" imagePullPolicy: IfNotPresent env: - name: "NEXT_PUBLIC_API_ORIGIN" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "NEXT_PUBLIC_MEDIA_URL" value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "NEXT_PUBLIC_Y_PROVIDER_URL" value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ws" - name: "PORT" value: "8080" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault ports: - name: http containerPort: 8080 protocol: TCP resources: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi volumeMounts: - name: "frontend-runtime-env" mountPath: "/usr/share/nginx/html/runtime-env.js" subPath: "runtime-env.js" - name: "tmp" mountPath: "/tmp" volumes: - name: "frontend-runtime-env" configMap: name: "frontend-runtime-env" - name: "tmp" emptyDir: {} --- # Source: impress/templates/yprovider_deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: impress-y-provider namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: yProvider spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: yProvider template: metadata: annotations: labels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: yProvider spec: imagePullSecrets: - name: impress-dockerconfig shareProcessNamespace: false containers: - name: impress image: "registry-1.docker.io/lasuite/impress-y-provider:v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1" imagePullPolicy: IfNotPresent env: - name: "COLLABORATION_LOGGING" value: "false" - name: "COLLABORATION_SERVER_ORIGIN" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "COLLABORATION_SERVER_SECRET" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" - name: "Y_PROVIDER_API_KEY" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault ports: - name: http containerPort: 4444 protocol: TCP livenessProbe: httpGet: path: /ping port: 4444 initialDelaySeconds: 10 timeoutSeconds: 1 resources: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi volumeMounts: - name: "tmp" mountPath: "/tmp" volumes: - name: "tmp" emptyDir: {} --- # Source: impress/templates/backend_job.yaml apiVersion: batch/v1 kind: Job metadata: name: impress-backend-migrate namespace: "yschmidt-opendesk-argo" annotations: argocd.argoproj.io/sync-options: Replace=true,Force=true labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: backend spec: ttlSecondsAfterFinished: 60 template: metadata: annotations: labels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: backend spec: imagePullSecrets: - name: impress-dockerconfig shareProcessNamespace: false containers: - name: impress image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" imagePullPolicy: IfNotPresent command: - /bin/sh - -c - | python manage.py migrate --no-input env: - name: "AI_API_KEY" value: "" - name: "AI_BASE_URL" value: "" - name: "AI_MODEL" value: "" - name: "AWS_S3_ACCESS_KEY_ID" value: "notes_user" - name: "AWS_S3_ENDPOINT_URL" value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "AWS_S3_SECRET_ACCESS_KEY" value: "5c58820a84259ce3b869bfc267b53437f49d9902" - name: "AWS_STORAGE_BUCKET_NAME" value: "notes" - name: "COLLABORATION_API_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" - name: "COLLABORATION_SERVER_ORIGIN" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "COLLABORATION_SERVER_SECRET" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" - name: "COLLABORATION_WS_URL" value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" - name: "DB_HOST" value: "postgresql" - name: "DB_NAME" value: "notes" - name: "DB_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "DB_PORT" value: "5432" - name: "DB_USER" value: "notes_user" - name: "DJANGO_ALLOWED_HOSTS" value: "*" - name: "DJANGO_CONFIGURATION" value: "Production" - name: "DJANGO_CSRF_TRUSTED_ORIGINS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_BRAND_NAME" value: "openDesk" - name: "DJANGO_EMAIL_FROM" value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_HOST" value: "postfix" - name: "DJANGO_EMAIL_HOST_PASSWORD" value: "1884bda7fb31c726adcd094399ab63319e9ca56f" - name: "DJANGO_EMAIL_HOST_USER" value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_LOGO_IMG" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" - name: "DJANGO_EMAIL_PORT" value: "25" - name: "DJANGO_EMAIL_USE_SSL" value: "false" - name: "DJANGO_EMAIL_USE_TLS" value: "false" - name: "DJANGO_SECRET_KEY" value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" - name: "DJANGO_SETTINGS_MODULE" value: "impress.settings" - name: "DJANGO_SITE_DOMAIN" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SITE_NAME" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SUPERUSER_PASSWORD" value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" - name: "FRONTEND_THEME" value: "openDesk" - name: "LOGIN_REDIRECT_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGIN_REDIRECT_URL_FAILURE" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGOUT_REDIRECT_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" value: "{}" - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" - name: "OIDC_OP_JWKS_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" - name: "OIDC_OP_LOGOUT_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" - name: "OIDC_OP_TOKEN_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" - name: "OIDC_OP_USER_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" - name: "OIDC_REDIRECT_ALLOWED_HOSTS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" - name: "OIDC_RENEW_ID_TOKEN" value: "False" - name: "OIDC_RP_CLIENT_ID" value: "opendesk-notes" - name: "OIDC_RP_CLIENT_SECRET" value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" - name: "OIDC_RP_SCOPES" value: "openid opendesk-notes-scope" - name: "OIDC_RP_SIGN_ALGO" value: "RS256" - name: "POSTGRES_DB" value: "notes" - name: "POSTGRES_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "POSTGRES_USER" value: "notes_user" - name: "REDIS_URL" value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" - name: "USER_OIDC_ESSENTIAL_CLAIMS" value: "email" - name: "USER_OIDC_FIELDS_TO_FULLNAME" value: "given_name,family_name" - name: "USER_OIDC_FIELD_TO_SHORTNAME" value: "given_name" - name: "Y_PROVIDER_API_BASE_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" - name: "Y_PROVIDER_API_KEY" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "tmp" mountPath: "/tmp" restartPolicy: Never volumes: - name: "tmp" emptyDir: {} --- # Source: impress/templates/backend_job_createsuperuser.yaml apiVersion: batch/v1 kind: Job metadata: name: impress-backend-createsuperuser namespace: "yschmidt-opendesk-argo" annotations: argocd.argoproj.io/sync-options: Replace=true,Force=true labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: backend spec: ttlSecondsAfterFinished: 60 template: metadata: annotations: labels: app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/component: backend spec: imagePullSecrets: - name: impress-dockerconfig shareProcessNamespace: false containers: - name: impress image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" imagePullPolicy: IfNotPresent command: - /bin/sh - -c - | python manage.py createsuperuser --email default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de --password 65a3226e9c23d19a7eac7573a4920d9882b5464a env: - name: "AI_API_KEY" value: "" - name: "AI_BASE_URL" value: "" - name: "AI_MODEL" value: "" - name: "AWS_S3_ACCESS_KEY_ID" value: "notes_user" - name: "AWS_S3_ENDPOINT_URL" value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "AWS_S3_SECRET_ACCESS_KEY" value: "5c58820a84259ce3b869bfc267b53437f49d9902" - name: "AWS_STORAGE_BUCKET_NAME" value: "notes" - name: "COLLABORATION_API_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" - name: "COLLABORATION_SERVER_ORIGIN" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "COLLABORATION_SERVER_SECRET" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" - name: "COLLABORATION_WS_URL" value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" - name: "DB_HOST" value: "postgresql" - name: "DB_NAME" value: "notes" - name: "DB_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "DB_PORT" value: "5432" - name: "DB_USER" value: "notes_user" - name: "DJANGO_ALLOWED_HOSTS" value: "*" - name: "DJANGO_CONFIGURATION" value: "Production" - name: "DJANGO_CSRF_TRUSTED_ORIGINS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_BRAND_NAME" value: "openDesk" - name: "DJANGO_EMAIL_FROM" value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_HOST" value: "postfix" - name: "DJANGO_EMAIL_HOST_PASSWORD" value: "1884bda7fb31c726adcd094399ab63319e9ca56f" - name: "DJANGO_EMAIL_HOST_USER" value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_EMAIL_LOGO_IMG" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" - name: "DJANGO_EMAIL_PORT" value: "25" - name: "DJANGO_EMAIL_USE_SSL" value: "false" - name: "DJANGO_EMAIL_USE_TLS" value: "false" - name: "DJANGO_SECRET_KEY" value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" - name: "DJANGO_SETTINGS_MODULE" value: "impress.settings" - name: "DJANGO_SITE_DOMAIN" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SITE_NAME" value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "DJANGO_SUPERUSER_PASSWORD" value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" - name: "FRONTEND_THEME" value: "openDesk" - name: "LOGIN_REDIRECT_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGIN_REDIRECT_URL_FAILURE" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "LOGOUT_REDIRECT_URL" value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" value: "{}" - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" - name: "OIDC_OP_JWKS_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" - name: "OIDC_OP_LOGOUT_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" - name: "OIDC_OP_TOKEN_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" - name: "OIDC_OP_USER_ENDPOINT" value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" - name: "OIDC_REDIRECT_ALLOWED_HOSTS" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" - name: "OIDC_RENEW_ID_TOKEN" value: "False" - name: "OIDC_RP_CLIENT_ID" value: "opendesk-notes" - name: "OIDC_RP_CLIENT_SECRET" value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" - name: "OIDC_RP_SCOPES" value: "openid opendesk-notes-scope" - name: "OIDC_RP_SIGN_ALGO" value: "RS256" - name: "POSTGRES_DB" value: "notes" - name: "POSTGRES_PASSWORD" value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" - name: "POSTGRES_USER" value: "notes_user" - name: "REDIS_URL" value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" - name: "USER_OIDC_ESSENTIAL_CLAIMS" value: "email" - name: "USER_OIDC_FIELDS_TO_FULLNAME" value: "given_name,family_name" - name: "USER_OIDC_FIELD_TO_SHORTNAME" value: "given_name" - name: "Y_PROVIDER_API_BASE_URL" value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" - name: "Y_PROVIDER_API_KEY" value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 512Mi volumeMounts: - name: "tmp" mountPath: "/tmp" restartPolicy: Never volumes: - name: "tmp" emptyDir: {} --- # Source: impress/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: impress namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm spec: ingressClassName: nginx tls: - secretName: "opendesk-certificates-tls" hosts: - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" rules: - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/" pathType: Prefix backend: service: name: impress-frontend port: number: 80 - path: /api pathType: Prefix backend: service: name: impress-backend port: number: 80 --- # Source: impress/templates/ingress_admin.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: impress-admin namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm spec: ingressClassName: nginx tls: - secretName: "opendesk-certificates-tls" hosts: - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" rules: - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/admin" pathType: Prefix backend: service: name: impress-backend port: number: 80 - path: /static pathType: Prefix backend: service: name: impress-backend port: number: 80 --- # Source: impress/templates/ingress_collaboration_api.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: impress-collaboration-api namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm spec: ingressClassName: nginx tls: - secretName: "opendesk-certificates-tls" hosts: - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" rules: - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/collaboration/api/" pathType: ImplementationSpecific backend: service: name: impress-y-provider port: number: 443 service: name: impress-y-provider port: number: 443 --- # Source: impress/templates/ingress_collaboration_ws.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: impress-ws namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Can-Edit, X-User-Id nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/collaboration-auth/ nginx.ingress.kubernetes.io/enable-websocket: "true" nginx.ingress.kubernetes.io/proxy-read-timeout: "86400" nginx.ingress.kubernetes.io/proxy-send-timeout: "86400" nginx.ingress.kubernetes.io/upstream-hash-by: $arg_room spec: ingressClassName: nginx tls: - secretName: "opendesk-certificates-tls" hosts: - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" rules: - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/collaboration/ws/" pathType: ImplementationSpecific backend: service: name: impress-y-provider port: number: 443 service: name: impress-y-provider port: number: 443 --- # Source: impress/templates/ingress_media.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: impress-media namespace: "yschmidt-opendesk-argo" labels: helm.sh/chart: impress-2.0.0 app.kubernetes.io/name: impress app.kubernetes.io/instance: impress app.kubernetes.io/managed-by: Helm annotations: nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Amz-Date, X-Amz-Content-SHA256 nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/media-auth/ nginx.ingress.kubernetes.io/backend-protocol: HTTPS nginx.ingress.kubernetes.io/rewrite-target: /notes/$1 nginx.ingress.kubernetes.io/session-cookie-path: /media nginx.ingress.kubernetes.io/upstream-vhost: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: nginx tls: - secretName: "opendesk-certificates-tls" hosts: - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" rules: - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" http: paths: - path: "/media/(.*)" pathType: ImplementationSpecific backend: service: name: impress-media port: number: 443 --- # Source: impress/templates/secrets.yaml apiVersion: v1 kind: Secret metadata: name: backend namespace: "yschmidt-opendesk-argo" annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "-5" "helm.sh/hook-delete-policy": before-hook-creation stringData: DJANGO_SUPERUSER_EMAIL: default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de DJANGO_SUPERUSER_PASSWORD: 65a3226e9c23d19a7eac7573a4920d9882b5464a DJANGO_SECRET_KEY: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 OIDC_RP_CLIENT_ID: opendesk-notes OIDC_RP_CLIENT_SECRET: 0cbc7a3257db722ed76270a547c7dccf1f84db87 AI_API_KEY: AI_BASE_URL: --- # Source: opendesk-openproject-bootstrap/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-openproject-bootstrap" labels: app.kubernetes.io/name: opendesk-openproject-bootstrap helm.sh/chart: opendesk-openproject-bootstrap-2.2.0 app.kubernetes.io/instance: opendesk-openproject-bootstrap app.kubernetes.io/managed-by: Helm automountServiceAccountToken: false ... --- # Source: opendesk-openproject-bootstrap/templates/secrect.yaml kind: "Secret" apiVersion: "v1" metadata: name: "opendesk-openproject-bootstrap" labels: app.kubernetes.io/name: opendesk-openproject-bootstrap helm.sh/chart: opendesk-openproject-bootstrap-2.2.0 app.kubernetes.io/instance: opendesk-openproject-bootstrap app.kubernetes.io/managed-by: Helm stringData: openprojectAdminUsername: "abbb47d550ea03225cb109388f296cbc3a4b66eb" openprojectAdminPassword: "9e8d27af068f15dce7b940241ddac82785935239" nextcloudAdminUsername: "nextcloud" nextcloudAdminPassword: "d132ecf836fac6a43b19341f94d5effff7edee65" ... --- # Source: opendesk-openproject-bootstrap/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-openproject-bootstrap-bootstrap-1" labels: app.kubernetes.io/name: opendesk-openproject-bootstrap helm.sh/chart: opendesk-openproject-bootstrap-2.2.0 app.kubernetes.io/instance: opendesk-openproject-bootstrap app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: "Sync" argocd.argoproj.io/hook-delete-policy: "HookSucceeded" spec: ttlSecondsAfterFinished: 60 template: metadata: labels: app.kubernetes.io/name: opendesk-openproject-bootstrap helm.sh/chart: opendesk-openproject-bootstrap-2.2.0 app.kubernetes.io/instance: opendesk-openproject-bootstrap app.kubernetes.io/managed-by: Helm annotations: spec: restartPolicy: "Never" securityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch serviceAccountName: opendesk-openproject-bootstrap containers: - name: "opendesk-openproject-bootstrap" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault resources: limits: memory: 1Gi requests: cpu: 500m memory: 256Mi image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap:1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d" imagePullPolicy: IfNotPresent command: - "/app/entrypoint.sh" volumeMounts: - mountPath: "/app/temp" name: "temp-dir" env: - name: "OPENPROJECT_HOST" value: "https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "OPENPROJECT_STORAGE_NAME" value: "Nextcloud at yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "OP_ADMIN_USERNAME" valueFrom: secretKeyRef: key: "openprojectAdminUsername" name: "opendesk-openproject-bootstrap" - name: "OP_ADMIN_PASSWORD" valueFrom: secretKeyRef: key: "openprojectAdminPassword" name: "opendesk-openproject-bootstrap" - name: "NEXTCLOUD_HOST" value: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" - name: "NC_ADMIN_USERNAME" valueFrom: secretKeyRef: key: "nextcloudAdminUsername" name: "opendesk-openproject-bootstrap" - name: "SETUP_PROJECT_FOLDER" value: "true" - name: "NC_ADMIN_PASSWORD" valueFrom: secretKeyRef: key: "nextcloudAdminPassword" name: "opendesk-openproject-bootstrap" - name: "OD_OP_BOOTSTRAP_TEMP_DIR" value: "/app/temp" - name: "OD_OP_BOOTSTRAP_DEBUG_ENABLED" value: "false" - name: "OD_OP_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START" value: "0" volumes: - name: "temp-dir" emptyDir: sizeLimit: "20Mi" ... --- # Source: opendesk-migrations/templates/serviceaccount.yaml apiVersion: "v1" kind: "ServiceAccount" metadata: name: "opendesk-migrations-post" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm automountServiceAccountToken: true ... --- # Source: opendesk-migrations/templates/secret.yaml apiVersion: "v1" kind: "Secret" metadata: name: "opendesk-migrations-post-environmentdetails" namespace: "yschmidt-opendesk-argo" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation stringData: environmentDetails.yaml: | ai: apiKey: "" endpoint: "" model: "" annotations: cassandra: ingress: null pod: null serviceAccount: null coco: ingress: null pod: null serviceAccount: null collabora: ingress: null pod: null service: null serviceAccount: null cryptpad: ingress: null pod: null serviceAccount: null element: common: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeoboardWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeochoiceWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixNeodatefixBot: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null elementMatrixNeodatefixBotBootstrap: pod: null serviceAccount: null elementMatrixNeodatefixWidget: additional: null ingress: null pod: null service: null serviceAccount: null elementMatrixUserVerificationService: additional: null pod: null service: null serviceAccount: null elementMatrixUserVerificationServiceBootstrap: pod: null serviceAccount: null elementSynapse: common: null federationIngress: null persistence: null pod: null service: null serviceAccount: null elementSynapseWeb: common: null ingress: null pod: null service: null serviceAccount: null elementWellKnown: common: null ingress: null pod: null service: null serviceAccount: null jitsi: pod: null serviceAccount: null jitsiGlobal: pod: null jitsiJibri: pod: null jitsiJicofo: pod: null jitsiJigasi: pod: null jitsiJitsiPatchJVB: serviceAccount: null jitsiJvb: metricsGrafana: null metricsPrometheus: null pod: null service: null jitsiProsody: pod: null jitsiWeb: ingress: null pod: null nextcloudAio: additional: null ingress: null pod: null service: null serviceAccount: null nextcloudExporter: additional: null ingress: null pod: null serviceAccount: null nextcloudNextcloudMgmt: additional: null pod: null serviceAccount: null notes: ingressAdmin: null ingressCollaborationAPI: null ingressCollaborationWS: null ingressMedia: null serviceMedia: null notesBackend: migrateJob: null pod: null service: null notesFrontend: pod: null service: null notesYProvider: pod: null service: null nubus: additional: null ingress: null nubusGuardian: authorizationApiPod: null globalPod: null ingressAuthorizationApi: null ingressIngress: null ingressManagementApi: null ingressManagementUi: null managementApiPod: null managementUiPod: null serviceAccount: null nubusIntercomService: additional: null ingress: null pod: null service: null serviceAccount: null nubusKeycloak: common: null pod: null service: null serviceAccount: null nubusKeycloakBootstrap: additional: null pod: null service: null serviceAccount: null nubusKeycloakBootstrapNubus: additional: null pod: null serviceAccount: null nubusKeycloakExtensions: handlerAdditional: null handlerPod: null handlerService: null handlerServiceAccount: null proxyAdditional: null proxyIngress: null proxyPod: null proxyService: null proxyServiceAccount: null nubusLdapNotifier: additional: null pod: null service: null serviceAccount: null nubusLdapServer: additional: null pod: null service: null serviceAccount: null nubusNginxS3Gateway: additional: null ingress: null pod: null service: null serviceAccount: null nubusNotificationsApi: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusOxConnector: pod: null serviceAccount: null nubusPortalConsumer: pod: null nubusPortalFrontend: additional: null ingressIngress: null ingressRedirects: null ingressRewrites: null persistence: null pod: null service: null serviceAccount: null nubusPortalServer: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusProvisioning: additional: null apiAdditional: null apiPod: null dispatcherAdditional: null dispatcherPod: null natsAdditional: null natsPod: null pod: null prefillAdditional: null prefillPod: null registerConsumersAdditional: null registerConsumersPod: null service: null serviceAccount: null udmTransformerAdditional: null udmTransformerPod: null nubusSelfserviceConsumer: pod: null serviceAccount: null nubusStackDataUms: additional: null pod: null serviceAccount: null nubusUdmListener: pod: null serviceAccount: null nubusUdmRestApi: additional: null ingress: null persistence: null pod: null service: null serviceAccount: null nubusUmcGateway: ingress: null pod: null serviceAccount: null nubusUmcServer: additional: null ingress: null pod: null serviceAccount: null opendeskMigrationsPost: additional: null pod: null serviceAccount: null opendeskMigrationsPre: additional: null pod: null serviceAccount: null opendeskServicesHome: additional: null ingress: null opendeskServicesOtterize: additional: null opendeskServicesStaticFiles: additional: null ingress: null pod: null service: null serviceAccount: null openproject: ingress: null openprojectTempVolumes: null pod: null seederJob: null serviceAccount: null openprojectBootstrap: additional: null pod: null openxchangeAppsuiteCoreDocumentconverter: pod: null openxchangeAppsuiteCoreGuidedtours: pod: null openxchangeAppsuiteCoreImageconverter: pod: null openxchangeAppsuiteCoreMw: gotenbergPod: null pod: null serviceAccount: null updatePod: null openxchangeAppsuiteCoreUi: pod: null openxchangeAppsuiteCoreUiMiddleware: pod: null openxchangeAppsuiteCoreUserGuide: pod: null openxchangeAppsuiteIngress: appsuitebase: null caldavWellKnownRedirect: null carddavWellKnownRedirect: null coreHelpRoute: null davInfostoreRoute: null davRootRoute: null documentsHelpRoute: null driveClientWindowsOxRoute: null driveHelpRoute: null guardApiRoute: null guardPgpRoute: null guardSupportApiRoute: null httpApiRoutesAjax: null httpApiRoutesApi: null httpApiRoutesAppRootApi: null httpApiRoutesAppsuiteApi: null ingress: null officeWebRoute: null restRoutesAdmin: null restRoutesAdvertisement: null restRoutesChronos: null restRoutesPreliminary: null restRoutesUserfeedback: null rootredirect: null rt2Route: null staticRoutesInfostore: null staticRoutesRealtime: null staticRoutesServlet: null staticRoutesWebservices: null trailslash: null wopiServerRoute: null openxchangeBootstrap: additional: null serviceAccount: null openxchangeDovecot: common: null persistence: null pod: null service: null serviceAccount: null openxchangeEnterpriseContactPicker: appsuiteCoreMw: null appsuiteCoreMwPod: null appsuiteCoreMwServiceAccount: null openxchangeNextcloudIntegrationUi: pod: null openxchangePostfix: pod: null service: null openxchangePublicSectorUi: pod: null servicesExternalClamavDistributed: clamdCommon: null clamdPod: null clamdService: null clamdServiceAccount: null freshclamCommon: null freshclamService: null freshclamServiceAccount: null milterCommon: null milterPod: null milterService: null milterServiceAccount: null persistence: null servicesExternalClamavSimple: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalDkimpy: additional: null pod: null service: null serviceAccount: null servicesExternalMariadb: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalMemcached: common: null pod: null service: null serviceAccount: null servicesExternalMinio: apiIngress: null common: null ingress: null persistence: null pod: null provisioningPod: null serviceAccount: null serviceHeadless: null serviceService: null servicesExternalPostfix: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalPostgresql: common: null persistence: null pod: null service: null serviceAccount: null servicesExternalRedis: common: null masterMaster: null masterPersistence: null masterPod: null masterService: null masterServiceAccount: null replicaPersistence: null replicaPod: null replicaReplica: null replicaService: null replicaServiceAccount: null secret: null xwiki: common: null ingress: null persistence: null service: null serviceAccount: null antivirus: icap: host: null port: 1344 milter: host: null port: 7357 apps: cassandra: enabled: false namespace: null certificates: enabled: true namespace: null clamavDistributed: enabled: false namespace: null clamavSimple: enabled: true namespace: null collabora: enabled: true namespace: null collaboraController: enabled: false namespace: null cryptpad: enabled: true namespace: null dkimpy: enabled: false namespace: null dovecot: enabled: true namespace: null element: enabled: true namespace: null elementAdmin: enabled: false namespace: null elementGroupsync: enabled: false namespace: null home: enabled: true namespace: null jitsi: enabled: false namespace: null mariadb: enabled: true namespace: null memcached: enabled: true namespace: null migrations: enabled: true namespace: null minio: enabled: true namespace: null nextcloud: enabled: true namespace: null notes: enabled: true namespace: null nubus: enabled: true namespace: null openproject: enabled: true namespace: null oxAppSuite: enabled: true namespace: null postfix: enabled: true namespace: null postgresql: enabled: true namespace: null redis: enabled: true namespace: null staticFiles: enabled: true namespace: null xwiki: enabled: true namespace: null cache: intercomService: host: redis-headless password: "" port: 6379 username: default nextcloud: host: redis-headless password: "" port: 6379 tls: false username: default notes: host: redis-headless password: "" port: 6379 openproject: host: memcached port: 11211 oxAppSuite: host: redis-headless password: "" port: 6379 username: default umsSelfservice: host: memcached port: 11211 certificate: issuerRef: kind: ClusterIssuer name: letsencrypt-prod selfSigned: false wildcard: "false" charts: cassandra: name: cassandra registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 12.0.4 certificates: name: opendesk-certificates registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates verify: true version: 3.1.1 clamav: name: opendesk-clamav registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav verify: true version: 4.0.6 clamavSimple: name: clamav-simple registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav verify: true version: 4.0.6 collabora: name: collabora-online registry: registry.opencode.de repository: bmi/opendesk/components/supplier/collabora/charts-mirror verify: true version: 1.1.37 collaboraController: name: cool-controller registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror verify: false version: 1.1.2 cryptpad: name: cryptpad registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/charts-mirror verify: true version: 0.0.20 dkimpy: name: opendesk-dkimpy-milter registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter verify: true version: 1.0.0 dovecot: name: dovecot registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot verify: true version: 2.0.0 element: name: opendesk-element registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 elementWellKnown: name: opendesk-well-known registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 home: name: opendesk-home registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-home verify: true version: 1.0.2 intercomService: name: intercom-service registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 2.12.0 jitsi: name: opendesk-jitsi registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi verify: true version: 3.1.0 mariadb: name: mariadb registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb verify: true version: 3.0.3 matrixNeoboardWidget: name: matrix-neoboard-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeochoiceWidget: name: matrix-neochoice-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeodatefixBot: name: matrix-neodatefix-bot registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixNeodatefixWidget: name: matrix-neodatefix-widget registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets verify: true version: 3.5.1 matrixUserVerificationService: name: opendesk-matrix-user-verification-service registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 memcached: name: memcached registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 6.7.1 migrations: name: opendesk-migrations registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations verify: true version: 1.6.0 minio: name: minio registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 14.10.1 nextcloud: name: opendesk-nextcloud registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud verify: true version: 4.0.3 nextcloudManagement: name: opendesk-nextcloud-management registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud verify: true version: 4.0.3 nginx: name: nginx registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 15.9.3 nginxS3Gateway: name: nginx-s3-gateway registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway verify: true version: 1.0.1 notes: name: impress registry: registry.opencode.de repository: bmi/opendesk/components/supplier/dinum/charts/notes verify: true version: 2.0.0 nubus: name: nubus registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 1.8.0 opendeskAlerts: name: opendesk-alerts registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts verify: true version: 1.1.1 opendeskDashboards: name: opendesk-dashboards registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards verify: true version: 1.1.1 opendeskKeycloakBootstrap: name: opendesk-keycloak-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap verify: true version: 2.6.0 opendeskStaticFiles: name: opendesk-static-files registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files verify: true version: 4.0.1 openproject: name: openproject registry: registry.opencode.de repository: bmi/opendesk/components/supplier/openproject/charts-mirror verify: true version: 9.9.0 openprojectBootstrap: name: opendesk-openproject-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap verify: true version: 2.2.0 otterize: name: opendesk-otterize registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize verify: true version: 2.1.3 oxAppSuite: name: appsuite-public-sector registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror verify: false version: 2.17.164 oxAppSuiteBootstrap: name: opendesk-open-xchange-bootstrap registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap verify: true version: 2.1.2 oxConnector: name: ox-connector registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/charts-mirror verify: true version: 0.19.0 postfix: name: postfix registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix verify: true version: 3.0.1 postgresql: name: postgresql registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql verify: true version: 2.1.2 redis: name: redis registry: registry.opencode.de repository: bmi/opendesk/components/external/charts/bitnami-charts verify: true version: 18.6.1 synapse: name: opendesk-synapse registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 synapseAdmin: name: opendesk-synapse-admin registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseAdminbotWeb: name: opendesk-synapse-adminbot-web registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseCreateAccount: name: opendesk-synapse-create-account registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 synapseGroupsync: name: opendesk-synapse-groupsync registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapsePipe: name: opendesk-synapse-pipe registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 5.0.1 synapseWeb: name: opendesk-synapse-web registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/charts/opendesk-element verify: true version: 6.1.3 xwiki: name: xwiki registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/charts-mirror verify: false version: 1.4.4 cluster: container: engine: cri-o networking: cidr: - 10.0.0.0/8 domain: cluster.local incomingCIDR: [] ingressGatewayIP: "" ipFamilies: DualStack loadBalancerStatusField: ip persistence: readWriteMany: enabled: false service: type: LoadBalancer customization: release: cassandra: {} clamav: {} clamavSimple: {} collaboraController: {} collaboraOnline: {} cryptpad: {} dovecot: {} intercomService: {} jitsi: {} mariadb: {} matrixNeoboardWidget: {} matrixNeochoiceWidget: {} matrixNeodatefixBot: {} matrixNeodatefixBotBootstrap: {} matrixNeodatefixWidget: {} matrixUserVerificationService: {} matrixUserVerificationServiceBootstrap: {} memcached: {} migrationsPost: {} migrationsPre: {} minio: {} nginxS3Gateway: {} notes: {} opendeskAlerts: {} opendeskCertificates: {} opendeskDashboards: {} opendeskDkimpyMilter: {} opendeskElement: {} opendeskHome: {} opendeskKeycloakBootstrap: {} opendeskNextcloud: {} opendeskNextcloudManagement: {} opendeskOpenprojectBootstrap: {} opendeskOpenxchangeBootstrap: {} opendeskOtterize: {} opendeskStaticFiles: {} opendeskSynapse: {} opendeskSynapseAdmin: {} opendeskSynapseAdminbotBootstrap: {} opendeskSynapseAdminbotPipe: {} opendeskSynapseAdminbotWeb: {} opendeskSynapseAuditbotBootstrap: {} opendeskSynapseAuditbotPipe: {} opendeskSynapseGroupsync: {} opendeskSynapseWeb: {} opendeskWellKnown: {} openproject: {} openxchange: {} oxConnector: {} postfix: {} postgresql: {} redis: {} ums: {} xwiki: {} databases: defaults: userConnectionLimit: 100 dovecotACL: connectionLimit: null host: cassandra name: dovecot_acl password: "" port: 9042 type: cassandra username: dovecot_acl_user dovecotDictmap: connectionLimit: null host: cassandra name: dovecot_dictmap password: "" port: 9042 type: cassandra username: dovecot_dictmap_user keycloak: connectionLimit: null host: postgresql name: keycloak password: "" port: 5432 type: postgresql username: keycloak_user keycloakExtension: connectionLimit: null host: postgresql name: keycloak_extensions password: "" port: 5432 ssl: "false" type: postgresql username: keycloak_extensions_user nextcloud: connectionLimit: null host: postgresql name: nextcloud password: "" port: 5432 type: postgresql username: nextcloud_user notes: connectionLimit: null host: postgresql name: notes password: "" port: 5432 type: postgresql username: notes_user openproject: connectionLimit: null host: postgresql name: openproject password: "" port: 5432 type: postgresql username: openproject_user oxAppSuite: connectionLimit: null host: mariadb name: configdb password: "" port: 3306 readHost: null readPassword: null readUser: null type: mariadb username: root synapse: channelBinding: prefer clientEncoding: auto connectTimeout: 10 connectionLimit: null connectionPoolMax: "5" connectionPoolMin: "3" gssencmode: prefer host: postgresql keepalives: 1 keepalivesCount: 3 keepalivesIdle: 10 keepalivesInterval: 10 name: matrix password: "" port: 5432 replication: false requireAuth: [] sslMinProtocolVersion: TLSv1.2 sslcompression: 0 sslmode: prefer type: postgresql username: matrix_user umsGuardianManagementApi: connectionLimit: null host: postgresql name: guardianmanagementapi password: "" port: 5432 type: postgresql username: guardianmanagementapi_user umsNotificationsApi: connectionLimit: null host: postgresql name: notificationsapi password: "" port: 5432 type: postgresql username: notificationsapi_user umsSelfservice: connectionLimit: 10 host: postgresql name: selfservice password: "" port: 5432 type: postgresql username: selfservice_user xwiki: connectionLimit: null host: postgresql name: xwiki password: "" port: 5432 type: postgresql username: xwiki_user debug: cleanup: deletePodsOnSuccess: true deletePodsOnSuccessTimeout: 60 keepPVCOnDelete: false keepRessourceOnDelete: true enabled: false enterpriseFeatures: collabora: autoscaling: maxReplicas: 4 minReplicas: 1 scaleDownDisabled: false targetCPUUtilizationPercentage: 99 targetMemoryUtilizationPercentage: 99 enterpriseKeys: nextcloud: subscriptionData: "" subscriptionKey: "" openproject: token: null xwiki: opendeskEnterpriseLicense: "" proApplicationslicense: "" functional: admin: portal: deploymentTimestamp: enabled: true authentication: newDeviceLoginNotification: enabled: true oidc: clientScopes: null clients: null realmSettings: accessTokenLifespan: 300 clientOfflineSessionIdleTimeout: 0 clientOfflineSessionMaxLifespan: 0 clientSessionIdleTimeout: 0 clientSessionMaxLifespan: 0 offlineSessionIdleTimeout: 2592000 offlineSessionMaxLifespan: 5184000 offlineSessionMaxLifespanEnabled: false revokeRefreshToken: false ssoSessionIdleTimeout: 14400 ssoSessionMaxLifespan: 57600 ssoFederation: enabled: false enforceFederatedLogin: false idpDetails: {} name: My upstream IdP twoFactor: groups: - foo chat: matrix: profile: allowUsersToUpdateDisplayname: true useImmutableIdentifierForLocalpart: false dataProtection: jitsiRoomHistory: enabled: true matrixPresence: enabled: false externalServices: matrix: federation: domainAllowList: [] enabled: true nubus: udmRestApi: enabled: true filestore: nextcloud: retentionObligation: trashbin: auto versions: auto quota: default: 1 sharing: external: enabled: false enforcePasswords: false expiry: activeByDefault: true defaultDays: 30 enforced: false sendPasswordMail: true internal: expiry: activeByDefault: false defaultDays: 90 enforced: false migration: oxAppSuite: enabled: false portal: enforceLogin: true linkLegalNotice: https://opendesk.eu/impressum linkPrivacyStatement: https://zendis.de/datenschutzerklaerung global: additionalMailDomains: "" domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de helmRegistry: "" hosts: adminBot: adminbot collabora: office cryptpad: pad element: chat intercomService: ics jitsi: meet keycloak: id matrixNeoBoardWidget: matrix-neoboard-widget matrixNeoChoiceWidget: matrix-neochoice-widget matrixNeoDateFixBot: matrix-neodatefix-bot matrixNeoDateFixWidget: matrix-neodatefix-widget minioApi: objectstore minioConsole: objectstore-ui nextcloud: files notes: notes nubus: portal openproject: projects openxchange: webmail static: static synapse: matrix synapseAdmin: synapse-admin synapseFederation: matrix-federation whiteboard: whiteboard xwiki: wiki imagePullPolicy: IfNotPresent imagePullSecrets: [] imageRegistry: "" mailDomain: "" matrixDomain: "" systemInformation: releaseVersion: v1.3.2 images: bitnamiOSShell: registry: registry-1.docker.io repository: bitnami/os-shell tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 cassandra: registry: registry-1.docker.io repository: bitnami/cassandra tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea cassandraExporter: registry: registry-1.docker.io repository: bitnami/cassandra-exporter tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051 clamd: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f collabora: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f collaboraController: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c cryptpad: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17 dkimpy: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/dkimpy-milter tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f dovecot: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc dovecotBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 element: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1 elementAdminBot: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812 elementGroupsync: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846 elementHaProxy: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61 elementPipe: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4 elementSynapseAdmin: registry: registry.opencode.de repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350 elementSyncAdmins: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097 freshclam: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f icap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/clamav-icap tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a intercom: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1 jibri: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9 jicofo: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50 jigasi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f jitsi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306 jitsiKeycloakAdapter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697 jitsiPatchJVB: registry: registry-1.docker.io repository: bitnami/kubectl tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162 jvb: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022 mariadb: registry: registry-1.docker.io repository: library/mariadb tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f matrixNeoBoardWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5 matrixNeoChoiceWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb matrixNeoDateFixBot: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96 matrixNeoDateFixWidget: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b matrixUserVerificationService: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008 memcached: registry: registry-1.docker.io repository: bitnami/memcached tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d migrations: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-migrations tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7 milter: registry: registry-1.docker.io repository: clamav/clamav tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f minio: registry: registry-1.docker.io repository: bitnami/minio tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 nextcloud: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4 nextcloudExporter: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0 nginxS3Gateway: registry: registry-1.docker.io repository: nginxinc/nginx-s3-gateway tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4 notesBackend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-notes tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef notesFrontend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-notes tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887 notesYProvider: registry: registry-1.docker.io repository: lasuite/impress-y-provider tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1 nubusDataLoader: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb nubusGuardianAuthorizationApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5 nubusGuardianManagementApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 nubusGuardianManagementUi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf nubusGuardianProvisioning: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62 nubusKeycloak: registry: artifacts.software-univention.de repository: nubus/keycloak tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65 nubusKeycloakBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa nubusKeycloakExtensionHandler: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c nubusKeycloakExtensionProxy: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056 nubusLdapNotifier: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7 nubusLdapServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984 nubusLdapServerDhInitContainer: registry: registry-1.docker.io repository: natsio/nats-box tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 nubusLdapServerLeaderElector: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c nubusNats: registry: registry-1.docker.io repository: library/nats tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7 nubusNatsBox: registry: registry-1.docker.io repository: natsio/nats-box tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 nubusNatsReloader: registry: registry-1.docker.io repository: natsio/nats-server-config-reloader tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99 nubusNotificationsApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1 nubusOpenPolicyAgent: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4 nubusOpendeskExtension: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b nubusOpendeskExtensionA2gMapper: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d nubusOxExtension: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 nubusPortalConsumer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc nubusPortalExtension: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900 nubusPortalFrontend: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b nubusPortalServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27 nubusProvisioningDispatcher: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd nubusProvisioningEventsAndConsumerApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a nubusProvisioningPrefill: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788 nubusProvisioningUdmListener: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7 nubusProvisioningUdmTransformer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e nubusSelfServiceConsumer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0 nubusUdmRestApi: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2 nubusUmcGateway: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1 nubusUmcServer: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d nubusUmcServerProxy: registry: registry-1.docker.io repository: library/traefik tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e nubusWaitForDependency: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8 opendeskKeycloakBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 opendeskStaticFiles: registry: registry-1.docker.io repository: library/nginx tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 openproject: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 openprojectBootstrap: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d openprojectDbInit: registry: registry-1.docker.io repository: library/postgres tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0 openxchangeBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803 openxchangeCoreGuidedtours: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a openxchangeCoreMW: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 openxchangeCoreUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f openxchangeCoreUIMiddleware: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 openxchangeCoreUserGuide: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 openxchangeDocumentConverter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c openxchangeGotenberg: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172 openxchangeGuardUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b openxchangeImageConverter: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 openxchangeNextcloudIntegrationUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e openxchangePublicSectorUI: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 oxConnector: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e postfix: registry: registry.opencode.de repository: bmi/opendesk/components/platform-development/images/postfix tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d postfixBootstrap: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 postgresql: registry: registry-1.docker.io repository: library/postgres tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b prosody: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783 redis: registry: registry-1.docker.io repository: bitnami/redis tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 synapse: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/synapse tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc synapseCreateUser: registry: registry-1.docker.io repository: alpine/k8s tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619 synapseGuestModule: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea synapseWeb: registry: registry-1.docker.io repository: rapidfort/haproxy-official tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c wellKnown: registry: registry-1.docker.io repository: library/nginx tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 xwikiMariadb: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf xwikiPostgres: registry: registry.opencode.de repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 ingress: enabled: true ingressClassName: nginx parameters: bodySize: collabora: 100M element: 100M nextcloud: 100M openproject: 100M oxAppSuite: 100M xwiki: 100M bodyTimeout: collabora: 600 element: 60 nextcloud: 600 openproject: 60 oxAppSuite: 60 xwiki: 60 tls: enabled: true secretName: opendesk-certificates-tls ldap: baseDn: dc=swp-ldap,dc=internal host: ums-ldap-server notifierHost: ums-ldap-notifier monitoring: grafana: dashboards: annotations: null enabled: false labels: grafana_dashboard: "1" prometheus: podMonitors: enabled: false labels: release: kube-prometheus-stack prometheusRules: annotations: {} enabled: false labels: release: kube-prometheus-stack serviceMonitors: enabled: false labels: release: kube-prometheus-stack objectstores: dovecot: bucket: dovecot endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: dovecot_user migrations: bucket: migrations endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: migration_user nextcloud: bucket: nextcloud endpoint: "" pathStyle: true port: 443 region: eu-west-1 secretKey: "" storageClass: STANDARD useSSL: true username: nextcloud_user notes: bucket: notes endpoint: "" port: 443 secretKey: "" username: notes_user nubus: bucket: ums endpoint: "" region: eu-west-1 secretKey: "" username: ums_user openproject: bucket: openproject directUploads: true enableSignatureV4Streaming: true endpoint: "" pathStyle: true region: eu-west-1 secretKey: "" useIamProfile: false username: openproject_user persistence: storageClassNames: RWO: "" RWX: "" storages: cassandra: commitLogsize: 256Mi size: 1Gi storageClassName: null clamav: size: 1Gi storageClassName: null dovecot: size: 1Gi storageClassName: null mariadb: size: 1Gi storageClassName: null matrixNeoDateFixBot: size: 1Gi storageClassName: null minio: size: 10Gi storageClassName: null nubusLdapServerData: size: 1Gi storageClassName: null nubusPortalConsumer: size: 1Gi storageClassName: null nubusProvisioningNats: size: 1Gi storageClassName: null oxConnector: size: 1Gi storageClassName: null postfix: size: 1Gi storageClassName: null postgresql: size: 1Gi storageClassName: null prosody: size: 1Gi storageClassName: null redis: size: 1Gi storageClassName: null synapse: size: 1Gi storageClassName: null xwiki: size: 1Gi storageClassName: null platform: realm: opendesk replicas: cassandra: 1 clamav: 1 clamd: 1 collabora: 1 collaboraController: 1 cryptpad: 1 dkimpy: 1 dovecot: 1 element: 1 freshclam: 1 icap: 1 intercomService: 1 jibri: 1 jicofo: 1 jigasi: 1 jitsi: 1 jitsiKeycloakAdapter: 1 jvb: 1 keycloak: 1 mariadb: 1 matrixNeoBoardWidget: 1 matrixNeoChoiceWidget: 1 matrixNeoDateFixBot: 1 matrixNeoDateFixWidget: 1 matrixUserVerificationService: 1 memcached: 1 milter: 1 minio: 1 nextcloud: 1 nextcloudExporter: 1 nginxS3Gateway: 1 notesBackend: 1 notesFrontend: 1 notesYProvider: 1 opendeskStaticFiles: 1 openprojectWeb: 1 openprojectWorker: 1 openxchangeCoreDocumentConverter: 1 openxchangeCoreGuidedtours: 1 openxchangeCoreImageConverter: 1 openxchangeCoreMW: 1 openxchangeCoreUI: 1 openxchangeCoreUIMiddleware: 1 openxchangeCoreUserGuide: 1 openxchangeGotenberg: 1 openxchangeGuardUI: 1 openxchangeNextcloudIntegrationUI: 1 openxchangePluginsUI: 1 openxchangePublicSectorUI: 1 oxConnector: 1 postfix: 1 postgres: 1 redis: 1 synapse: 1 synapseWeb: 1 umsGuardianAuthorizationApi: 1 umsGuardianManagementApi: 1 umsGuardianManagementUi: 1 umsGuardianOpenPolicyAgent: 1 umsKeycloakExtensionsHandler: 1 umsKeycloakExtensionsProxy: 1 umsLdapNotifier: 1 umsLdapServerPrimary: 2 umsLdapServerProxy: 2 umsLdapServerSecondary: 2 umsNotificationsApi: 1 umsPortalConsumer: 1 umsPortalFrontend: 1 umsPortalServer: 1 umsProvisioningApi: 1 umsProvisioningDispatcher: 1 umsProvisioningNats: 1 umsProvisioningPrefill: 1 umsProvisioningUdmTransformer: 1 umsSelfserviceConsumer: 1 umsUdmListener: 1 umsUdmRestApi: 1 umsUmcGateway: 1 umsUmcServer: 1 umsUmcServerProxy: 1 wellKnown: 1 xwiki: 1 repositories: clamav: auth: {} customURLs: - scheme: https url: ftp.swin.edu.au/sanesecurity/badmacro.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/blurl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb - scheme: https url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb - scheme: https url: ftp.swin.edu.au/sanesecurity/junk.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/lott.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb - scheme: https url: ftp.swin.edu.au/sanesecurity/phish.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/phishtank.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/porcupine.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/rogue.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/scam.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/shelter.ldb - scheme: https url: ftp.swin.edu.au/sanesecurity/spamattach.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/spamimg.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/spear.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/spearl.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb - scheme: https url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb - scheme: https url: urlhaus.abuse.ch/downloads/urlhaus.ndb mirror: scheme: https url: clamavdb.c3sl.ufpr.br helm: registryOpencodeDe: "" registryOpencodeDeEnterprise: registry.opencode.de image: dockerHub: "" registryOpencodeDe: "" registryOpencodeDeEnterprise: "" resources: cassandra: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1Gi clamd: limits: cpu: 99 memory: 4Gi requests: cpu: 0.1 memory: 1.5Gi collabora: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 512Mi collaboraController: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi cryptpad: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi dkimpy: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi dovecot: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi element: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi freshclam: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 96Mi icap: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi intercomService: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 64Mi jibri: limits: cpu: 99 memory: 3Gi requests: cpu: 0.1 memory: 384Mi jicofo: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 256Mi jigasi: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 256Mi jitsi: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 32Mi jitsiKeycloakAdapter: limits: cpu: 99 memory: 128Mi requests: cpu: 0.01 memory: 48Mi jvb: limits: cpu: 99 memory: 3584Mi requests: cpu: 0.1 memory: 384Mi mariadb: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 384Mi matrixNeoBoardWidget: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 48Mi matrixNeoChoiceWidget: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi matrixNeoDateFixBot: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 128Mi matrixNeoDateFixWidget: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi matrixUserVerificationService: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi memcached: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi milter: limits: cpu: 99 memory: 96Mi requests: cpu: 0.1 memory: 16Mi minio: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 256Mi nextcloud: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi nextcloudCron: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 512Mi nextcloudExporter: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi nginxS3Gateway: limits: cpu: 99 memory: 64Mi requests: cpu: 100m memory: 16Mi notesBackend: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 512Mi notesFrontend: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 32Mi notesYProvider: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 128Mi opendeskKeycloakBootstrap: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi opendeskStaticFiles: limits: cpu: 99 memory: 64Mi requests: cpu: 0.01 memory: 16Mi openproject: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 768Mi openprojectAppInit: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectDbInit: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectSeederJob: limits: cpu: 99 memory: 768Mi requests: cpu: 0.1 memory: 256Mi openprojectWorkers: limits: cpu: 99 memory: 4Gi requests: cpu: 0.25 memory: 512Mi openxchangeCoreDocumentConverter: limits: cpu: 99 memory: 2Gi requests: cpu: 0.25 memory: 1.25Gi openxchangeCoreGuidedtours: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeCoreImageConverter: limits: cpu: 99 memory: 2Gi requests: cpu: 0.5 memory: 1.25Gi openxchangeCoreMW: limits: cpu: 99 memory: 8Gi requests: cpu: 1 memory: 1.25Gi openxchangeCoreUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeCoreUIMiddleware: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi openxchangeCoreUIMiddlewareUpdater: limits: cpu: 99 memory: 768Mi requests: cpu: 0.5 memory: 192Mi openxchangeCoreUserGuide: limits: cpu: 99 memory: 96Mi requests: cpu: 0.02 memory: 32Mi openxchangeGotenberg: limits: cpu: 99 memory: 96Mi requests: cpu: 0.05 memory: 32Mi openxchangeGuardUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangeNextcloudIntegrationUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi openxchangePluginsUI: limits: cpu: 99 memory: 256Mi requests: cpu: 0.05 memory: 32Mi openxchangePublicSectorUI: limits: cpu: 99 memory: 96Mi requests: cpu: 0.01 memory: 32Mi oxConnector: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 64Mi postfix: limits: cpu: 99 memory: 128Mi requests: cpu: 0.1 memory: 16Mi postgresql: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi prosody: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 32Mi redis: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi synapse: limits: cpu: 99 memory: 4Gi requests: cpu: 0.5 memory: 256Mi synapseWeb: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 64Mi umsGuardianAuthorizationApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsGuardianManagementApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsGuardianManagementUi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsKeycloak: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 512Mi umsKeycloakBootstrap: limits: cpu: 99 memory: 512Mi requests: cpu: 0.1 memory: 256Mi umsKeycloakExtensionHandler: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi umsKeycloakExtensionProxy: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 48Mi umsLdapNotifier: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsLdapServer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsNotificationsApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsOpenPolicyAgent: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalConsumer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalConsumerDependencies: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalFrontend: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsPortalServer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 100Mi umsProvisioningDispatcher: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningNats: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 128Mi umsProvisioningPrefill: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsProvisioningRegisterConsumers: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi umsProvisioningUdmTransformer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 64Mi umsSelfserviceConsumer: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsStackDataUms: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmListener: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmRestApi: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUdmRestApiInit: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUmcGateway: limits: cpu: 99 memory: 1Gi requests: cpu: 0.1 memory: 256Mi umsUmcServer: limits: cpu: 99 memory: 2Gi requests: cpu: 0.1 memory: 256Mi wellKnown: limits: cpu: 99 memory: 256Mi requests: cpu: 0.1 memory: 32Mi xwiki: limits: cpu: 99 memory: 8Gi requests: cpu: 0.1 memory: 1.5Gi sample: withTemplating: "" withoutTemplating: my_value seLinuxOptions: cassandra: null clamav: null clamavSimple: null clamd: null collabora: null collaboraController: null cryptpad: null dkimpy: null dovecot: null element: null freshclam: null icap: null intercom: null jicofo: null jigasi: null jitsi: null jitsiKeycloakAdapter: null jitsiPatchJVB: null jvb: null mariadb: null matrixNeoBoardWidget: null matrixNeoChoiceWidget: null matrixNeoDateFixBot: null matrixNeoDateFixWidget: null matrixUserVerificationService: null memcached: null migrations: null milter: null minio: null nextcloud: null nextcloudExporter: null nextcloudManagement: null notesBackend: null notesFrontend: null notesYProvider: null opendeskKeycloakBootstrap: null opendeskStaticFiles: null openproject: null openprojectBootstrap: null openprojectDbInit: null openxchangeBootstrap: null openxchangeCoreGuidedtours: null openxchangeCoreMW: null openxchangeCoreUI: null openxchangeCoreUIMiddleware: null openxchangeCoreUserGuide: null openxchangeDocumentConverter: null openxchangeGotenberg: null openxchangeGuardUI: null openxchangeImageConverter: null openxchangeNextcloudIntegrationUI: null openxchangePluginsUI: null openxchangePublicSectorUI: null oxConnector: null postfix: null postgresql: null prosody: null redis: null synapse: null synapseCreateUser: null synapseGuestModule: null synapseWeb: null umsGuardianAuthorizationApi: null umsGuardianManagementApi: null umsGuardianManagementUi: null umsGuardianOpenPolicyAgent: null umsKeycloak: null umsKeycloakBootstrap: null umsKeycloakExtensionHandler: null umsKeycloakExtensionProxy: null umsLdapNotifier: null umsLdapServer: null umsNotificationsApi: null umsPortalConsumer: null umsPortalFrontend: null umsPortalServer: null umsProvisioning: null umsProvisioningNats: null umsSelfserviceConsumer: null umsStackDataUms: null umsUdmListener: null umsUdmRestApi: null umsUmcGateway: null umsUmcServer: null wellKnown: null xwiki: null secrets: cassandra: dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86 dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6 rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a centralnavigation: apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52 certificates: password: d4434074a779300dbbef2c812c66fbba163e3818 collabora: adminPassword: 1f18028954368652aa70c5498a52f194e721b145 dovecot: doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9 intercom: secret: 3eb73e36131cd6a817564c2144363875cf63a490 synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f jitsi: jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4 jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab keycloak: adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db clientSecret: as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45 dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f intercom: d42f6afee33e28f01222383c86e8741b98e14924 jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73 matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04 ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87 openproject: 3621e456b58b341fe12689612e0ca7820974d274 xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab mariadb: nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb matrixAdminBot: backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4 synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f matrixAuditBot: backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a password: 76fd3d48911fb1e18c6e477c922339279268debd synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31 matrixGroupsync: synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164 matrixNeoDateFixBot: password: f14e2756afd0fba205bd037f1d2363e7cedc8f89 matrixUserVerificationService: password: 3187b7b18610762c770a46421965e3a7e6ce93f7 minio: dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174 migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8 nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902 openprojectUser: 200f449601dec2cd474d0695f4f802493413f322 rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544 nats: natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5 nextcloud: adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65 metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9 notes: collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a nubus: guardian: udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5 ldapSearch: dovecot: 40290e376095d33c0c650723efa007abec1ee3fd element: 96380258a941863a5f9ecf74f3f88f1b563cae35 keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0 nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f ox: 57356bf92e475164a8c4522dfd8453bb162094d4 xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284 ldapSecret: b63d4de0d8766a932cad776066f76211906f8967 masterpassword: OpenDeskTest portalConsumer: provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879 provisioning: api: adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521 natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10 udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93 dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201 prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252 selfserviceConsumer: provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0 systemAccounts: administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411 sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6 openproject: adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239 apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb oxAppSuite: adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0 hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8 jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294 migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA= oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q= sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521 synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d oxConnector: provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2 postfix: opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f postgresql: keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0 keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e matrixUser: 5cd0a266029154912dd660f748137982a924e6f5 nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8 postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0 umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652 umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104 xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28 redis: password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e synapse: registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5 whiteboard: apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4 xwiki: superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551 security: clusterPostfix: enabled: false namespace: "" ingressController: namespace: ingress-nginx podSelector: matchLabels: app.kubernetes.io/name: ingress-nginx otterizeIntents: enabled: false service: type: dovecot: null jitsiVideoBridge: null postfix: null sip: jigasi: enabled: false password: null port: "5060" server: "" transport: TCP uri: "" smtp: dkim: key: secret: key: "" name: "" value: "" selector: rsa useED25519: false host: "" localpartNoReply: no-reply password: "" port: 587 username: "" technical: collabora: numPrespawnChildren: 4 turn: credentials: "" server: host: "" port: "3478" tls: host: "" port: "5349" transport: udp ... --- # Source: opendesk-migrations/templates/role.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "Role" metadata: name: opendesk-migrations-post labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm rules: # # All Migrations: Allow self management of configmap # - apiGroups: [""] resources: ["configmaps"] verbs: ["create"] - apiGroups: [""] resources: ["configmaps"] resourceNames: ["migrations-status"] verbs: ["get", "patch"] # # run_4.py # # Delete StatefulSet of Nubus Portal Consumer - apiGroups: ["apps"] resources: ["statefulsets"] resourceNames: ["ums-portal-consumer"] verbs: ["delete"] # Delete PVC of Nubus Portal Consumer to allow running as non-root - apiGroups: [""] resources: ["persistentvolumeclaims"] resourceNames: ["group-membership-cache-ums-portal-consumer-0"] verbs: ["delete"] # Execute slacpcat in LDAP Pod - apiGroups: [""] resources: ["pods/exec"] resourceNames: ["ums-provisioning-nats-0"] verbs: ["get", "create"] # Restart of Deployments - apiGroups: ["apps"] resources: ["deployments"] resourceNames: ["ums-provisioning-udm-transformer"] verbs: ["update", "patch"] # Restart of StatefulSets - apiGroups: ["apps"] resources: ["statefulsets"] resourceNames: ["ums-provisioning-udm-listener"] verbs: ["update", "patch"] # Delete the Ingress - apiGroups: ["networking.k8s.io"] resources: ["ingresses"] resourceNames: ["ums-minio-rewrites"] verbs: ["delete"] ... --- # Source: opendesk-migrations/templates/rolebinding.yaml apiVersion: "rbac.authorization.k8s.io/v1" kind: "RoleBinding" metadata: name: opendesk-migrations-post labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm roleRef: apiGroup: "rbac.authorization.k8s.io" kind: "Role" name: opendesk-migrations-post subjects: - kind: "ServiceAccount" name: opendesk-migrations-post ... --- # Source: opendesk-migrations/templates/job.yaml apiVersion: "batch/v1" kind: "Job" metadata: name: "opendesk-migrations-post-1" labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation spec: ttlSecondsAfterFinished: 60 template: metadata: annotations: labels: app.kubernetes.io/name: opendesk-migrations helm.sh/chart: opendesk-migrations-1.6.0 app.kubernetes.io/instance: opendesk-migrations-post app.kubernetes.io/managed-by: Helm spec: restartPolicy: "Never" securityContext: fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch serviceAccountName: opendesk-migrations-post containers: - name: "opendesk-migrations" securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 seLinuxOptions: null seccompProfile: type: RuntimeDefault image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7" imagePullPolicy: IfNotPresent command: - "/app/odmigs.py" volumeMounts: - name: "environmentdetails-volume" mountPath: "/app/etc/" readOnly: true resources: limits: memory: 256Mi requests: cpu: 100m memory: 128Mi env: - name: "MIGRATIONS_LOGLEVEL" value: "INFO" - name: "MIGRATIONS_CLEANUP" value: "false" - name: "MIGRATIONS_STAGE" value: "POST" - name: "MIGRATIONS_RUN_ID" value: "4" - name: "MIGRATIONS_NAMESPACE" value: "yschmidt-opendesk-argo" - name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE" value: "true" volumes: - name: "environmentdetails-volume" secret: secretName: "opendesk-migrations-post-environmentdetails" ...