merge repos

This commit is contained in:
2025-12-05 12:21:20 +00:00
parent 3e7485d1e0
commit 5de5468529
63 changed files with 1465 additions and 40 deletions
+7
View File
@@ -0,0 +1,7 @@
apiVersion: v2
name: akri-example
version: 0.1.0
dependencies:
- name: akri
version: 0.12.20
repository: https://project-akri.github.io/akri/
+5
View File
@@ -0,0 +1,5 @@
akri:
kubernetesDistro: k8s # Specify Kubernetes distro here: k3s|microk8s|k8s
udev:
discovery:
enabled: true
+2
View File
@@ -0,0 +1,2 @@
# local.realm.deconz
+78 -36
View File
@@ -1,40 +1,82 @@
---
kind: Pod
apiVersion: v1
apiVersion: apps/v1
kind: Deployment
metadata:
name: dconz
namespace: dconz
name: deconz
labels:
appName: deconz
namespace: deconz
spec:
containers:
- name: dconz
image: marthoc/deconz
tty: true
stdin: true
command: ["/bin/sh"]
securityContext:
privileged: true
env:
- name: DECONZ_DEVICE
value: /dev/ttyACM0
volumeMounts:
- name: conbee
mountPath: /dev/ttyACM0
- name: dconzrc
mountPath: /root/.local/share/dresden-elektronik/deCONZ
replicas: 1
selector:
matchLabels:
app: deconz
template:
metadata:
labels:
app: deconz
spec:
containers:
- name: deconz
image: deconzcommunity/deconz
#tty: true
#stdin: true
#command: ["/bin/sh"]
securityContext:
privileged: true
ports:
- containerPort: 8124
env:
- name: DECONZ_WEB_PORT
value: "8124"
- name: DECONZ_WS_PORT
value: "4443"
- name: DECONZ_VNC_PORT
value: "5930"
- name: DECONZ_VNC_PASSWORD
value: "gentoo123"
- name: DECONZ_VNC_MODE
value: "1"
- name: DECONZ_UPNP
value: "1"
- name: DECONZ_DEVICE
value: "/dev/ttyUSB0"
- name: DECONZ_BAUDRATE
value: "115200"
- name: DEBUG_INFO
value: "1"
- name: DEBUG_APS
value: "0"
- name: DEBUG_ZCL
value: "0"
- name: DEBUG_ZDP
value: "0"
- name: DEBUG_OTA
value: "0"
- name: TZ
value: "Europe/Berlin"
resources:
limits:
akri.sh/akri-conbee3: "1"
requests:
akri.sh/akri-conbee3: "1"
volumeMounts:
# - name: conbee
# mountPath: /dev/ttyUSB0
- name: deconz-config
mountPath: /opt/deCONZ
- name: localtime
mountPath: /etc/localtime
readOnly: true
# nodeSelector:
# environment: zigbee
volumes:
# - name: conbee
# hostPath:
# path: /dev/ttyUSB0
- name: deconz-config
persistentVolumeClaim:
claimName: deconz-pvc
- name: localtime
mountPath: /etc/localtime
readOnly: true
volumes:
- name: conbee
hostPath:
path: /dev/ttyACM0
- name: dconzrc
hostPath:
path: /home/luke/.local/share/dresden-elektronik/deCONZ
type: DirectoryOrCreate
- name: localtime
hostPath:
path: /etc/localtime
restartPolicy: Always
nodeSelector:
kubernetes.io/arch: arm64
hostPath:
path: /etc/localtime
+1 -1
View File
@@ -2,4 +2,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: dconz
name: deconz
+26
View File
@@ -0,0 +1,26 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io
name: deconz-config
labels:
appName: deconz
spec:
capacity:
storage: 20M
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-csi
mountOptions:
- nfsvers=4.1
csi:
driver: nfs.csi.k8s.io
# volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: nfs-server.default.svc.cluster.local/share##
volumeAttributes:
server: 192.168.0.40
share: /volume1/kubernetes/deconz
+16
View File
@@ -0,0 +1,16 @@
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: deconz-pvc
namespace: deconz
labels:
appName: deconz
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20M
volumeName: deconz-config
storageClassName: nfs-csi
+45
View File
@@ -0,0 +1,45 @@
---
apiVersion: v1
kind: Service
metadata:
name: deconz-lb-tcp
namespace: deconz
labels:
appName: deconz
annotations:
metallb.io/allow-shared-ip: "key-to-share-192.168.0.86"
spec:
ports:
- name: deconz-web
port: 80
targetPort: 8124
- name: deconz-ws
port: 443
targetPort: 4443
- name: deconz-vnc
port: 5900
targetPort: 5930
selector:
app: deconz
type: LoadBalancer
loadBalancerIP: 192.168.0.86
---
apiVersion: v1
kind: Service
metadata:
name: deconz-lb-udp
namespace: deconz
labels:
appName: deconz
annotations:
metallb.io/allow-shared-ip: "key-to-share-192.168.0.86"
spec:
ports:
- name: deconz-upnp
protocol: UDP
port: 1900
targetPort: 1900
selector:
app: deconz
type: LoadBalancer
loadBalancerIP: 192.168.0.86
+32
View File
@@ -0,0 +1,32 @@
esphome:
name: rambam
friendly_name: rambam
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "Mp+0Tr4aJcocvbG4r9NxRKVQG0I3QU2MRgnJLJWq2Is="
ota:
- platform: esphome
password: "916dad427f4df26e1fb4d6cd96a5b9bc"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Rambam Fallback Hotspot"
password: "IOb3oNWRDGiA"
captive_portal:
+9
View File
@@ -0,0 +1,9 @@
# esphome on kubernetes
## Installation
Just deploy files in order:
- namespace.yaml
- pvc.yaml
- deployment.yaml
- service.yaml
+75
View File
@@ -0,0 +1,75 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
name: esphome
namespace: esphome
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: esphome
app.kubernetes.io/name: esphome
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: esphome
app.kubernetes.io/name: esphome
spec:
containers:
- name: esphome-esphome-release
env:
- name: TZ
value: Europe/Berlin
- name: USERNAME
value: admin
- name: PASSWORD
value: '#gentoo#'
image: esphome/esphome:stable
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 6052
timeoutSeconds: 1
ports:
- containerPort: 6052
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 6052
timeoutSeconds: 1
resources: {}
startupProbe:
failureThreshold: 30
periodSeconds: 5
successThreshold: 1
tcpSocket:
port: 6052
timeoutSeconds: 1
volumeMounts:
- mountPath: /config
name: config-volume
- mountPath: /cache
name: cache-volume
dnsPolicy: "None"
dnsConfig:
nameservers:
- 192.168.0.5 # YOUR DNS SERVER
searches:
- realm.local # YOUR DOMAIN NAME
volumes:
- name: config-volume
persistentVolumeClaim:
claimName: pvc-nfs-esphome
- name: cache-volume
emptyDir:
sizeLimit: 5Gi
+4
View File
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: esphome
+13
View File
@@ -0,0 +1,13 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs-esphome
namespace: esphome
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Mi
storageClassName: nfs-csi
+16
View File
@@ -0,0 +1,16 @@
---
apiVersion: v1
kind: Service
metadata:
name: esphome
namespace: esphome
spec:
ports:
- port: 80
protocol: TCP
targetPort: 6052
selector:
app.kubernetes.io/instance: esphome
app.kubernetes.io/name: esphome
sessionAffinity: None
type: LoadBalancer
+1 -1
View File
@@ -27,7 +27,7 @@ spec:
value: admin
- name: PASSWORD
value: '#gentoo#'
image: esphome/esphome:2025.11.0
image: esphome/esphome:stable
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
+142
View File
@@ -0,0 +1,142 @@
esphome:
name: ds220-lcd-panel
friendly_name: DS220+ LCD Panel
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
variant: esp32s3
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "eVupNko2fMCA58CbMcMY6cACQHVi8VZbMLYX7A5z/r4="
ota:
- platform: esphome
password: "916dad427f4df26e1fb4d6cd96a5b9bc"
wifi:
ssid: "REALM_NETWORK"
password: "EineAlteDummeGanzHatEier"
manual_ip:
static_ip: 192.168.0.109
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-S3-Lcd Fallback Hotspot"
password: "H4OqsZnugvps"
captive_portal:
time:
- platform: sntp
id: sntp_time
# HTTPS-Client für DSM-API
http_request:
useragent: esphome/ds220-panel
timeout: 10s
verify_ssl: false # bei selbstsigniertem DSM-Zertifikat; mit gültigem Zertifikat auf true
# --------- Display (Waveshare ESP32-S3-LCD-1.47 / ST7789 172x320) ----------
spi:
clk_pin: GPIO40
mosi_pin: GPIO45
display:
- platform: st7789v
model: "Waveshare 1.47in 172X320"
cs_pin: GPIO42
dc_pin: GPIO41
reset_pin: GPIO39
backlight_pin: GPIO48
rotation: 180
id: lcd
lambda: |-
it.printf(4, 4, id(f16b), COLOR_CYAN, "Synology DS220+");
if (id(sntp_time).now().is_valid()) {
it.strftime(4, 26, id(f12), COLOR_SILVER, "%d.%m. %H:%M:%S", id(sntp_time).now());
}
it.printf(4, 52, id(f12), COLOR_SILVER, "Quelle: Home Assistant");
it.printf(4, 84, id(f14), COLOR_WHITE, "CPU: %5.1f %%", id(cpu_total).state);
it.printf(4, 106, id(f14), COLOR_WHITE, "RAM: %5.1f %%", id(mem_used).state);
it.printf(4, 128, id(f14), COLOR_WHITE, "Vol1: %5.1f %%", id(volume1_used).state);
if (!isnan(id(sys_temp).state)) {
it.printf(4, 150, id(f14), COLOR_WHITE, "Temp: %4.1f °C", id(sys_temp).state);
}
# Fonts
font:
- file: "gfonts://Roboto Mono"
id: f12
size: 12
- file: "gfonts://Roboto Mono"
id: f14
size: 14
- file: "gfonts://Roboto Mono"
id: f16b
size: 16
glyphs: " !\"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÄÖÜäöüß"
color:
- id: COLOR_CYAN
red: 0.0000
green: 1.0000
blue: 1.0000
white: 0.0000
- id: COLOR_SILVER
red: 0.7529
green: 0.7529
blue: 0.7529
white: 0.0000
- id: COLOR_WHITE
red: 1.0000
green: 1.0000
blue: 1.0000
white: 0.0000
- id: COLOR_RED
red: 1.0000
green: 0.0000
blue: 0.0000
white: 0.0000
- id: COLOR_GREEN
red: 0.0000
green: 0.5020
blue: 0.0000
white: 0.0000
# -------- Daten aus HA importieren (ESPHome liest HA-States) --------
sensor:
- platform: homeassistant
id: cpu_total
entity_id: sensor.realmdrive_cpu_utilization_total
unit_of_measurement: "%"
accuracy_decimals: 1
- platform: homeassistant
id: mem_used
entity_id: sensor.realmdrive_memory_usage_real
unit_of_measurement: "%"
accuracy_decimals: 1
- platform: homeassistant
id: volume1_used
entity_id: sensor.realmdrive_volume_1_volume_used
unit_of_measurement: "%"
accuracy_decimals: 1
- platform: homeassistant
id: sys_temp
entity_id: sensor.realmdrive_temperature
unit_of_measurement: "°C"
accuracy_decimals: 1
+42
View File
@@ -0,0 +1,42 @@
esphome:
name: office
esp8266:
board: nodemcuv2
# Enable logging
logger:
# Enable Home Assistant API
api:
password: ""
ota:
- platform: esphome
password: ""
wifi:
ssid: "REALM_NETWORK"
password: "EineAlteDummeGanzHatEier"
manual_ip:
static_ip: 192.168.0.108
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Office Fallback Hotspot"
password: "N5sovYEZh24d"
captive_portal:
sensor:
- platform: dht
model: DHT22
pin: D1
temperature:
name: "Office Room Temperature"
humidity:
name: "Office Room Humidity"
update_interval: 60s
+77
View File
@@ -0,0 +1,77 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: guacamole
namespace: guacamole
spec:
replicas: 1
selector:
matchLabels:
app: guacamole
template:
metadata:
labels:
app: guacamole
spec:
containers:
- name: guacd
image: guacamole/guacd:1.5.5
imagePullPolicy: IfNotPresent
ports:
- containerPort: 4822
readinessProbe:
tcpSocket:
port: 4822
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 4822
initialDelaySeconds: 15
periodSeconds: 20
- name: guacamole
image: guacamole/guacamole:1.5.5
imagePullPolicy: IfNotPresent
env:
- name: GUACD_HOSTNAME
value: "localhost"
- name: GUACD_PORT
value: "4822"
- name: POSTGRESQL_PORT
valueFrom:
secretKeyRef:
name: guacamole-db
key: postgres-port
- name: POSTGRESQL_HOSTNAME
valueFrom:
secretKeyRef:
name: guacamole-db
key: postgres-hostname
- name: POSTGRESQL_DATABASE
valueFrom:
secretKeyRef:
name: guacamole-db
key: postgres-database
- name: POSTGRESQL_USER
valueFrom:
secretKeyRef:
name: guacamole-db
key: postgres-user
- name: POSTGRESQL_PASSWORD
valueFrom:
secretKeyRef:
name: guacamole-db
key: postgres-password
ports:
- name: guacamole-app
containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
+25
View File
@@ -0,0 +1,25 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guacamole
namespace: guacamole
labels:
app: guacamole
spec:
# tls:
# - hosts:
# - guacamole.mydomain.de
# secretName: guacamole.mydomain.de
ingressClassName: nginx
rules:
- host: guacamole.realm.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: guacamole
port:
number: 8080
+4
View File
@@ -0,0 +1,4 @@
kind: Namespace
apiVersion: v1
metadata:
name: guacamole
+12
View File
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Secret
metadata:
name: guacamole-db
namespace: guacamole
data:
postgres-user: Z3VhY2Ftb2xl
postgres-password: c3VwZXJzZWNyZXQK
postgres-hostname: MTkyLjE2OC4wLjEyMw==
postgres-port: NTQzMg==
postgres-database: Z3VhY2Ftb2xl
type: Opaque
+15
View File
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: guacamole
namespace: guacamole
labels:
app: guacamole
spec:
ports:
- name: guacamole-app
port: 8080
targetPort: 8080
protocol: TCP
selector:
app: guacamole
+2
View File
@@ -0,0 +1,2 @@
# local.realm.havoice
+2
View File
@@ -0,0 +1,2 @@
# local.realm.homeassistant
+6 -2
View File
@@ -19,8 +19,14 @@ spec:
containers:
- name: home-assistant
image: "ghcr.io/home-assistant/home-assistant:stable"
imagePullPolicy: Always
securityContext:
privileged: true
# capabilities:
# add:
# - NET_ADMIN
# - NET_RAW
# - SYS_ADMIN
ports:
- containerPort: 8123
volumeMounts:
@@ -29,8 +35,6 @@ spec:
- mountPath: /etc/localtime
name: home-assistant-time-volume
readOnly: true
nodeSelector:
environment: zigbee
#hostNetwork: true
volumes:
- name: home-assistant-config-volume
+4
View File
@@ -11,6 +11,10 @@ spec:
- port: 8123
targetPort: 8123
name: home-assistant-web
- port: 5580
targetPort: 5580
name: home-assistant-ws
selector:
app: home-assistant
type: LoadBalancer
loadBalancerIP: 192.168.0.87
+2
View File
@@ -0,0 +1,2 @@
# local.realm.mosquitto
+78
View File
@@ -0,0 +1,78 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
namespace: mosquitto
labels:
app.kubernetes.io/name: mosquitto
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: mosquitto
template:
metadata:
labels:
app.kubernetes.io/name: mosquitto
spec:
initContainers:
- name: create-config
image: "eclipse-mosquitto:2.0.22"
command: ['sh', '-c', "cd /mosquitto/config/ && cp -v /tmp/mosquitto.conf mosquitto.conf && cp -v /tmp/password_file password_file"]
volumeMounts:
- name: mosquitto-conf
mountPath: /mosquitto/config
- name: mosquitto-base-config
mountPath: /tmp/mosquitto.conf
subPath: mosquitto.conf
- name: mosquitto-base-config
mountPath: /tmp/password_file
subPath: password_file
containers:
- name: mosquitto
image: "eclipse-mosquitto:2.0.22"
imagePullPolicy: IfNotPresent
ports:
- name: mqtt
containerPort: 1883
protocol: TCP
volumeMounts:
- name: mosquitto-data
mountPath: /mosquitto/data
- name: mosquitto-conf
mountPath: /mosquitto/config
livenessProbe:
tcpSocket:
port: 1883
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 60
readinessProbe:
tcpSocket:
port: 1883
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 60
startupProbe:
tcpSocket:
port: 1883
initialDelaySeconds: 0
failureThreshold: 30
timeoutSeconds: 1
periodSeconds: 5
volumes:
- name: mosquitto-data
persistentVolumeClaim:
claimName: mosquitto-data
- name: mosquitto-conf
persistentVolumeClaim:
claimName: mosquitto-conf
- name: mosquitto-base-config
configMap:
name: mosquitto-base-config
+15
View File
@@ -0,0 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yml
- deployment.yml
- persistent-volume-claim.yml
- service.yml
commonLabels:
app.kubernetes.io/name: mosquitto
app: mosquitto
configMapGenerator:
- name: mosquitto-base-config
files:
- mosquitto.conf
- password_file
+11
View File
@@ -0,0 +1,11 @@
listener 1883
persistence true
persistence_location /mosquitto/data
autosave_interval 1800
allow_anonymous false
password_file /mosquitto/config/password_file
log_dest stdout
log_dest file /mosquitto/log/mosquitto.log
log_type warning
log_timestamp true
connection_messages true
+4
View File
@@ -0,0 +1,4 @@
kind: Namespace
apiVersion: v1
metadata:
name: mosquitto
View File
@@ -0,0 +1,26 @@
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mosquitto-data
namespace: mosquitto
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: nfs-csi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mosquitto-conf
namespace: mosquitto
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: nfs-csi
+17
View File
@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: Service
metadata:
name: mosquitto
namespace: mosquitto
labels:
app.kubernetes.io/name: mosquitto
spec:
type: ClusterIP
ports:
- port: 1883
targetPort: mqtt
protocol: TCP
name: mqtt
selector:
app.kubernetes.io/name: mosquitto
+29
View File
@@ -0,0 +1,29 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
namespace: mosquitto
spec:
replicas: 1
selector:
matchLabels:
app: mosquitto
template:
metadata:
labels:
app: mosquitto
spec:
containers:
- name: mosquitto
image: eclipse-mosquitto
ports:
- containerPort: 1883
- containerPort: 9001
volumeMounts:
- mountPath: /mosquitto
name: mosquitto-volume
volumes:
- name: mosquitto-volume
persistentVolumeClaim:
claimName: mosquitto-pvc
+4
View File
@@ -0,0 +1,4 @@
kind: Namespace
apiVersion: v1
metadata:
name: mosquitto
+24
View File
@@ -0,0 +1,24 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io
name: mosquitto-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-csi
mountOptions:
- nfsvers=4.1
csi:
driver: nfs.csi.k8s.io
# volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: nfs-server.default.svc.cluster.local/share##
volumeAttributes:
server: 192.168.0.40
share: /volume1/kubernetes/mosquitto
+14
View File
@@ -0,0 +1,14 @@
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mosquitto-pvc
namespace: mosquitto
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
volumeName: mosquitto-pv
storageClassName: nfs-csi
+17
View File
@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: Service
metadata:
namespace: mosquitto
name: mosquitto-service
spec:
selector:
app: mosquitto-service
type: LoadBalancer
ports:
- name: mqtt
port: 1883
targetPort: 1883
- name: mqtt1
port: 9001
targetPort: 9001
+10
View File
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
configMapGenerator:
- name: mosquitto-base-config
behavior: replace
files:
- password_file
+1
View File
@@ -0,0 +1 @@
mqtt:$7$101$Lm0p+Cph/TBuboVL$UmT0YBaNWm6EtJinI9H1Gh4xlQOqGOsFzlZZnPzN5LCJeqKYfFnSKEKRwkSQQCf37aWlPNUKSNFaXH5nQXQ+FA==
+83
View File
@@ -0,0 +1,83 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: otbr
namespace: otbr
labels:
app: otbr
spec:
replicas: 1
selector:
matchLabels:
app: otbr
template:
metadata:
labels:
app: otbr
spec:
hostNetwork: true # Wichtig für direkten Netzwerkzugriff und mDNS
containers:
- name: otbr
image: openthread/border-router:latest # Offizielles Docker-Image
securityContext:
# Benötigt NET_ADMIN, um Netzwerkschnittstellen zu konfigurieren
capabilities:
add: ["NET_ADMIN"]
privileged: true # Privilegierter Modus kann notwendig sein für vollen Gerätezugriff
env:
# Konfigurieren Sie die Umgebungsvariablen entsprechend Ihrem Setup
- name: OT_RCP_DEVICE
# Passen Sie den Pfad zu Ihrem USB-Gerät an
value: "spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200"
- name: OT_INFRA_IF
# Name Ihrer Host-Netzwerkschnittstelle (z.B. eth0 oder wlan0)
value: "eno1"
- name: OT_THREAD_IF
value: "wpan0" # Standardwert
- name: OT_LOG_LEVEL
value: "7"
ports:
# Ports, die der OTBR für Web-GUI (80), mDNS, CoAP benötigt
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 80
hostPort: 80
protocol: UDP
# Weitere notwendige Ports für Thread/Matter Kommunikation
- containerPort: 5353
hostPort: 5353
protocol: UDP
- containerPort: 49153
hostPort: 49153
protocol: UDP
- containerPort: 5180
hostPort: 5180
protocol: UDP
- containerPort: 5683
hostPort: 5683
protocol: UDP
volumeMounts:
- name: otbr-data
mountPath: /data
- name: device-tun
mountPath: /dev/net/tun
# Zugriff auf das physische USB-Gerät
- name: device-rcp
mountPath: /dev/ttyACM0 # Muss zum OT_RCP_DEVICE passen
resources:
limits:
akri.sh/akri-conbeeii: "1"
requests:
akri.sh/akri-conbeeii: "1"
volumes:
- name: otbr-data
hostPath:
path: /var/lib/otbr # Speicherort auf dem Host für persistente Daten
type: DirectoryOrCreate
- name: device-tun
hostPath:
path: /dev/net/tun
- name: device-rcp
hostPath:
path: /dev/ttyACM0 # Muss zum OT_RCP_DEVICE passen
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUOlqQwWCkR9qgFN940dpKUEtF2G8wDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTExMTMxMzI0MDNaFw0yNjEx
MTMxMzI0MDNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCZzwa0X0n5F+9bNO1wnzNi/tVac8ZMu5YqK4+0/fiH
9I4d5YpKakns5Omop0cxf5h3GHBdztl0UmoPuGGxNi8fNpypfyhuIwiy+tfeWe4X
uIiWV5aQ584VH5YHEu//KuYCnF5efzBEUe3QGPF72WYXs6oWmC7jc8IRf6tQDZb9
1VWKni71juKHD5gZhXjZ4ajuc3mleDJAlGgvEkOJDUd9+fgWBF1N1J8HUEbtpR9e
WJNUINed7CSIGm4lLcxbiQm8SppPWpNrU3j3L7D2CAoeAE9ZzRgpvqoIEC2Tb1Mb
9UL5nK9seAcQrbTK89FwsoQCr1anpvOuVbq9amq4Bu5lAgMBAAGjUzBRMB0GA1Ud
DgQWBBR2KGOkEIuTs2OLLqDGFga9gMiqWzAfBgNVHSMEGDAWgBR2KGOkEIuTs2OL
LqDGFga9gMiqWzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAS
xJUi1fhxUumzqNtT83+RCFItyl1o7OLwV3/0nq+6JIxmkH8Ab45emGsf26bfrP4l
SR944wjdaZ5Mjw7NoX5S+z7K+H2xSK9D0pbaT6FsnM9NHJEo3SEvcmSxtkt4rz5X
SSHMFmrdHr9qp4L/D7xOU5FbKApRq0d/E4wUlE9QBIKeLxJBou8LTXODREfMIUFT
C0dOPwb+B/M7SAAf2odAIqE9iXJevIzKR4+1flBTautqLc7spJBiTlF1I2F3zVNp
0JPRCfRfnIiGxd7iYC1rBgcW7JKkxAuAq94zjdZh8PAZWjeQhNjTaL5Mo4uKvRaR
PJE0b00L036DlOPpXsN1
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCZzwa0X0n5F+9b
NO1wnzNi/tVac8ZMu5YqK4+0/fiH9I4d5YpKakns5Omop0cxf5h3GHBdztl0UmoP
uGGxNi8fNpypfyhuIwiy+tfeWe4XuIiWV5aQ584VH5YHEu//KuYCnF5efzBEUe3Q
GPF72WYXs6oWmC7jc8IRf6tQDZb91VWKni71juKHD5gZhXjZ4ajuc3mleDJAlGgv
EkOJDUd9+fgWBF1N1J8HUEbtpR9eWJNUINed7CSIGm4lLcxbiQm8SppPWpNrU3j3
L7D2CAoeAE9ZzRgpvqoIEC2Tb1Mb9UL5nK9seAcQrbTK89FwsoQCr1anpvOuVbq9
amq4Bu5lAgMBAAECggEAHYwl75S2s0Gj29OpIY+T4ZqvBfdjyu3mhSdlLhH0Iroa
ayfjjzQoC3hWYu3vwVSPx6FMRNkt8Si781Uqf063crmdEvq4m5/jVe7WdYK1OJ1c
r/UXmbLOZkRxH97FeDGXijzb7C9m6FkM5INGMNKsyDTdogWOTGe6in4KPRC/Rvfe
UkREkqW7YvpV4kU7xCetK6uhEmecZ3VzvmdE+EhvImPt6oKsB2ftXHklBusn6mKb
kwXZTx6Ti1vXfjiFnopygWwtwvW1JvMr0ujzWyaGYoT/zeYWHRkwINBlmwZJhXnp
cNVz0jb2UGQ5hGNg2HB13ItmS4Qxgw7l1P/RnRBSwQKBgQDUZl0WH4PRCSVNlKxE
M0tfSuaPrAczIy1wp1JTyh/Wq1wnMNHRP4Y+Iy0Zqy75XRZYOACG31olfo/uvxeS
JZN9bLc3aBn/CInik8y2Gi6Aqtvlbnqs2q2sVZ2guxkNG8lWdTspkx+4/DCldLvn
fnmUG+FRW8TDoyRJpERw3GE3zQKBgQC5YbDAh21monCjUuLspD1cuZ3RAQhDFrHu
yi3p0UfQqJXrms4g+kIU1dpaHT9P5sYTJDsRUxbXrDjm5UC6VN1pQiRCbYFmnzZb
QahktqRFt7g7f+wPQUD0DxOf2TF1YfzachpsW4E0mEeqbdPtxcmLJgRA78MtqNn9
PU7/Kt5I+QKBgAeN+IOf7VVTCPOgdRwb4vNpu5eim8Ly3lviZ6g5STaec7GlJ+FU
bBbrs1/1Wb9e0zuiCkrByPgKb14jh9gX5A4S/tVGq54JlLXtYducRMkoypd3fX+G
a6T0ip276eEwetHLa6ZH6FnxBl3sL/7E3dgpwbLeG7qFo/XGlPSasg6FAoGAT4N1
Wr87z3/xLDyLFNFFeJYs+M6mipAbdb7GfrnDQd5tn4bgzwhIe8NWSryswUrMvr0V
kNLAw3UdWvwODV4FMfaqsstha3Dy0aWR4tDsGPM6VFsEF273uzcURcXVDvIekFvM
tZlyC+sdIh7FfgEN918xB+FPKDB6f8JiNdRfT5ECgYAkNmbvxHKhPcPcLM4rXgk/
B0DWXHuDl5fKI6sBMZGPUOfYuP9bb0rkW9T4MMCXjGb6E9qYLwqMBd6Cn3CE3pE+
gyFxfZoWXtacNvgKbbHCMbKZVOX9Ym6exL+0Odv/1iqBzEp1iLE9ZHhWqFgbkWgg
utxHXhMat6fDMxHMtHg3vw==
-----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDlp6+zhnUiL1Ed
qsmCHg4Xt7Bw6vfi+YSKUoGtqI94PtH46X42wr0rVvESHbPtC23YmKH4wzpiyptR
HDUsrS/LLrNNQ4StcRfejn06qndrVn3MUm5CjL/wJeISm8EK4Tksst9ecwXkTkPn
7hp4Q0hi1w5mGuCy78QP2YdgUHyam2fOOxvSvbcK7qNqay9kj/NvDZFibL/2lHB/
G7mULYsB0o7qlzYwbVWp85W1yP6UvSW7LmmUVT0SfTw2tXyWLG/UtDFWwAsy0MLc
QyMehwQOp1muRcDll2TRm475b7hVuS+oiQt7Kf1t0RXNtQlsCO8p8aK/n0RWZq1h
A8smlisvAgMBAAECggEACm0mlR+xH9EjIOtKy8Ksx6yL4sVnSSGWI5m/5ZAURaLL
Kmk7Y1CE1q2abChpLYVmez4ZajaULi9BonyT3FaQUlAFvu7fMcxuB36ato1qYVOO
GKi29Oe/h72Pq9PUVKmCd0lT5uoDLRO4yr7JP9yhQC+HcODz2BTBZw1B0AByIY4N
1+hk8Fn0yPDfrUfCfUEDB3uIcxyD5YtfrCrsRIwpwzr7T8EM4Xa29HxrD0Y8H8f6
VDvxXG382fNCKVxebLPA2H/GgeD1hQwGp2x4PQKeQlI7NuDNZDxxmdIfu4Cxhgj9
0YkqSpm5MpGUCxbNgXma09EcFfn6hsYni45TFH3a+QKBgQD+VGzmRMX0VrSKq7fj
/EiQC3tWz9yYj5k1IGLzvq/3arDC2dKE0clD1QKLiA3tlM49zjCI/BYlw/bOnyxW
BJVwxQymEnaH37qwrXjHyOpZXacfEwh4dJb/FhHykDz+eJqBBMOM51hzmYj3jTNb
hOXLA8IMNs7otFrtDXbJ+v52dwKBgQDnKcc3CMnHrxu5aOpLHVV4MlKgtmWLckR5
wSDGmycBBbDB1dHJss2K8X+ULujxjkpk9LUCH2rdlt/mMvQNvYRCc3zbxFv/Ce9E
6Xc4LMA9atT9vk74MTaAWm/1CONxhfwaLUI5HIOtDS179A9FwxPM2tXX3ANUxDAZ
aVDKEr9HCQKBgQDmMxZqij8+vKgnh+wnQHeRYcMevX/m2rsKuii2hJeTc49QnoYM
0DHC4u+tydUJgRH4IUQPCVUmk6w2Mx6XMQjujHy5aKa+r0O0nR9gfbuYbctRthGJ
rcXqV1ihW+rJTfJS6zPwuol2ALdXkge1Q6IW0mz2TzmSqYRPYktt4HAoWwKBgF98
O2T5RVgtdddFhhoW+NoYd1cZYKKURcLBSsefCSJ79kJrDygwqoStMtTD98bnzsUa
67X/wkXb74qIG5WdZgeI6tdgqduUf/hIM83JdnMoMOjLdpVAxtGICdz+meynurYZ
YdRzedS+r74W10Qqy4AAGPr8T4fxLikg/pUp30b5AoGBAIhR8FHsMe4CmnJMu2Gk
4HmA3aSU35HJ1ZWq5Rz3hRfmgcFeYCt77cC4uxxzu36AKt3sgxpGr6ixetYq3UjM
CS0C/rQpBnQ0cKuKiQqRcWRu8bJ/qs3Wrjw8I3zbD0+0DSVJK6t7EXg+sJzr033h
jx/50J3TUeOsYQNRVywa5Si6
-----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDlp6+zhnUiL1Ed
qsmCHg4Xt7Bw6vfi+YSKUoGtqI94PtH46X42wr0rVvESHbPtC23YmKH4wzpiyptR
HDUsrS/LLrNNQ4StcRfejn06qndrVn3MUm5CjL/wJeISm8EK4Tksst9ecwXkTkPn
7hp4Q0hi1w5mGuCy78QP2YdgUHyam2fOOxvSvbcK7qNqay9kj/NvDZFibL/2lHB/
G7mULYsB0o7qlzYwbVWp85W1yP6UvSW7LmmUVT0SfTw2tXyWLG/UtDFWwAsy0MLc
QyMehwQOp1muRcDll2TRm475b7hVuS+oiQt7Kf1t0RXNtQlsCO8p8aK/n0RWZq1h
A8smlisvAgMBAAECggEACm0mlR+xH9EjIOtKy8Ksx6yL4sVnSSGWI5m/5ZAURaLL
Kmk7Y1CE1q2abChpLYVmez4ZajaULi9BonyT3FaQUlAFvu7fMcxuB36ato1qYVOO
GKi29Oe/h72Pq9PUVKmCd0lT5uoDLRO4yr7JP9yhQC+HcODz2BTBZw1B0AByIY4N
1+hk8Fn0yPDfrUfCfUEDB3uIcxyD5YtfrCrsRIwpwzr7T8EM4Xa29HxrD0Y8H8f6
VDvxXG382fNCKVxebLPA2H/GgeD1hQwGp2x4PQKeQlI7NuDNZDxxmdIfu4Cxhgj9
0YkqSpm5MpGUCxbNgXma09EcFfn6hsYni45TFH3a+QKBgQD+VGzmRMX0VrSKq7fj
/EiQC3tWz9yYj5k1IGLzvq/3arDC2dKE0clD1QKLiA3tlM49zjCI/BYlw/bOnyxW
BJVwxQymEnaH37qwrXjHyOpZXacfEwh4dJb/FhHykDz+eJqBBMOM51hzmYj3jTNb
hOXLA8IMNs7otFrtDXbJ+v52dwKBgQDnKcc3CMnHrxu5aOpLHVV4MlKgtmWLckR5
wSDGmycBBbDB1dHJss2K8X+ULujxjkpk9LUCH2rdlt/mMvQNvYRCc3zbxFv/Ce9E
6Xc4LMA9atT9vk74MTaAWm/1CONxhfwaLUI5HIOtDS179A9FwxPM2tXX3ANUxDAZ
aVDKEr9HCQKBgQDmMxZqij8+vKgnh+wnQHeRYcMevX/m2rsKuii2hJeTc49QnoYM
0DHC4u+tydUJgRH4IUQPCVUmk6w2Mx6XMQjujHy5aKa+r0O0nR9gfbuYbctRthGJ
rcXqV1ihW+rJTfJS6zPwuol2ALdXkge1Q6IW0mz2TzmSqYRPYktt4HAoWwKBgF98
O2T5RVgtdddFhhoW+NoYd1cZYKKURcLBSsefCSJ79kJrDygwqoStMtTD98bnzsUa
67X/wkXb74qIG5WdZgeI6tdgqduUf/hIM83JdnMoMOjLdpVAxtGICdz+meynurYZ
YdRzedS+r74W10Qqy4AAGPr8T4fxLikg/pUp30b5AoGBAIhR8FHsMe4CmnJMu2Gk
4HmA3aSU35HJ1ZWq5Rz3hRfmgcFeYCt77cC4uxxzu36AKt3sgxpGr6ixetYq3UjM
CS0C/rQpBnQ0cKuKiQqRcWRu8bJ/qs3Wrjw8I3zbD0+0DSVJK6t7EXg+sJzr033h
jx/50J3TUeOsYQNRVywa5Si6
-----END PRIVATE KEY-----
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICiTCCAXECAQAwRDELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWEx
EDAOBgNVBAoMB0NvbXBhbnkxDjAMBgNVBAMMBWFkbWluMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA5aevs4Z1Ii9RHarJgh4OF7ewcOr34vmEilKBraiP
eD7R+Ol+NsK9K1bxEh2z7Qtt2Jih+MM6YsqbURw1LK0vyy6zTUOErXEX3o59Oqp3
a1Z9zFJuQoy/8CXiEpvBCuE5LLLfXnMF5E5D5+4aeENIYtcOZhrgsu/ED9mHYFB8
mptnzjsb0r23Cu6jamsvZI/zbw2RYmy/9pRwfxu5lC2LAdKO6pc2MG1VqfOVtcj+
lL0luy5plFU9En08NrV8lixv1LQxVsALMtDC3EMjHocEDqdZrkXA5Zdk0ZuO+W+4
VbkvqIkLeyn9bdEVzbUJbAjvKfGiv59EVmatYQPLJpYrLwIDAQABoAAwDQYJKoZI
hvcNAQELBQADggEBAHJNcg2Wye8qJn1yonBjKHFH+5OJ9AcBb15YCPxxChw4Qqn9
os6cFMfWleX2IyUzHk9SZ5DajRuALNhFNiYB4zfKJutFHmgwg9qQzXJMCfGPNs1q
FPhndNchp+5m72+g3z+0YcXHziBmhUciDdu1emPnHmnpVa6vFTyQf0c4V7CjkTiX
ML4nCAjaZsmVOhBAHts0mNr++G7fKt9z/rivFQrjkyPOv94saOgjE/3lgIjMtN7a
3vMI1Xn16uHtQSo1QnHtRnERPpUYA+lwTliPdFF9DJ6pxuBnzCnxOag8pNxzjO7C
8hO2dDxeof3bw0hNwTTsjyZXYKfa1HtHFjXpHrQ=
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIUbGRD0WDeiR0daTzRroopeM3co/swDQYJKoZIhvcNAQEL
BQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExEDAOBgNVBAoM
B0NvbXBhbnkxEDAOBgNVBAMMB3Jvb3QtY2EwHhcNMjUxMTEzMTMyMzQyWhcNMzUx
MTExMTMyMzQyWjBEMQswCQYDVQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEQ
MA4GA1UECgwHQ29tcGFueTEOMAwGA1UEAwwFYWRtaW4wggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDlp6+zhnUiL1EdqsmCHg4Xt7Bw6vfi+YSKUoGtqI94
PtH46X42wr0rVvESHbPtC23YmKH4wzpiyptRHDUsrS/LLrNNQ4StcRfejn06qndr
Vn3MUm5CjL/wJeISm8EK4Tksst9ecwXkTkPn7hp4Q0hi1w5mGuCy78QP2YdgUHya
m2fOOxvSvbcK7qNqay9kj/NvDZFibL/2lHB/G7mULYsB0o7qlzYwbVWp85W1yP6U
vSW7LmmUVT0SfTw2tXyWLG/UtDFWwAsy0MLcQyMehwQOp1muRcDll2TRm475b7hV
uS+oiQt7Kf1t0RXNtQlsCO8p8aK/n0RWZq1hA8smlisvAgMBAAGjQjBAMB0GA1Ud
DgQWBBQb5FENWVDBOzS4t0rBZKdQ6IlFMzAfBgNVHSMEGDAWgBSnfHi6KsFYt3Xn
aL0QaZ3z58KsZDANBgkqhkiG9w0BAQsFAAOCAQEAKdTnuJPWA+ayOm1Afigl0pOE
c/NeTK4sLiY/OYeR4sb8EX53SbilymNsmlcPmsWFgvwNKc0qgct+Z/26gQEVlUZr
wj2YdJV/tfXIXC7qmjv+25bU6Kri2syXlv/gzNnVEJoBJvkK+l8pQRwvzSxATx1Y
jKn5RGTZl005AXVF+DtN4cV1MECp9+TubZvCC77E5B654EVaHDChY/BUW5YJ2M1U
gCe7WwScA2OOeaUc5Dq+rQ6JZ/lSTLtvaLdzPu+8klvTBw/ba048M0/ZJqozRZW6
vbXkHxp1k38nPn/4fXwp519mRdWmfxDTLVLbADqBjX2z9f4rQSLiR7iS3a5s6g==
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDAdY4cJfz1NeMP
7csiG1iNzkPoVJc60Ag7oNDxY8To5qyfYU5t8FSLda2yYIbnXnF4e+KxmxN4pS/h
0knT4Ok1626jT0xqb7zzRv/X51tkLkk4BiS8dSRFME5sMmv+/NEZmGlWCnOOyO2p
6N1Tk/jbyqUae7aRZy5ISNzvDvasU491jCDY1OEEof2jujb7iKEsiAjmZvY+XJ07
zLZBhAdFvlTPODpKHrqjFxS6rEac5ell8lGPP8qNDpBUfVGCYsf1RgUwSEC3ypAt
po6iMwX3tc5vslsP5xacX8n6AIAl1Gb2K/oUmvClKXWwnP9k7j74SPEGxJ+aAcLz
9AB+kuIhAgMBAAECggEABM3qckFwgx6JQIiLHZrZJxETGOWjsNAopHRrQtteuwGn
JYNkVdI+Cg0x/NX0CCqPYpaVHiHk5ooZG+YH+cYPjE0IQgNkwPNxIBGRqW4ZFfMh
2MguepXiBegizQilMYRWI/FuD7vLDrFtXWR2wfNbrwDsBjE4aYDN4vgOq9kPx1Vz
gFPl2J6c5/Djz7SnqOhgyWh1mMA2IMF/hj9CPLd9uPTJIsGUyDkHJlMd9A8NxC1K
QMLU37MBzpGzhbChCcii0WJj4F4nfZV//WaVF+ZqURnix7Q03w21Zx2vcVL2Qti9
f0LIBxv5ucdso8JtO7yxvZABG6Hyjp8Z43CprIACkQKBgQD7YWFesZqvOPVf3AgE
sleW9jDigl/otLEI2qHFLwiIO0jQOAtWh1nHsmG+hGNTJPXPK0CtIumHcC6Jcywo
yxNpTu2jdW6TsnoojF/yfeNf4VEwhKfoeJLW+6dEQlB0YiTCDTeyWZVKw63Ox5Zx
bNN5DBJi6Tads945a5Y7234PfwKBgQDD/vrZOy9QsRrRAxXRBjZocjvD7rK6w/Bi
+NR9SApzFBTMpIU3WfU+Js70sq9Q2bqE8KqAWZP+A+pXF7+E+WUuw5MFSd4UVoc9
PVo/vl0Scl8AkHECCrhS5vdW7cQj5GPavRix1zAUZL7fXtgU1CAs2IliW6sVNp9j
lHxDhCXeXwKBgCNE729kxcot2KeBbJKUHxvsIMG2/xPcPjZ6zlWnGrBaeQXVxyl1
xg/xpCsh0fm5Zs+RRvrDujYpdC4OvbRfgbK1wzu63y/Ty7XitBeGuB8cstJ22kQQ
nrGRD0/Rag5aMsQTLKxWS075E2q+sAnr9eO24OGFzQblVJmD0clGK3KrAoGAWlWl
TIZI0ooub/NaFNMmNJGiFjZoTkiM/TDuzydrGYtB4uhZNh/SNukwLfxFbaBMpYU/
MJUY7tTjJ20cqq9AAYPGuYNIRltzTbh/Zi3ZO+1W+C2ayHQkbKFjkr9Xzaswktrh
DOa/lEay6sUOFtuGUOUkvR6/BbH9WKpRc9Tul0UCgYEAiXabJIGfo58U3Cl0r9Mz
8BxR0p0aq9jiOzHHLptYAT6eRxZWX8Tt7wPsPvpZnQ3PVJgHCC4ut05RqxddxHrX
sMG6njUZOUfRcj0MOOH90Rzl1i0JuHDRM6CxYi9QtCnfyBWsBayTbKht/rudDeYG
oUP68/9LjJh/3Mi5u4kmI3Y=
-----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDAdY4cJfz1NeMP
7csiG1iNzkPoVJc60Ag7oNDxY8To5qyfYU5t8FSLda2yYIbnXnF4e+KxmxN4pS/h
0knT4Ok1626jT0xqb7zzRv/X51tkLkk4BiS8dSRFME5sMmv+/NEZmGlWCnOOyO2p
6N1Tk/jbyqUae7aRZy5ISNzvDvasU491jCDY1OEEof2jujb7iKEsiAjmZvY+XJ07
zLZBhAdFvlTPODpKHrqjFxS6rEac5ell8lGPP8qNDpBUfVGCYsf1RgUwSEC3ypAt
po6iMwX3tc5vslsP5xacX8n6AIAl1Gb2K/oUmvClKXWwnP9k7j74SPEGxJ+aAcLz
9AB+kuIhAgMBAAECggEABM3qckFwgx6JQIiLHZrZJxETGOWjsNAopHRrQtteuwGn
JYNkVdI+Cg0x/NX0CCqPYpaVHiHk5ooZG+YH+cYPjE0IQgNkwPNxIBGRqW4ZFfMh
2MguepXiBegizQilMYRWI/FuD7vLDrFtXWR2wfNbrwDsBjE4aYDN4vgOq9kPx1Vz
gFPl2J6c5/Djz7SnqOhgyWh1mMA2IMF/hj9CPLd9uPTJIsGUyDkHJlMd9A8NxC1K
QMLU37MBzpGzhbChCcii0WJj4F4nfZV//WaVF+ZqURnix7Q03w21Zx2vcVL2Qti9
f0LIBxv5ucdso8JtO7yxvZABG6Hyjp8Z43CprIACkQKBgQD7YWFesZqvOPVf3AgE
sleW9jDigl/otLEI2qHFLwiIO0jQOAtWh1nHsmG+hGNTJPXPK0CtIumHcC6Jcywo
yxNpTu2jdW6TsnoojF/yfeNf4VEwhKfoeJLW+6dEQlB0YiTCDTeyWZVKw63Ox5Zx
bNN5DBJi6Tads945a5Y7234PfwKBgQDD/vrZOy9QsRrRAxXRBjZocjvD7rK6w/Bi
+NR9SApzFBTMpIU3WfU+Js70sq9Q2bqE8KqAWZP+A+pXF7+E+WUuw5MFSd4UVoc9
PVo/vl0Scl8AkHECCrhS5vdW7cQj5GPavRix1zAUZL7fXtgU1CAs2IliW6sVNp9j
lHxDhCXeXwKBgCNE729kxcot2KeBbJKUHxvsIMG2/xPcPjZ6zlWnGrBaeQXVxyl1
xg/xpCsh0fm5Zs+RRvrDujYpdC4OvbRfgbK1wzu63y/Ty7XitBeGuB8cstJ22kQQ
nrGRD0/Rag5aMsQTLKxWS075E2q+sAnr9eO24OGFzQblVJmD0clGK3KrAoGAWlWl
TIZI0ooub/NaFNMmNJGiFjZoTkiM/TDuzydrGYtB4uhZNh/SNukwLfxFbaBMpYU/
MJUY7tTjJ20cqq9AAYPGuYNIRltzTbh/Zi3ZO+1W+C2ayHQkbKFjkr9Xzaswktrh
DOa/lEay6sUOFtuGUOUkvR6/BbH9WKpRc9Tul0UCgYEAiXabJIGfo58U3Cl0r9Mz
8BxR0p0aq9jiOzHHLptYAT6eRxZWX8Tt7wPsPvpZnQ3PVJgHCC4ut05RqxddxHrX
sMG6njUZOUfRcj0MOOH90Rzl1i0JuHDRM6CxYi9QtCnfyBWsBayTbKht/rudDeYG
oUP68/9LjJh/3Mi5u4kmI3Y=
-----END PRIVATE KEY-----
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICjTCCAXUCAQAwSDELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWEx
EDAOBgNVBAoMB0NvbXBhbnkxEjAQBgNVBAMMCWRhc2hib2FyZDCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMB1jhwl/PU14w/tyyIbWI3OQ+hUlzrQCDug
0PFjxOjmrJ9hTm3wVIt1rbJghudecXh74rGbE3ilL+HSSdPg6TXrbqNPTGpvvPNG
/9fnW2QuSTgGJLx1JEUwTmwya/780RmYaVYKc47I7ano3VOT+NvKpRp7tpFnLkhI
3O8O9qxTj3WMINjU4QSh/aO6NvuIoSyICOZm9j5cnTvMtkGEB0W+VM84OkoeuqMX
FLqsRpzl6WXyUY8/yo0OkFR9UYJix/VGBTBIQLfKkC2mjqIzBfe1zm+yWw/nFpxf
yfoAgCXUZvYr+hSa8KUpdbCc/2TuPvhI8QbEn5oBwvP0AH6S4iECAwEAAaAAMA0G
CSqGSIb3DQEBCwUAA4IBAQCg8x0zOEEUsR6JM0tqM85PfQNdHIDd+Dlv9fmL5UW9
4Kawq+t6Jse5UH8Ca/ijk57/5ILr7DWZ+bUOZmuxCD62PSzkPb6swY6W/KCvrOEW
Gn/PP5Yfz30alPrh0aHJbON6pLjytkjLKTOVsmZcuJNWdMWEHpSF/ypvA2PUq+eD
PYi9zyTya+RqzHs7n4v5SJvo6zujeAKswJVtdJrPjsTmLiNO9ZXTqcVFapkQm9Ts
t5uWhVXMiB8Hcbo1p+iv3HI1k3sSJX4r1mAwd0f0HImaZXTqtN2Hc1azn1zv2Nx4
Zp8tw8XKqnuSg3XRZiL1XM7XzxmqxNU1aGRMynVueGIp
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDXjCCAkagAwIBAgIUbGRD0WDeiR0daTzRroopeM3co/0wDQYJKoZIhvcNAQEL
BQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExEDAOBgNVBAoM
B0NvbXBhbnkxEDAOBgNVBAMMB3Jvb3QtY2EwHhcNMjUxMTEzMTMyMzQyWhcNMzUx
MTExMTMyMzQyWjBIMQswCQYDVQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEQ
MA4GA1UECgwHQ29tcGFueTESMBAGA1UEAwwJZGFzaGJvYXJkMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwHWOHCX89TXjD+3LIhtYjc5D6FSXOtAIO6DQ
8WPE6Oasn2FObfBUi3WtsmCG515xeHvisZsTeKUv4dJJ0+DpNetuo09Mam+880b/
1+dbZC5JOAYkvHUkRTBObDJr/vzRGZhpVgpzjsjtqejdU5P428qlGnu2kWcuSEjc
7w72rFOPdYwg2NThBKH9o7o2+4ihLIgI5mb2PlydO8y2QYQHRb5Uzzg6Sh66oxcU
uqxGnOXpZfJRjz/KjQ6QVH1RgmLH9UYFMEhAt8qQLaaOojMF97XOb7JbD+cWnF/J
+gCAJdRm9iv6FJrwpSl1sJz/ZO4++EjxBsSfmgHC8/QAfpLiIQIDAQABo0IwQDAd
BgNVHQ4EFgQUoaD81UeKrbU61BEoKFfY+Bur8AswHwYDVR0jBBgwFoAUp3x4uirB
WLd152i9EGmd8+fCrGQwDQYJKoZIhvcNAQELBQADggEBAKOXWQPMEDa0xmC+KB1i
RCQkoKpIL2Ao/FMAPH/FegzocnHn/AgUPIs74zsO/J98eWaebLf0K59Po+pdEFK4
wS2UcSXfpEef4O0Sf+Pincyzf9Kg8PJvctiicnN+UffbPfrlZJZUYMOK0UwXPPWZ
Ra/HbSkR6DCBdI21+AnauaeglddZAnR8SVLNceH/JcujY//truzANi56B+fF6pMI
7pqIqHdu8KXawZyp9l7fPcj4c4fmSOtPdmQb8AADDcxJDBsKM1EiKkZk6XIL5lcL
FRMdFMu/EZ249fhpE2a2npQpFJwtUatp7vqMOPIyV0WwGRS0Ga0uxxryL0iLanV3
Aug=
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLVNmUrz5bLSjZ
iCr7r0GjTiiISOwNcySssg6Ka+uTp1E7f2DKRrBfkU1/nNBXeb/1KqkujAdTvEYc
rqhcCjocYE2ytRDUGTk5TAig+Pa4PbpOoAo9NqacTS/QLprICdha3s+BcaBZT0p6
J3s9HgV9QatJf8Cch+ErhdQIyZDsoUoOSiEQDYLRRiLKggQ/Y25UcBmG4a7gmaqU
IjdWNleDQtE+so/Eu/hIHWeYzIZP2q3R66mE2xiLwfUbaNN/VTmoEUYD4MP7KgGv
1YoAFvXoXZ6j3ueLSCM5n4du+jZpEOWTeGrX9POR9oBd+/PjY9w7bKlEfCFcqgdO
fkOTB4srAgMBAAECggEAUpb4eghkj6xcN1+z9d9ODgMlO5ZDK4NlljAM7/S+D4+a
00v+CKuF4IuoqvkLNzzg17ioV5vRLhX/dI8NG7WbvQLxDHG3kC9eqwNTTe9SZ6vL
DTy8a/jS3BIOJcWIYVB+bQqrxqxcsWofmlaHHGAhYqtV49jcZ7hZodAOPDODhlmT
d0pSDiEAcQyUjYv8qywxgMQY8T/hVnWNF0KQxR5jPRJMku8L2flgVBBeMklbEARs
J8IbmjnAWuBcMMnxUZY2zUZJx/KKpVY+sOEDX64U/6dTvP+iXz/kjxX9/Y+Qkd72
oOm6q/knuuHeTHddUFnHx4xlBLf8oTEh56m4ouj+oQKBgQDzukD49ofC30f4PcCT
fG0+v+RFGUFu1u+BPapDnkA4msMMKptvQWMtTMyzzTD+MkqqHPgkVY+YiGbttyPL
bfhJnAG6r76WyPP+Jrg3cg5JcSv9ylg6BSx81QwhsTCbtuMcBIHqucSOL0nNrmbj
XVQVVH4jU9enz7QPchCKpyA4/wKBgQDVkd/Au9M8mR+eC/Y8G57bygnynLO6axMa
yhDvrrzDNRKfSq3ah/1VfRjnKYK1EhDXAY5vLaC4A/bUmpCjU5HdbxCrPCpOgo+G
6PCBcJemcrCnO25zEHQC4Mz4/6DsgI99UUIEC2FUTjurbnrGNSKWEwN7gTFn9bC8
WC56rODh1QKBgQDngOC6GiE2HrPTvYQwEx4JXmfKooSebZYtYo9ZjvVdTtM5uTbO
5IL5wlsl5h9FNCvrjXy9tm+g6N8rqKtdTWVrNb4Gv2v++X2YyNpt/+5GIDMy64IG
CmgJYqwVTKLpJTxvnnBwrmdeztgBgEjGah217P2rPLY49XcIvMWtjbVzrQKBgGpj
k4oIRs8uHED4Bn6k57rnZ5MzGpkn08mJlWxAqIm5u4AcjISLL9jRS4GD/TfEOx1Q
Cis6GJDycJgyMxEZhVVAiZYzj4OyqFr1WTGx6+mfwn5cLcYmERSJ9bGobfrChDhS
LUekf6SmoDTjAUgRmhwWdqqkjf8Stirs5qJ30kLNAoGANAjK1AAmhLZrZl2Oc+CK
/X2n94LGiF2Nr8uRnDlnOMe2x1ysWcBRR423c4Qv3CeJr3N6sQieq0dozXYEV05h
BC9H+pDzttldgcgkVLDRbnKhTWoSJizNSSuBcXZRet10akwmKfD4S0kNfAdqphCx
VbiL+xCELeO16YjC/ixyY2I=
-----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLVNmUrz5bLSjZ
iCr7r0GjTiiISOwNcySssg6Ka+uTp1E7f2DKRrBfkU1/nNBXeb/1KqkujAdTvEYc
rqhcCjocYE2ytRDUGTk5TAig+Pa4PbpOoAo9NqacTS/QLprICdha3s+BcaBZT0p6
J3s9HgV9QatJf8Cch+ErhdQIyZDsoUoOSiEQDYLRRiLKggQ/Y25UcBmG4a7gmaqU
IjdWNleDQtE+so/Eu/hIHWeYzIZP2q3R66mE2xiLwfUbaNN/VTmoEUYD4MP7KgGv
1YoAFvXoXZ6j3ueLSCM5n4du+jZpEOWTeGrX9POR9oBd+/PjY9w7bKlEfCFcqgdO
fkOTB4srAgMBAAECggEAUpb4eghkj6xcN1+z9d9ODgMlO5ZDK4NlljAM7/S+D4+a
00v+CKuF4IuoqvkLNzzg17ioV5vRLhX/dI8NG7WbvQLxDHG3kC9eqwNTTe9SZ6vL
DTy8a/jS3BIOJcWIYVB+bQqrxqxcsWofmlaHHGAhYqtV49jcZ7hZodAOPDODhlmT
d0pSDiEAcQyUjYv8qywxgMQY8T/hVnWNF0KQxR5jPRJMku8L2flgVBBeMklbEARs
J8IbmjnAWuBcMMnxUZY2zUZJx/KKpVY+sOEDX64U/6dTvP+iXz/kjxX9/Y+Qkd72
oOm6q/knuuHeTHddUFnHx4xlBLf8oTEh56m4ouj+oQKBgQDzukD49ofC30f4PcCT
fG0+v+RFGUFu1u+BPapDnkA4msMMKptvQWMtTMyzzTD+MkqqHPgkVY+YiGbttyPL
bfhJnAG6r76WyPP+Jrg3cg5JcSv9ylg6BSx81QwhsTCbtuMcBIHqucSOL0nNrmbj
XVQVVH4jU9enz7QPchCKpyA4/wKBgQDVkd/Au9M8mR+eC/Y8G57bygnynLO6axMa
yhDvrrzDNRKfSq3ah/1VfRjnKYK1EhDXAY5vLaC4A/bUmpCjU5HdbxCrPCpOgo+G
6PCBcJemcrCnO25zEHQC4Mz4/6DsgI99UUIEC2FUTjurbnrGNSKWEwN7gTFn9bC8
WC56rODh1QKBgQDngOC6GiE2HrPTvYQwEx4JXmfKooSebZYtYo9ZjvVdTtM5uTbO
5IL5wlsl5h9FNCvrjXy9tm+g6N8rqKtdTWVrNb4Gv2v++X2YyNpt/+5GIDMy64IG
CmgJYqwVTKLpJTxvnnBwrmdeztgBgEjGah217P2rPLY49XcIvMWtjbVzrQKBgGpj
k4oIRs8uHED4Bn6k57rnZ5MzGpkn08mJlWxAqIm5u4AcjISLL9jRS4GD/TfEOx1Q
Cis6GJDycJgyMxEZhVVAiZYzj4OyqFr1WTGx6+mfwn5cLcYmERSJ9bGobfrChDhS
LUekf6SmoDTjAUgRmhwWdqqkjf8Stirs5qJ30kLNAoGANAjK1AAmhLZrZl2Oc+CK
/X2n94LGiF2Nr8uRnDlnOMe2x1ysWcBRR423c4Qv3CeJr3N6sQieq0dozXYEV05h
BC9H+pDzttldgcgkVLDRbnKhTWoSJizNSSuBcXZRet10akwmKfD4S0kNfAdqphCx
VbiL+xCELeO16YjC/ixyY2I=
-----END PRIVATE KEY-----
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICjDCCAXQCAQAwRzELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWEx
EDAOBgNVBAoMB0NvbXBhbnkxETAPBgNVBAMMCGZpbGViZWF0MIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1TZlK8+Wy0o2Ygq+69Bo04oiEjsDXMkrLIO
imvrk6dRO39gykawX5FNf5zQV3m/9SqpLowHU7xGHK6oXAo6HGBNsrUQ1Bk5OUwI
oPj2uD26TqAKPTamnE0v0C6ayAnYWt7PgXGgWU9Keid7PR4FfUGrSX/AnIfhK4XU
CMmQ7KFKDkohEA2C0UYiyoIEP2NuVHAZhuGu4JmqlCI3VjZXg0LRPrKPxLv4SB1n
mMyGT9qt0euphNsYi8H1G2jTf1U5qBFGA+DD+yoBr9WKABb16F2eo97ni0gjOZ+H
bvo2aRDlk3hq1/TzkfaAXfvz42PcO2ypRHwhXKoHTn5DkweLKwIDAQABoAAwDQYJ
KoZIhvcNAQELBQADggEBACNuTFqNTQKwbHFX2TNbLZPTQPBbygpDsF9rTGGDInFO
nExH+SwhAZZCaxIoh0Mo0ac13nAxDkWB0TOkwf6GTgty0EIckez0noesIfR2G2sb
rlWFB5ATV4/N+bbLRZjyPhujsJxI851+aImqbbOM5e1Yw+n3DidkhkljEE0toF+I
iTSXfrkjYsscTxXkLEmQA0wgGxtjL8g6wqCNz6ftkLPmxGflgfN+k+9Eo/OG5QpU
MURJR4GxfGp758P0vF7uCw2fuUNIOLN2Kp2aIwndKzODE66QEq4Fx+VjmJEyM9K/
O0YBryRjYT2rla+EiVu/PvT0eiVmOVxmr0991AVuW6I=
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUbGRD0WDeiR0daTzRroopeM3co/4wDQYJKoZIhvcNAQEL
BQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExEDAOBgNVBAoM
B0NvbXBhbnkxEDAOBgNVBAMMB3Jvb3QtY2EwHhcNMjUxMTEzMTMyMzQyWhcNMzUx
MTExMTMyMzQyWjBHMQswCQYDVQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEQ
MA4GA1UECgwHQ29tcGFueTERMA8GA1UEAwwIZmlsZWJlYXQwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDLVNmUrz5bLSjZiCr7r0GjTiiISOwNcySssg6K
a+uTp1E7f2DKRrBfkU1/nNBXeb/1KqkujAdTvEYcrqhcCjocYE2ytRDUGTk5TAig
+Pa4PbpOoAo9NqacTS/QLprICdha3s+BcaBZT0p6J3s9HgV9QatJf8Cch+ErhdQI
yZDsoUoOSiEQDYLRRiLKggQ/Y25UcBmG4a7gmaqUIjdWNleDQtE+so/Eu/hIHWeY
zIZP2q3R66mE2xiLwfUbaNN/VTmoEUYD4MP7KgGv1YoAFvXoXZ6j3ueLSCM5n4du
+jZpEOWTeGrX9POR9oBd+/PjY9w7bKlEfCFcqgdOfkOTB4srAgMBAAGjQjBAMB0G
A1UdDgQWBBTir9onRnbCpEHmMZtBQZKt8mRVGTAfBgNVHSMEGDAWgBSnfHi6KsFY
t3XnaL0QaZ3z58KsZDANBgkqhkiG9w0BAQsFAAOCAQEAVsCaHIMoAUaVNbEa8xsF
Rz5vMc/gZ81mrFrfVO5LmU30+Bi7gWarz9CjzdY20reDQBfPYiiinooGERDQcpkR
kJm4y9jIKQtql+mWcD2kj19Tvnzxdhm6eLUy5ikILjOxfhdVSugKxzBsOxyZ4VYc
SMoqUqxfiQNvJGqf9g5lZhsJl6x5lKHKiQ5y7JVOlCkxBxc3Vqu3IWF6Uw5l6Iir
QN91mmVn6UOp5SwTrVIxiIwQ3OBQ3WP4rHZGvBO/taDlyZaLXitSc6npkWBiCaJI
yuV7H3vulQAnqmoBpbER6RqvbLSSriHVx2BOlHLNbtuuJGRJHCIFvquhlkwfeEbA
xA==
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCur2j7OSBt+dIT
sv1YbPTSjv8O6gTjyKjbUzxCP/wiD29ro/KhAfsR3ZvNRUu05ETlbQdkpbfSR/+4
0UfBQPcuMhqwKy9/m1tboSGHHCxG9rVTjDuieZJ+3NU87RHxrPFSMDsyVsXORSfJ
s6G8fgC/XiaAlf8xeN+pwQiL9ZBVSDP7ThfNIR6eiDwVe1ZpNSmU+4qvQ7hcoRV3
d3YfXb5k5OxQlbvtczh0wCIfwwCTnMAwJI2yirsjXBTtycz4Nsl3+PNqQmUtxhhC
JL3mAZY82BUNyoXsaCw1HWsQkfBJTyauT9+dlMS3SkGUZBPwVGv618uw3EPleG8R
5kfTxST/AgMBAAECggEAB9uUGVjkgI3wSTqP8t5T1PThvEYCmkx4bAU+fKxsJwwS
swDY9S0lohQZ4g3v7d8myjsxTfG2ZxseAa5IUAUgGU/fq3UF2fOfFGwXGgDGbRrD
5VI1jIVzdYlxfiAb4ocpA81vnEAS/chWldgiulvgpLsTeE1HAW6ygOxR+hm9uFhH
+XN4sjFZwj7oq2ktjv4wDDQMNkMzh8Fpy4fV0jRFqFK2zOdKB2CPQ9iPvHj6+0mw
eeWzX0foT1OTyNILPFfutnB0SQdvRm0ej+ZLdDoj9d9HZa0aOLoJ+JDaZyc+BaF2
3S5IOL/symJAoc6hrQz9ZJnHQEkiEecIxoLUVGBa4QKBgQDsertVm2LalZFoJnN2
JAEaNJcUsvKET+zpI0w3ilnUpJ1fzsVzaI5+oXlN4J2fdQLo2z57Y4onL7jNBMZd
+8hXQG5qjUIyiV8xzE3HxU6pT252oxjNYOBoUfbOKhW2AkZxtghY5YduCrq7OgpG
q2xIf4KMX+34Uoo5HfUQ92IquwKBgQC9Gti81ufz1M2WQCa01hJzNPcCHbbSiKCW
MJjkF8k45WoDVd2TUOm07Vfivuj8tf00dVxotux3iQKIe8kSutqOJY0TrRcYxsF5
TXjidPevcdIP6yv/mAMwYgmGUl6ZuVuufN6A5ePeour24/eLpZZMVNlBOJUrAaP9
5QpTEMcUjQKBgQCwqf/JtIvlQFegtxkK6VrpeOBlVkpXDl6uzO/jjjgN4+yt5osb
7MCHWZqF04ft2DyUOTY0d+h93ejxQN/w1miUxk22zFDn8Dhtu3NgCsb5NZ4Qg0fE
Jtt/E7yNyGLv1kNKL/OMdez3CIz30iRbJzV988RTmlbtbLxWb0rloep0gQKBgELC
F4GS3I/XsDw6qW9to1XIfOriUohAc3CR92eOfhr34lULGw3Gorqcj0oc22NbW+gJ
BnZxHUmVtK86A+H41O8ZkpQ/pse4YtTP5L0NTeNB60ZzXzT8FSQfd/1TVtIt/Y+7
xVD711XhbdF66QkDi+umiIvdzctA6QPYt6xbX+yBAoGAVU+ZtxAlLuo+4/0lYuMk
l+9bmRTMVsYweU52OI5ARjzfX8/MEhCwvGx16n3YVW0IJehq+UEt0SS+c15SJS08
NPnvAMYgTY8aHqj8HuK9T30KQVh3s8mia/pbOqGyPw6A2NbkwoaPbzfZTBYGodAc
TOiFfKCQTcvAVe9iDIrOLA8=
-----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCur2j7OSBt+dIT
sv1YbPTSjv8O6gTjyKjbUzxCP/wiD29ro/KhAfsR3ZvNRUu05ETlbQdkpbfSR/+4
0UfBQPcuMhqwKy9/m1tboSGHHCxG9rVTjDuieZJ+3NU87RHxrPFSMDsyVsXORSfJ
s6G8fgC/XiaAlf8xeN+pwQiL9ZBVSDP7ThfNIR6eiDwVe1ZpNSmU+4qvQ7hcoRV3
d3YfXb5k5OxQlbvtczh0wCIfwwCTnMAwJI2yirsjXBTtycz4Nsl3+PNqQmUtxhhC
JL3mAZY82BUNyoXsaCw1HWsQkfBJTyauT9+dlMS3SkGUZBPwVGv618uw3EPleG8R
5kfTxST/AgMBAAECggEAB9uUGVjkgI3wSTqP8t5T1PThvEYCmkx4bAU+fKxsJwwS
swDY9S0lohQZ4g3v7d8myjsxTfG2ZxseAa5IUAUgGU/fq3UF2fOfFGwXGgDGbRrD
5VI1jIVzdYlxfiAb4ocpA81vnEAS/chWldgiulvgpLsTeE1HAW6ygOxR+hm9uFhH
+XN4sjFZwj7oq2ktjv4wDDQMNkMzh8Fpy4fV0jRFqFK2zOdKB2CPQ9iPvHj6+0mw
eeWzX0foT1OTyNILPFfutnB0SQdvRm0ej+ZLdDoj9d9HZa0aOLoJ+JDaZyc+BaF2
3S5IOL/symJAoc6hrQz9ZJnHQEkiEecIxoLUVGBa4QKBgQDsertVm2LalZFoJnN2
JAEaNJcUsvKET+zpI0w3ilnUpJ1fzsVzaI5+oXlN4J2fdQLo2z57Y4onL7jNBMZd
+8hXQG5qjUIyiV8xzE3HxU6pT252oxjNYOBoUfbOKhW2AkZxtghY5YduCrq7OgpG
q2xIf4KMX+34Uoo5HfUQ92IquwKBgQC9Gti81ufz1M2WQCa01hJzNPcCHbbSiKCW
MJjkF8k45WoDVd2TUOm07Vfivuj8tf00dVxotux3iQKIe8kSutqOJY0TrRcYxsF5
TXjidPevcdIP6yv/mAMwYgmGUl6ZuVuufN6A5ePeour24/eLpZZMVNlBOJUrAaP9
5QpTEMcUjQKBgQCwqf/JtIvlQFegtxkK6VrpeOBlVkpXDl6uzO/jjjgN4+yt5osb
7MCHWZqF04ft2DyUOTY0d+h93ejxQN/w1miUxk22zFDn8Dhtu3NgCsb5NZ4Qg0fE
Jtt/E7yNyGLv1kNKL/OMdez3CIz30iRbJzV988RTmlbtbLxWb0rloep0gQKBgELC
F4GS3I/XsDw6qW9to1XIfOriUohAc3CR92eOfhr34lULGw3Gorqcj0oc22NbW+gJ
BnZxHUmVtK86A+H41O8ZkpQ/pse4YtTP5L0NTeNB60ZzXzT8FSQfd/1TVtIt/Y+7
xVD711XhbdF66QkDi+umiIvdzctA6QPYt6xbX+yBAoGAVU+ZtxAlLuo+4/0lYuMk
l+9bmRTMVsYweU52OI5ARjzfX8/MEhCwvGx16n3YVW0IJehq+UEt0SS+c15SJS08
NPnvAMYgTY8aHqj8HuK9T30KQVh3s8mia/pbOqGyPw6A2NbkwoaPbzfZTBYGodAc
TOiFfKCQTcvAVe9iDIrOLA8=
-----END PRIVATE KEY-----
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICizCCAXMCAQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWEx
EDAOBgNVBAoMB0NvbXBhbnkxEDAOBgNVBAMMB2luZGV4ZXIwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCur2j7OSBt+dITsv1YbPTSjv8O6gTjyKjbUzxC
P/wiD29ro/KhAfsR3ZvNRUu05ETlbQdkpbfSR/+40UfBQPcuMhqwKy9/m1tboSGH
HCxG9rVTjDuieZJ+3NU87RHxrPFSMDsyVsXORSfJs6G8fgC/XiaAlf8xeN+pwQiL
9ZBVSDP7ThfNIR6eiDwVe1ZpNSmU+4qvQ7hcoRV3d3YfXb5k5OxQlbvtczh0wCIf
wwCTnMAwJI2yirsjXBTtycz4Nsl3+PNqQmUtxhhCJL3mAZY82BUNyoXsaCw1HWsQ
kfBJTyauT9+dlMS3SkGUZBPwVGv618uw3EPleG8R5kfTxST/AgMBAAGgADANBgkq
hkiG9w0BAQsFAAOCAQEAkvtiGdWY5WwmTsdMS7CXPPl0ISkhuN2K+FAiwUdnD7Bb
dsPtgswRkMkC6IzK0FCeDdYo+trPucULS639p8IHdF910SmB+ponad0YcBCP8j7M
ZMdIX343U6pptivWyzbGJgfTNjIaJ82c9QLp/juSbdvFz6WIWiZS5tMLOzvL8njL
+5JFqyx0sjbcRAsNwdbSG+5NsEAA/4ylsMzwaAYZWtlgM7iDsokbKN7gh969nyQM
Z/8YyADKWyqmGeQDBZeQ/L5Mm+r7dmDVvh4LCi3RZvbEtstUjS+TVGzesgE7H+Xk
cPgxUhNERhgVvBuOyWEUjoovQadO0yCs2aJvtxVuew==
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDXDCCAkSgAwIBAgIUbGRD0WDeiR0daTzRroopeM3co/wwDQYJKoZIhvcNAQEL
BQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExEDAOBgNVBAoM
B0NvbXBhbnkxEDAOBgNVBAMMB3Jvb3QtY2EwHhcNMjUxMTEzMTMyMzQyWhcNMzUx
MTExMTMyMzQyWjBGMQswCQYDVQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEQ
MA4GA1UECgwHQ29tcGFueTEQMA4GA1UEAwwHaW5kZXhlcjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAK6vaPs5IG350hOy/Vhs9NKO/w7qBOPIqNtTPEI/
/CIPb2uj8qEB+xHdm81FS7TkROVtB2Slt9JH/7jRR8FA9y4yGrArL3+bW1uhIYcc
LEb2tVOMO6J5kn7c1TztEfGs8VIwOzJWxc5FJ8mzobx+AL9eJoCV/zF436nBCIv1
kFVIM/tOF80hHp6IPBV7Vmk1KZT7iq9DuFyhFXd3dh9dvmTk7FCVu+1zOHTAIh/D
AJOcwDAkjbKKuyNcFO3JzPg2yXf482pCZS3GGEIkveYBljzYFQ3KhexoLDUdaxCR
8ElPJq5P352UxLdKQZRkE/BUa/rXy7DcQ+V4bxHmR9PFJP8CAwEAAaNCMEAwHQYD
VR0OBBYEFAySJ0OWP+599aivNaoJ1wvM9J3oMB8GA1UdIwQYMBaAFKd8eLoqwVi3
dedovRBpnfPnwqxkMA0GCSqGSIb3DQEBCwUAA4IBAQCDotFGkh9pNHBremIl1Frr
qpwO8q1bc6vzgYAX0vBgnTdtcHqVm+MYPd8J2mxek2KAqzYsa+402arpcE2djaSZ
j4AXMLvKgCemUXjf0XjiopGxKcqvP/jDbh4J416h36/KVqPbP9eMyA74LrR2lEvH
fu9oOegTj3JTys3avczcXarnLNQn6utq2txW6Oca4w1jHHqMjxECbypSFIFXml4D
nuR7KGk6Z+16lh+pRABBq7hTELbsjBXtQDtV1MhckmFZ4vnR10cTy2ftykHJbwic
M3mPDwSIMGn+0uQZBXp9bwOc+KegWcnzPDpMN79IBgmDCXh6rqkUXqkwmvDnFdXX
-----END CERTIFICATE-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzn2LpTY128KO4
yLBSGEUHg4PMdpsi2Z8aM58QzgXzkdkpa4uJL+tIuXMBNkFvqL7ZE2IBXh1sB8tl
aqYQXFoXJw+r4WddHPGRlg01jSgabvQTsZEDrZ1t3Q0ydkLXxauDLxNm4YWcCk4A
mFs9KbMCPYV2ELcA53rlqwFoc8xK1vXKd0ZgY8tnIzSM/tleo7vSFPMfCmEzuRn7
limDnInRgko8h3OZmPzep3Mgu9NfR4K5mEXm0Mrm2ZFpl3KcT09Fru05nEzxvzev
sfsFIhP48Zec2kAgVHVq3BtghgCwVz7Y6QY5ZuJG9kggtbyAM1EUeYNxIxQ6bUiQ
yfOVAHv1AgMBAAECggEACtyHjVNlS2M0uzhwQdHG4Gci9QRzaasrVD9f2t/IyCT/
GS9jUiNyjXftTNr17P8RGN/aEsdMOltkTX8iVVkh3d/v5VuHAqav5gPi5TFibFEr
DPY1R+z1JcIMPL6eJYPSu02BVYmSKNCn5wa13OALIe0MOqRUtJP985C6HPgd/j5t
z/J/JAsPK/F1HFEts3Rlzm6eaxM2FEsXfYpctEiP3old+8OHklYSIYu+CPhIJapd
fOs9ucwmgx1/DXmwIsbmJj6rnFUW+981xX62d6QznLa1ybAFm+Xr9x06G2k+b+m3
eJvNJVe4vp9wVy9RKMBwA6LP3S4oPBGa/aYN3gZJZwKBgQDzfinQBxaSWRPcn91Q
3fkg3hNO5rtHTy7exINcOahQUnc6ubu7PCfw1pvhUis769/mY0t7w/tcLfI2ASiq
vBoh9MlKdu7alEywf1tz/vF37Hq3jmLuxEej+zi1mC/DtO/nWzu/1jnBk/tIhwR2
ygzq7E5LtbbWyhc2UKYUlzzzfwKBgQC82VqxZx6RgqjXKzzBDpjqAfb0GoovvWhc
7w4OtJwBLB8SdgsGanmW0K94xiCHxP/G6lpW8LtuRA5lexRzd2MKbFS8fXjwgqGM
CI8RKn16pmIh4HHsi3oOwfu6poW6d/xzWC3HThsrhEHIN804tbEJmdeetCQggndz
yQrOOQK6iwKBgQDcg22qkEDI2RM7wyvTiLOOKJCj7CG/Ot7fsGimpTDhTU3dSUfT
EW+6lSEmthuhcMSdCV/a/mot2Q56CiKiPSgNiHqjjYJTQesSDMTuD/zu9qNMiQ7f
3bJjt6hsDR90xfBePimmWoSD41i3Hk/UpLd+KfPebPrhGrRa5D8EdtMkUQKBgQCC
yRiZIaw248Eges4xeXWHImMvvK2U0FzVd61Jm+Uqnq7KLzwFbnnUa6QKRVREErd8
v9JewYtcmv9JYorQSI8rqcipXVADaMSOYWMLZVzPMyllAraDNjkKvWcjZa3ZbL1F
+HyDueDxK0APdC3JJ3N7DbMZMvKOHSyy4Dl+hlcQbwKBgQDdyhtJtUFEfMnsezJ+
cJTqEmDnKL5/lVLTOzFCaNURI7r4oRcqkDC/uH1OfWA9MFXg0XLer4XcQgL7ysXK
NOmLHl1o3/NHNBvDwlIFAS/WsO9fM7UOaDFBzA3aMfNINYf0facVz0gZTgBQMAMO
pdN0TDf61saICakcsBEtfZ4Qgw==
-----END PRIVATE KEY-----
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIUZrk9I0allmd14CLHTyoXDJtkS9EwDQYJKoZIhvcNAQEL
BQAwRjELMAkGA1UEBhMCVVMxEzARBgNVBAcMCkNhbGlmb3JuaWExEDAOBgNVBAoM
B0NvbXBhbnkxEDAOBgNVBAMMB3Jvb3QtY2EwHhcNMjUxMTEzMTMyMzQyWhcNMzUx
MTExMTMyMzQyWjBGMQswCQYDVQQGEwJVUzETMBEGA1UEBwwKQ2FsaWZvcm5pYTEQ
MA4GA1UECgwHQ29tcGFueTEQMA4GA1UEAwwHcm9vdC1jYTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALOfYulNjXbwo7jIsFIYRQeDg8x2myLZnxoznxDO
BfOR2Slri4kv60i5cwE2QW+ovtkTYgFeHWwHy2VqphBcWhcnD6vhZ10c8ZGWDTWN
KBpu9BOxkQOtnW3dDTJ2QtfFq4MvE2bhhZwKTgCYWz0pswI9hXYQtwDneuWrAWhz
zErW9cp3RmBjy2cjNIz+2V6ju9IU8x8KYTO5GfuWKYOcidGCSjyHc5mY/N6ncyC7
019HgrmYRebQyubZkWmXcpxPT0Wu7TmcTPG/N6+x+wUiE/jxl5zaQCBUdWrcG2CG
ALBXPtjpBjlm4kb2SCC1vIAzURR5g3EjFDptSJDJ85UAe/UCAwEAAaNTMFEwHQYD
VR0OBBYEFKd8eLoqwVi3dedovRBpnfPnwqxkMB8GA1UdIwQYMBaAFKd8eLoqwVi3
dedovRBpnfPnwqxkMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
AKQDjf6Z1MkDjamc9uP861rmhhqPiDZG3uwPnOVIUseqrVNRyT9RFamhyJMFay7D
rt+YCPoApBWEkkUNtYTGMxYKGqhuCJ4pFqUORDX5+fHghvGqFJX5fceBmRqjK5jS
WFdpvrRDbD+kQfzqVrHAFFrTwtWPX9/e1/WyTPmUTPig0xV96aKhKBbgMtsEo1dK
YPdeamay8bU6zkxW9L9btrYLTgEpwekSx+N/Uh2ZU5mLU0FwAeNqIUnXv1j9TDd6
lVAt1NAqZkb43HspCP92pSHd85hj1byEkPPokC1qJ4MxRBPTCRYwHHBdVo0j6t2Z
fp/fsm7HdIu+AO5Nl7tfhRU=
-----END CERTIFICATE-----
@@ -0,0 +1 @@
6C6443D160DE891D1D693CD1AE8A2978CDDCA3FE