2023-08-13_10:58:57_CEST [openHABian] Checking for root privileges... OK + export UNATTENDED SILENT DEBUGMAX INTERACTIVE + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/auth.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/backup.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/config.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/ext-storage.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/find.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/habapp.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/helpers.bash ++ ESC='\033[' ++ COL_DEF='\033[39;49;00m' ++ COL_RED='\033[31;01m' ++ COL_GREEN='\033[32;01m' ++ COL_YELLOW='\033[33;01m' ++ COL_BLUE='\033[34;01m' ++ COL_MAGENTA='\033[35;01m' ++ COL_CYAN='\033[36;01m' ++ COL_LGRAY='\033[37;01m' ++ COL_DGRAY='\033[90;01m' ++ export COL_DEF COL_RED COL_GREEN COL_YELLOW COL_BLUE COL_MAGENTA COL_CYAN COL_LGRAY COL_DGRAY + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/influxdb+grafana.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/java-jre.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/menu.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/nodejs-apps.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/nut.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/openhab.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/openhabian.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/packages.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/system.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/vpn.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/wifi.bash + for shfile in "${BASEDIR:-/opt/openhabian}"/functions/*.bash + source /opt/openhabian/functions/zram.bash ++ pwd + OLDWD=/home/openhabian + cd /opt + update_openhabian_conf + local configFile=/etc/openhabian.conf + local referenceConfig=/opt/openhabian/build-image/openhabian.conf + cp /etc/openhabian.conf /etc/openhabian.conf.BAK + read -r line + [[ # Origin: openhabian.conf =~ ^(#)?[a-zA-Z] ]] + echo '# Origin: openhabian.conf' + read -r line + [[ # =~ ^(#)?[a-zA-Z] ]] + echo '#' + read -r line + [[ # Modify your openHABian settings =~ ^(#)?[a-zA-Z] ]] + echo '# Modify your openHABian settings' + read -r line + [[ # Handle with care, only touch if you need to! =~ ^(#)?[a-zA-Z] ]] + echo '# Handle with care, only touch if you need to!' + read -r line + [[ # This file will only be used on unattended initial install. =~ ^(#)?[a-zA-Z] ]] + echo '# This file will only be used on unattended initial install.' + read -r line + [[ # If you want to change anything after unattended install completed, use menu in openhabian-config. =~ ^(#)?[a-zA-Z] ]] + echo '# If you want to change anything after unattended install completed, use menu in openhabian-config.' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # ATTENTION: to disable an option a line MUST be of the format '# option=value' =~ ^(#)?[a-zA-Z] ]] + echo '# ATTENTION: to disable an option a line MUST be of the format '\''# option=value'\''' + read -r line + [[ # KEEP THE SPACE IT IS IMPORTANT !! =~ ^(#)?[a-zA-Z] ]] + echo '# KEEP THE SPACE IT IS IMPORTANT !!' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Hostname to set this one to =~ ^(#)?[a-zA-Z] ]] + echo '# Hostname to set this one to' + read -r line + [[ hostname=openhabian =~ ^(#)?[a-zA-Z] ]] + parsed=hostname=openhabian + [[ hostname=openhabian =~ ^#[a-zA-Z] ]] ++ echo hostname=openhabian ++ cut -d= -f1 + param=hostname + [[ -v hostname ]] + [[ openhabian == *\ * ]] + echo hostname=openhabian + read -r line + [[ # if it exists, the default user (with its working environment) will be renamed to this username given here ... =~ ^(#)?[a-zA-Z] ]] + echo '# if it exists, the default user (with its working environment) will be renamed to this username given here ...' + read -r line + [[ username=openhabian =~ ^(#)?[a-zA-Z] ]] + parsed=username=openhabian + [[ username=openhabian =~ ^#[a-zA-Z] ]] ++ echo username=openhabian ++ cut -d= -f1 + param=username + [[ -v username ]] + [[ openhabian == *\ * ]] + echo username=openhabian + read -r line + [[ # ... and given this password. The password will be removed from this file after completion for security reasons. =~ ^(#)?[a-zA-Z] ]] + echo '# ... and given this password. The password will be removed from this file after completion for security reasons.' + read -r line + [[ userpw=openhabian =~ ^(#)?[a-zA-Z] ]] + parsed=userpw=openhabian + [[ userpw=openhabian =~ ^#[a-zA-Z] ]] ++ echo userpw=openhabian ++ cut -d= -f1 + param=userpw + [[ -v userpw ]] + [[ openhabian == *\ * ]] + echo userpw=openhabian + read -r line + [[ # set this to download a SSH key and authorize the owner to login as the admin user =~ ^(#)?[a-zA-Z] ]] + echo '# set this to download a SSH key and authorize the owner to login as the admin user' + read -r line + [[ adminkeyurl="" =~ ^(#)?[a-zA-Z] ]] + parsed='adminkeyurl=""' + [[ adminkeyurl="" =~ ^#[a-zA-Z] ]] ++ echo 'adminkeyurl=""' ++ cut -d= -f1 + param=adminkeyurl + [[ -v adminkeyurl ]] + [[ '' == *\ * ]] + echo adminkeyurl= + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Language and timezone. See Debian documentation for valid values. =~ ^(#)?[a-zA-Z] ]] + echo '# Language and timezone. See Debian documentation for valid values.' + read -r line + [[ timezone=Europe/Berlin =~ ^(#)?[a-zA-Z] ]] + parsed=timezone=Europe/Berlin + [[ timezone=Europe/Berlin =~ ^#[a-zA-Z] ]] ++ echo timezone=Europe/Berlin ++ cut -d= -f1 + param=timezone + [[ -v timezone ]] + [[ Europe/Berlin == *\ * ]] + echo timezone=Europe/Berlin + read -r line + [[ locales="en_US.UTF-8 de_DE.UTF-8" =~ ^(#)?[a-zA-Z] ]] + parsed='locales="en_US.UTF-8 de_DE.UTF-8"' + [[ locales="en_US.UTF-8 de_DE.UTF-8" =~ ^#[a-zA-Z] ]] ++ echo 'locales="en_US.UTF-8 de_DE.UTF-8"' ++ cut -d= -f1 + param=locales + [[ -v locales ]] + [[ en_US.UTF-8 de_DE.UTF-8 == *\ * ]] + echo 'locales="en_US.UTF-8 de_DE.UTF-8"' + read -r line + [[ system_default_locale="en_US.UTF-8" =~ ^(#)?[a-zA-Z] ]] + parsed='system_default_locale="en_US.UTF-8"' + [[ system_default_locale="en_US.UTF-8" =~ ^#[a-zA-Z] ]] ++ echo 'system_default_locale="en_US.UTF-8"' ++ cut -d= -f1 + param=system_default_locale + [[ -v system_default_locale ]] + [[ en_US.UTF-8 == *\ * ]] + echo system_default_locale=en_US.UTF-8 + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # WiFi settings. An ethernet connection is recommended. =~ ^(#)?[a-zA-Z] ]] + echo '# WiFi settings. An ethernet connection is recommended.' + read -r line + [[ # If you have a RPi4, RPi3, RPi0W or a supported external WiFi dongle, the WiFi =~ ^(#)?[a-zA-Z] ]] + echo '# If you have a RPi4, RPi3, RPi0W or a supported external WiFi dongle, the WiFi' + read -r line + [[ # interface can be setup and used for the initial installation. =~ ^(#)?[a-zA-Z] ]] + echo '# interface can be setup and used for the initial installation.' + read -r line + [[ # Fill in your SSID and password below, leave empty or put comment in front to =~ ^(#)?[a-zA-Z] ]] + echo '# Fill in your SSID and password below, leave empty or put comment in front to' + read -r line + [[ # have your WiFi remain unchanged/uninitialized. Make sure your Ethernet works. =~ ^(#)?[a-zA-Z] ]] + echo '# have your WiFi remain unchanged/uninitialized. Make sure your Ethernet works.' + read -r line + [[ # ATTENTION: you need to escape these special characters: $, `, ", \, (newline) =~ ^(#)?[a-zA-Z] ]] + echo '# ATTENTION: you need to escape these special characters: $, `, ", \, (newline)' + read -r line + [[ # 'Escaping' means to put an additional \ in front of that character =~ ^(#)?[a-zA-Z] ]] + echo '# '\''Escaping'\'' means to put an additional \ in front of that character' + read -r line + [[ wifi_ssid="" =~ ^(#)?[a-zA-Z] ]] + parsed='wifi_ssid=""' + [[ wifi_ssid="" =~ ^#[a-zA-Z] ]] ++ echo 'wifi_ssid=""' ++ cut -d= -f1 + param=wifi_ssid + [[ -v wifi_ssid ]] + [[ '' == *\ * ]] + echo wifi_ssid= + read -r line + [[ wifi_password="" =~ ^(#)?[a-zA-Z] ]] + parsed='wifi_password=""' + [[ wifi_password="" =~ ^#[a-zA-Z] ]] ++ echo 'wifi_password=""' ++ cut -d= -f1 + param=wifi_password + [[ -v wifi_password ]] + [[ '' == *\ * ]] + echo wifi_password= + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Wi-Fi setting. Select a two-letter country code suitable for your location =~ ^(#)?[a-zA-Z] ]] + echo '# Wi-Fi setting. Select a two-letter country code suitable for your location' + read -r line + [[ # E.g. US (default), DE, AU, NZ... =~ ^(#)?[a-zA-Z] ]] + echo '# E.g. US (default), DE, AU, NZ...' + read -r line + [[ # You may infringe on local legislature otherwise =~ ^(#)?[a-zA-Z] ]] + echo '# You may infringe on local legislature otherwise' + read -r line + [[ # See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 or /usr/share/zoneinfo/zone.tab =~ ^(#)?[a-zA-Z] ]] + echo '# See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 or /usr/share/zoneinfo/zone.tab' + read -r line + [[ wifi_country="" =~ ^(#)?[a-zA-Z] ]] + parsed='wifi_country=""' + [[ wifi_country="" =~ ^#[a-zA-Z] ]] ++ echo 'wifi_country=""' ++ cut -d= -f1 + param=wifi_country + [[ -v wifi_country ]] + [[ '' == *\ * ]] + echo wifi_country= + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Eventually disable all IPv6 e.g. on installation problems =~ ^(#)?[a-zA-Z] ]] + echo '# Eventually disable all IPv6 e.g. on installation problems' + read -r line + [[ # values: "enable", "disable" =~ ^(#)?[a-zA-Z] ]] + echo '# values: "enable", "disable"' + read -r line + [[ ipv6=enable =~ ^(#)?[a-zA-Z] ]] + parsed=ipv6=enable + [[ ipv6=enable =~ ^#[a-zA-Z] ]] ++ echo ipv6=enable ++ cut -d= -f1 + param=ipv6 + [[ -v ipv6 ]] + [[ enable == *\ * ]] + echo ipv6=enable + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # repo and branch to clone from =~ ^(#)?[a-zA-Z] ]] + echo '# repo and branch to clone from' + read -r line + [[ repositoryurl=https://github.com/openhab/openhabian.git =~ ^(#)?[a-zA-Z] ]] + parsed=repositoryurl=https://github.com/openhab/openhabian.git + [[ repositoryurl=https://github.com/openhab/openhabian.git =~ ^#[a-zA-Z] ]] ++ echo repositoryurl=https://github.com/openhab/openhabian.git ++ cut -d= -f1 + param=repositoryurl + [[ -v repositoryurl ]] + [[ https://github.com/openhab/openhabian == *\ * ]] + echo repositoryurl=https://github.com/openhab/openhabian + read -r line + [[ clonebranch=openHAB =~ ^(#)?[a-zA-Z] ]] + parsed=clonebranch=openHAB + [[ clonebranch=openHAB =~ ^#[a-zA-Z] ]] ++ echo clonebranch=openHAB ++ cut -d= -f1 + param=clonebranch + [[ -v clonebranch ]] + [[ main == *\ * ]] + echo clonebranch=main + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # initial openHAB configuration to import (URL or filename) =~ ^(#)?[a-zA-Z] ]] + echo '# initial openHAB configuration to import (URL or filename)' + read -r line + [[ # the file needs to be a zip archive created from openhab-cli backup =~ ^(#)?[a-zA-Z] ]] + echo '# the file needs to be a zip archive created from openhab-cli backup' + read -r line + [[ # initialconfig=/boot/initial.zip =~ ^(#)?[a-zA-Z] ]] + echo '# initialconfig=/boot/initial.zip' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # debug verbosity mode =~ ^(#)?[a-zA-Z] ]] + echo '# debug verbosity mode' + read -r line + [[ # off, on (verbose output in log) or maximum (show every command) =~ ^(#)?[a-zA-Z] ]] + echo '# off, on (verbose output in log) or maximum (show every command)' + read -r line + [[ debugmode=maximum =~ ^(#)?[a-zA-Z] ]] + parsed=debugmode=maximum + [[ debugmode=maximum =~ ^#[a-zA-Z] ]] ++ echo debugmode=maximum ++ cut -d= -f1 + param=debugmode + [[ -v debugmode ]] + [[ maximum == *\ * ]] + echo debugmode=maximum + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # the framebuffer on RPi is enabled by default =~ ^(#)?[a-zA-Z] ]] + echo '# the framebuffer on RPi is enabled by default' + read -r line + [[ framebuffer=enable =~ ^(#)?[a-zA-Z] ]] + parsed=framebuffer=enable + [[ framebuffer=enable =~ ^#[a-zA-Z] ]] ++ echo framebuffer=enable ++ cut -d= -f1 + param=framebuffer + [[ -v framebuffer ]] + [[ enable == *\ * ]] + echo framebuffer=enable + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # apt timeout to wait for lock with multiple install actions going on =~ ^(#)?[a-zA-Z] ]] + echo '# apt timeout to wait for lock with multiple install actions going on' + read -r line + [[ apttimeout=60 =~ ^(#)?[a-zA-Z] ]] + parsed=apttimeout=60 + [[ apttimeout=60 =~ ^#[a-zA-Z] ]] ++ echo apttimeout=60 ++ cut -d= -f1 + param=apttimeout + [[ -v apttimeout ]] + [[ 60 == *\ * ]] + echo apttimeout=60 + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # fake hardware =~ ^(#)?[a-zA-Z] ]] + echo '# fake hardware' + read -r line + [[ # force treating your box as if it was a ... =~ ^(#)?[a-zA-Z] ]] + echo '# force treating your box as if it was a ...' + read -r line + [[ # pi4, pi4_8gb, cm4, pi400, pi3, cm3, pi3+, cm3+, pi2, pi1, cm1, pi0, pi0w, pi0w2, x86 =~ ^(#)?[a-zA-Z] ]] + echo '# pi4, pi4_8gb, cm4, pi400, pi3, cm3, pi3+, cm3+, pi2, pi1, cm1, pi0, pi0w, pi0w2, x86' + read -r line + [[ # hw= =~ ^(#)?[a-zA-Z] ]] + echo '# hw=' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Hardware architecture =~ ^(#)?[a-zA-Z] ]] + echo '# Hardware architecture' + read -r line + [[ # x86_64, amd64, armv6l, armv7l, aarch64, arm64 =~ ^(#)?[a-zA-Z] ]] + echo '# x86_64, amd64, armv6l, armv7l, aarch64, arm64' + read -r line + [[ # hwarch= =~ ^(#)?[a-zA-Z] ]] + echo '# hwarch=' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # OS distribution/release =~ ^(#)?[a-zA-Z] ]] + echo '# OS distribution/release' + read -r line + [[ # Valid arguments: raspios, raspbian, debian, ubuntu, stretch, buster, bullseye, bionic, focal =~ ^(#)?[a-zA-Z] ]] + echo '# Valid arguments: raspios, raspbian, debian, ubuntu, stretch, buster, bullseye, bionic, focal' + read -r line + [[ # osrelease= =~ ^(#)?[a-zA-Z] ]] + echo '# osrelease=' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Java version to install =~ ^(#)?[a-zA-Z] ]] + echo '# Java version to install' + read -r line + [[ # Valid arguments: 11, 17 =~ ^(#)?[a-zA-Z] ]] + echo '# Valid arguments: 11, 17' + read -r line + [[ java_opt=17 =~ ^(#)?[a-zA-Z] ]] + parsed=java_opt=17 + [[ java_opt=17 =~ ^#[a-zA-Z] ]] ++ echo java_opt=17 ++ cut -d= -f1 + param=java_opt + [[ -v java_opt ]] + [[ 17 == *\ * ]] + echo java_opt=17 + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # install zram per default, set to "disable" to skip installation =~ ^(#)?[a-zA-Z] ]] + echo '# install zram per default, set to "disable" to skip installation' + read -r line + [[ zraminstall=enable =~ ^(#)?[a-zA-Z] ]] + parsed=zraminstall=enable + [[ zraminstall=enable =~ ^#[a-zA-Z] ]] ++ echo zraminstall=enable ++ cut -d= -f1 + param=zraminstall + [[ -v zraminstall ]] + [[ enable == *\ * ]] + echo zraminstall=enable + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # start comitup hotspot if internet is not reachable =~ ^(#)?[a-zA-Z] ]] + echo '# start comitup hotspot if internet is not reachable' + read -r line + [[ hotspot=enable =~ ^(#)?[a-zA-Z] ]] + parsed=hotspot=enable + [[ hotspot=enable =~ ^#[a-zA-Z] ]] ++ echo hotspot=enable ++ cut -d= -f1 + param=hotspot + [[ -v hotspot ]] + [[ enable == *\ * ]] + echo hotspot=enable + read -r line + [[ hotspotpw=openhabian =~ ^(#)?[a-zA-Z] ]] + parsed=hotspotpw=openhabian + [[ hotspotpw=openhabian =~ ^#[a-zA-Z] ]] ++ echo hotspotpw=openhabian ++ cut -d= -f1 + param=hotspotpw + [[ -v hotspotpw ]] + [[ openhabian == *\ * ]] + echo hotspotpw=openhabian + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # external SD card device to backup and mirror the internal SD card to =~ ^(#)?[a-zA-Z] ]] + echo '# external SD card device to backup and mirror the internal SD card to' + read -r line + [[ # backupdrive=/dev/sda =~ ^(#)?[a-zA-Z] ]] + echo '# backupdrive=/dev/sda' + read -r line + [[ storageconfig=openhab-dir =~ ^(#)?[a-zA-Z] ]] + parsed=storageconfig=openhab-dir + [[ storageconfig=openhab-dir =~ ^#[a-zA-Z] ]] ++ echo storageconfig=openhab-dir ++ cut -d= -f1 + param=storageconfig + [[ -v storageconfig ]] + [[ openhab-dir == *\ * ]] + echo storageconfig=openhab-dir + read -r line + [[ storagedir=/storage =~ ^(#)?[a-zA-Z] ]] + parsed=storagedir=/storage + [[ storagedir=/storage =~ ^#[a-zA-Z] ]] ++ echo storagedir=/storage ++ cut -d= -f1 + param=storagedir + [[ -v storagedir ]] + [[ /storage == *\ * ]] + echo storagedir=/storage + read -r line + [[ storagetapes=15 =~ ^(#)?[a-zA-Z] ]] + parsed=storagetapes=15 + [[ storagetapes=15 =~ ^#[a-zA-Z] ]] ++ echo storagetapes=15 ++ cut -d= -f1 + param=storagetapes + [[ -v storagetapes ]] + [[ 15 == *\ * ]] + echo storagetapes=15 + read -r line + [[ storagecapacity=1024 =~ ^(#)?[a-zA-Z] ]] + parsed=storagecapacity=1024 + [[ storagecapacity=1024 =~ ^#[a-zA-Z] ]] ++ echo storagecapacity=1024 ++ cut -d= -f1 + param=storagecapacity + [[ -v storagecapacity ]] + [[ 1024 == *\ * ]] + echo storagecapacity=1024 + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # mail relay settings =~ ^(#)?[a-zA-Z] ]] + echo '# mail relay settings' + read -r line + [[ # adminmail=john.doe@foo.bar =~ ^(#)?[a-zA-Z] ]] + echo '# adminmail=john.doe@foo.bar' + read -r line + [[ # relayuser=john.doe@foo.bar =~ ^(#)?[a-zA-Z] ]] + echo '# relayuser=john.doe@foo.bar' + read -r line + [[ # relaypass=secret =~ ^(#)?[a-zA-Z] ]] + echo '# relaypass=secret' + read -r line + [[ # smarthost=smtp.gmail.com =~ ^(#)?[a-zA-Z] ]] + echo '# smarthost=smtp.gmail.com' + read -r line + [[ # smartport=587 =~ ^(#)?[a-zA-Z] ]] + echo '# smartport=587' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Network UPS Tools =~ ^(#)?[a-zA-Z] ]] + echo '# Network UPS Tools' + read -r line + [[ # nutmode=netserver =~ ^(#)?[a-zA-Z] ]] + echo '# nutmode=netserver' + read -r line + [[ # Settings for netserver: =~ ^(#)?[a-zA-Z] ]] + echo '# Settings for netserver:' + read -r line + [[ # nutupsdriver=usbhid-ups =~ ^(#)?[a-zA-Z] ]] + echo '# nutupsdriver=usbhid-ups' + read -r line + [[ # nutupsdescr="" =~ ^(#)?[a-zA-Z] ]] + echo '# nutupsdescr=""' + read -r line + [[ # Settings for netclient: =~ ^(#)?[a-zA-Z] ]] + echo '# Settings for netclient:' + read -r line + [[ # nutupsname=ups =~ ^(#)?[a-zA-Z] ]] + echo '# nutupsname=ups' + read -r line + [[ # nutupshost=xxx.xxx.xxx.xx =~ ^(#)?[a-zA-Z] ]] + echo '# nutupshost=xxx.xxx.xxx.xx' + read -r line + [[ # nutupsuser=monuser =~ ^(#)?[a-zA-Z] ]] + echo '# nutupsuser=monuser' + read -r line + [[ # nutupspw=secret =~ ^(#)?[a-zA-Z] ]] + echo '# nutupspw=secret' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Tailscale VPN =~ ^(#)?[a-zA-Z] ]] + echo '# Tailscale VPN' + read -r line + [[ # preauthkey=tskey-xxxxxxxxxxxxxxxxx =~ ^(#)?[a-zA-Z] ]] + echo '# preauthkey=tskey-xxxxxxxxxxxxxxxxx' + read -r line + [[ # tstags=tag:client =~ ^(#)?[a-zA-Z] ]] + echo '# tstags=tag:client' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # Custom log files =~ ^(#)?[a-zA-Z] ]] + echo '# Custom log files' + read -r line + [[ # custom_log_files=("/var/log/foo.log" "/var/log/bar.log") =~ ^(#)?[a-zA-Z] ]] + echo '# custom_log_files=("/var/log/foo.log" "/var/log/bar.log")' + read -r line + [[ '' =~ ^(#)?[a-zA-Z] ]] + echo '' + read -r line + [[ # vim: filetype=sh =~ ^(#)?[a-zA-Z] ]] + echo '# vim: filetype=sh' + read -r line + [[ -f /etc/init.d/openhabian-config ]] + config_ipv6 + local aptConf=/etc/apt/apt.conf.d/S90force-ipv4 + local sysctlConf=/etc/sysctl.d/99-sysctl.conf + [[ enable == \d\i\s\a\b\l\e ]] + [[ enable == \e\n\a\b\l\e ]] + grep -qs '^[[:space:]]*# Disable all IPv6 functionality' /etc/sysctl.d/99-sysctl.conf + [[ -n '' ]] + apt_update + export PID_APT=5319 + PID_APT=5319 + nohup apt-get update + whiptail_check ++ command -v whiptail + [[ -x /usr/bin/whiptail ]] + load_create_config + local 'questionText=\nWelcome to openHABian!\n\nPlease provide the name of your Linux user i.e. the account you normally log in with.\n\nTypical user names are '\''pi'\'' or '\''ubuntu'\''.' + local input + [[ -f /etc/openhabian.conf ]] ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:58:58_CEST [openHABian] Loading configuration file '\''/etc/openhabian.conf'\''... ' 2023-08-13_10:58:58_CEST [openHABian] Loading configuration file '/etc/openhabian.conf'... ++ getent group openhabian + [[ ! -n openhabian:x:1000:openhabian,frontail ]] + id -u openhabian + source /etc/openhabian.conf ++ hostname=openhabian ++ username=openhabian ++ userpw=openhabian ++ adminkeyurl= ++ timezone=Europe/Berlin ++ locales='en_US.UTF-8 de_DE.UTF-8' ++ system_default_locale=en_US.UTF-8 ++ wifi_ssid= ++ wifi_password= ++ wifi_country= ++ ipv6=enable ++ repositoryurl=https://github.com/openhab/openhabian ++ clonebranch=main ++ debugmode=maximum ++ framebuffer=enable ++ apttimeout=60 ++ java_opt=17 ++ zraminstall=enable ++ hotspot=enable ++ hotspotpw=openhabian ++ storageconfig=openhab-dir ++ storagedir=/storage ++ storagetapes=15 ++ storagecapacity=1024 + echo OK OK + openhabian_console_check + [[ -z 1 ]] ++ tput cols + [[ 150 -ge 120 ]] + return 0 + openhabian_update_check + [[ -z 1 ]] + local branch + local introText + local unsupportedOSText + branch=main + introText='Additions, improvements or fixes were added to the openHABian configuration tool. Would you like to update now and benefit from them? The update will not automatically apply changes to your system.\n\nUpdating is recommended.' + unsupportedOSText='You are running an old Linux release that is no longer officially supported.\nWe recommend upgrading to the most current stable release of your distribution (or current Long Term Support version for distributions that offer LTS).\nDo you really want to continue using openHABian on this system?' ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 ++ get_git_revision ++ local branch ++ local commitDate ++ local shorthash +++ git -C /opt/openhabian rev-parse --abbrev-ref HEAD ++ branch=main +++ git -C /opt/openhabian log --pretty=format:%aI -n 1 ++ commitDate=2023-08-13T08:46:02+02:00 +++ git -C /opt/openhabian log --pretty=format:%h -n 1 ++ shorthash=bc33bfe ++ echo '[main]{2023-08-13T08:46:02+02:00}(bc33bfe)' + echo '2023-08-13_10:58:58_CEST [openHABian] openHABian configuration tool version: [main]{2023-08-13T08:46:02+02:00}(bc33bfe)' 2023-08-13_10:58:58_CEST [openHABian] openHABian configuration tool version: [main]{2023-08-13T08:46:02+02:00}(bc33bfe) ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:58:58_CEST [openHABian] Checking for changes in origin branch main... ' 2023-08-13_10:58:58_CEST [openHABian] Checking for changes in origin branch main... + is_stretch + [[ '' == \s\t\r\e\t\c\h ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)" NAME="Raspbian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" =~ stretch ]] + return 1 + is_xenial + [[ '' == \x\e\n\i\a\l ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)" NAME="Raspbian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" =~ xenial ]] + return 1 + git -C /opt/openhabian config user.email openhabian@openHABian + git -C /opt/openhabian config user.name openhabian + git -C /opt/openhabian fetch --quiet origin ++ git -C /opt/openhabian rev-parse main ++ git -C /opt/openhabian rev-parse '@{u}' + [[ bc33bfe8cfcba0b9f9583aab6182c8bcf820f02e == bc33bfe8cfcba0b9f9583aab6182c8bcf820f02e ]] + echo OK OK + openhabian_announcements + [[ -z 1 ]] + local altReadNews + local newsFile + local readNews + altReadNews=/tmp/NEWS.md + newsFile=/opt/openhabian/NEWS.md + readNews=/opt/openhabian/docs/NEWS.md + cmp --silent /opt/openhabian/NEWS.md /opt/openhabian/docs/NEWS.md + cmp --silent /opt/openhabian/NEWS.md /tmp/NEWS.md ++ cat /opt/openhabian/NEWS.md + whiptail --title 'openHABian announcements' --yes-button 'Stop displaying' --no-button 'Keep displaying' --defaultno --scrolltext --yesno 'Hit tab to unselect buttons and scroll through the text using UP/DOWN or PGUP/PGDN. All announcements are stored in `/opt/openhabian/docs/CHANGELOG.md` for you to lookup. ## openHAB branch name changes to install openHAB 4 ## August 12, 2023 The default openHABian branch name (this is something like the openHABian *version*) changed from "openHAB3" to "openHAB". The openHAB2 branch name changed from "stable" to "legacy". You can use these names whenever you want to install a fresh openHABian system with a specific openHAB version right in the first place using clonebranch= in openhabian.conf. ## IMPORTANT: installing openHAB 4 ## June 25, 2023 We will install openHAB 4 from now on. It will be the latest available milestone release until general availability of the openHAB 4 release. If you are on the default branch openHAB3 so far, please use menu option 01 to change to openHAB branch when you upgrade/move to openHAB 4.' 27 84 ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:03_CEST [openHABian] Switching to branch main... ' 2023-08-13_10:59:03_CEST [openHABian] Switching to branch main... + git -C /opt/openhabian checkout --quiet main + echo OK OK ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo '2023-08-13_10:59:03_CEST [openHABian] Checking openHAB Signing Key expiry.' 2023-08-13_10:59:03_CEST [openHABian] Checking openHAB Signing Key expiry. + check_keys openhab + local repoKey=/usr/share/keyrings/openhab.gpg ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:03_CEST [openHABian] Checking expiry date of apt keys... ' 2023-08-13_10:59:03_CEST [openHABian] Checking expiry date of apt keys... + [[ ! -f /usr/share/keyrings/openhab.gpg ]] ++ gpg --with-colons --fixed-list-mode --show-keys /usr/share/keyrings/openhab.gpg ++ cut -d: -f7 ++ awk NF + gpgKeys='1915194593 1915211934' ++ date +%s + currentTime=1691917143 + [[ -n 1915194593 1915211934 ]] + IFS= + read -r keyExpiry + diff=223277450 + daysLeft=2584 + [[ 2584 -lt 30 ]] + IFS= + read -r keyExpiry + diff=223294791 + daysLeft=2584 + [[ 2584 -lt 30 ]] + IFS= + read -r keyExpiry + echo OK OK + return 0 + jsscripting_npm_check openhab + '[' openhab == '' ']' + '[' '!' -d /etc/openhab/automation/js/node_modules/openhab ']' + return 0 + jsscripting_npm_check openhab_rules_tools + '[' openhab_rules_tools == '' ']' + '[' '!' -d /etc/openhab/automation/js/node_modules/openhab_rules_tools ']' + local 'introText=Additions, improvements or fixes were added to openhab_rules_tools (npm package) for JS Scripting. Would you like to update now and benefit from them?' + local 'breakingText=\n\nThis update includes BREAKING CHANGES!' + local data + local wantedVersion + local latestVersion + node_is_installed ++ command -v npm + [[ -x /usr/bin/npm ]] ++ node --version + [[ v18.17.1 =~ v1[6-9]* ]] + return 0 + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:03_CEST [openHABian] Checking for updates of openhab_rules_tools for JS Scripting... ' 2023-08-13_10:59:03_CEST [openHABian] Checking for updates of openhab_rules_tools for JS Scripting... ++ npm outdated --prefix /etc/openhab/automation/js --json + data='{}' + [[ {} =~ "openhab_rules_tools" ]] + echo 'No update available.' No update available. + show_main_menu + local choice + local version +++ get_git_revision +++ local branch +++ local commitDate +++ local shorthash ++++ git -C /opt/openhabian rev-parse --abbrev-ref HEAD +++ branch=main ++++ git -C /opt/openhabian log --pretty=format:%aI -n 1 +++ commitDate=2023-08-13T08:46:02+02:00 ++++ git -C /opt/openhabian log --pretty=format:%h -n 1 +++ shorthash=bc33bfe +++ echo '[main]{2023-08-13T08:46:02+02:00}(bc33bfe)' ++ whiptail --title 'openHABian Configuration Tool — [main]{2023-08-13T08:46:02+02:00}(bc33bfe)' --menu 'Setup Options' 24 118 16 --cancel-button Exit --ok-button Execute '00 | About openHABian' 'Information about the openHABian project and this tool' '' '' '01 | Select Branch' 'Select the openHABian config tool version ("branch") to run' '02 | Upgrade System' 'Update all installed software packages (incl. openHAB) to their latest version' '03 | Install openHAB' 'Install or upgrade to latest openHAB' '04 | Import config' 'Import an openHAB configuration from file or URL' '' '' '10 | Apply Improvements' 'Apply the latest improvements to the basic openHABian setup ►' '20 | Optional Components' 'Choose from a set of optional software components ►' '30 | System Settings' 'A range of system and hardware related configuration steps ►' '40 | openHAB Related' 'Switch the installed openHAB version or apply tweaks ►' '50 | Backup/Restore' 'Manage backups and restore your system ►' + choice='03 | Install openHAB' + RET=0 + '[' 0 -eq 1 ']' + '[' 0 -eq 255 ']' + [[ 03 | Install openHAB == '' ]] + [[ 03 | Install openHAB == \0\0* ]] + [[ 03 | Install openHAB == \0\1* ]] + [[ 03 | Install openHAB == \0\2* ]] + [[ 03 | Install openHAB == \0\3* ]] + wait_for_apt_to_finish_update + local 'spin=-\|/' + local i + [[ -z 5319 ]] ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:07_CEST [openHABian] Updating Linux package information... ' 2023-08-13_10:59:07_CEST [openHABian] Updating Linux package information... + kill -0 5319 + echo OK OK + is_buster + [[ '' == \b\u\s\t\e\r ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)" NAME="Raspbian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" =~ buster ]] + return 1 + is_stretch + [[ '' == \s\t\r\e\t\c\h ]] ++ cat /etc/os-release + [[ PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)" NAME="Raspbian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" =~ stretch ]] + return 1 ++ apt-cache madison openhab ++ head -n 1 ++ awk '{ print $3 }' ++ cut -d. -f1 + [[ 4 = 4 ]] + update_config_java 17 + cond_redirect sed -i -e 's|^java_opt.*$|java_opt=17|' /etc/openhabian.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^java_opt.*$|java_opt=17| /etc/openhabian.conf \033[39;49;00m' $ sed -i -e s|^java_opt.*$|java_opt=17| /etc/openhabian.conf + sed -i -e 's|^java_opt.*$|java_opt=17|' /etc/openhabian.conf + return 0 + source /etc/openhabian.conf ++ hostname=openhabian ++ username=openhabian ++ userpw=openhabian ++ adminkeyurl= ++ timezone=Europe/Berlin ++ locales='en_US.UTF-8 de_DE.UTF-8' ++ system_default_locale=en_US.UTF-8 ++ wifi_ssid= ++ wifi_password= ++ wifi_country= ++ ipv6=enable ++ repositoryurl=https://github.com/openhab/openhabian ++ clonebranch=main ++ debugmode=maximum ++ framebuffer=enable ++ apttimeout=60 ++ java_opt=17 ++ zraminstall=enable ++ hotspot=enable ++ hotspotpw=openhabian ++ storageconfig=openhab-dir ++ storagedir=/storage ++ storagetapes=15 ++ storagecapacity=1024 + java_install 17 + openhab_is_running + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' =~ ^(install|hold)$ ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep -E '^Version' ++ cut -d ' ' -f2 ++ cut -d . -f1 + [[ 3 = 3 ]] + return 0 + return 0 ++ systemctl is-active openhab + [[ active == \a\c\t\i\v\e ]] + return 0 + cond_redirect systemctl stop openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl stop openhab.service \033[39;49;00m' $ systemctl stop openhab.service + systemctl stop openhab.service + return 0 + [[ -d /opt/jdk ]] + openjdk_install_apt 17 + dpkg -s openjdk-17-jre-headless + dpkg -s openjdk-17-jre-headless ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:21_CEST [openHABian] Reconfiguring OpenJDK 17... ' 2023-08-13_10:59:21_CEST [openHABian] Reconfiguring OpenJDK 17... + cond_redirect java_alternatives_reset + [[ -n '' ]] + echo -e '\n\033[90;01m$ java_alternatives_reset \033[39;49;00m' $ java_alternatives_reset + java_alternatives_reset + local jdkBin ++ find '/opt/jdk/*/bin' ... -print -quit find: ‘/opt/jdk/*/bin’: No such file or directory find: ‘...’: No such file or directory + jdkBin= + cond_redirect find '' -maxdepth 1 -perm -111 -type f -exec bash -c 'update-alternatives --quiet --remove-all $(basename {})' ';' + [[ -n '' ]] + echo -e '\n\033[90;01m$ find -maxdepth 1 -perm -111 -type f -exec bash -c update-alternatives --quiet --remove-all $(basename {}) ; \033[39;49;00m' $ find -maxdepth 1 -perm -111 -type f -exec bash -c update-alternatives --quiet --remove-all $(basename {}) ; + find '' -maxdepth 1 -perm -111 -type f -exec bash -c 'update-alternatives --quiet --remove-all $(basename {})' ';' find: ‘’: No such file or directory + return 1 + return 1 + cond_redirect dpkg-reconfigure openjdk-17-jre-headless + [[ -n '' ]] + echo -e '\n\033[90;01m$ dpkg-reconfigure openjdk-17-jre-headless \033[39;49;00m' $ dpkg-reconfigure openjdk-17-jre-headless + dpkg-reconfigure openjdk-17-jre-headless + return 0 + echo OK OK + update-alternatives --set java /usr/lib/jvm/java-17-openjdk-armhf/bin/java + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' =~ ^(install|hold)$ ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep -E '^Version' ++ cut -d ' ' -f2 ++ cut -d . -f1 + [[ 3 = 3 ]] + return 0 + return 0 + cond_redirect systemctl restart openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl restart openhab.service \033[39;49;00m' $ systemctl restart openhab.service + systemctl restart openhab.service + return 0 ++ apt-cache madison openhab ++ awk '{ print $6 }' ++ head -n 1 ++ cut -d/ -f1 + repo=stable + openhab_setup openHAB stable + local introText + local keyName=openhab + local openhabVersion + local installVersion + local repo + local successText + [[ openHAB == \o\p\e\n\H\A\B\2 ]] + [[ openHAB == \l\e\g\a\c\y ]] + ohPkgName=openhab + [[ stable == \s\n\a\p\s\h\o\t ]] + [[ stable == \u\n\s\t\a\b\l\e ]] + [[ stable == \r\e\l\e\a\s\e ]] + [[ stable == \s\t\a\b\l\e ]] + introText='You are about to install or change to the latest stable openhab release.\n\nPlease be aware that downgrading from a newer unstable snapshot build is not supported. Please consult with the documentation or community forum and be sure to take a full openHAB configuration backup first!' + successText='The stable release of openhab is now installed on your system.\n\nPlease test the correct behavior of your setup. You might need to adapt your configuration, if available. If you made changes to the files in '\''/var/lib/openhab'\'' they were replaced, but you can restore them from backup files next to the originals.\n\nCheck the "openHAB Release Notes" and the official announcements to learn about additons, fixes and changes.' + repo='deb [signed-by=/usr/share/keyrings/openhab.gpg] https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:22_CEST [openHABian] Beginning install of latest openhab release (stable repo)... ' 2023-08-13_10:59:22_CEST [openHABian] Beginning install of latest openhab release (stable repo)... + [[ -n 1 ]] + whiptail --title 'openHAB software change' --yes-button Continue --no-button Cancel --yesno 'You are about to install or change to the latest stable openhab release.\n\nPlease be aware that downgrading from a newer unstable snapshot build is not supported. Please consult with the documentation or community forum and be sure to take a full openHAB configuration backup first!' 20 80 + echo OK OK + export DEBIAN_FRONTEND=noninteractive + DEBIAN_FRONTEND=noninteractive + running_in_docker + [[ -n '' ]] + grep -qs 'docker\|lxc' /proc/1/cgroup + [[ -f /.dockerenv ]] + return 1 + [[ -z '' ]] + add_keys https://openhab.jfrog.io/artifactory/api/gpg/key/public openhab + local repoKey=/usr/share/keyrings/openhab.gpg ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:29_CEST [openHABian] Adding required keys to apt... ' 2023-08-13_10:59:29_CEST [openHABian] Adding required keys to apt... + curl -fsSL https://openhab.jfrog.io/artifactory/api/gpg/key/public + gpg --dearmor + echo OK OK + rm -f /etc/apt/sources.list.d/openhab.list + echo 'deb [signed-by=/usr/share/keyrings/openhab.gpg] https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_10:59:30_CEST [openHABian] Installing selected openHAB version... ' 2023-08-13_10:59:30_CEST [openHABian] Installing selected openHAB version... + apt-get clean --yes -o DPkg::Lock::Timeout= + cond_redirect apt-get update + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get update \033[39;49;00m' $ apt-get update + apt-get update Hit:1 http://davesteele.github.io/comitup/repo comitup InRelease Hit:2 http://archive.raspberrypi.org/debian bullseye InRelease Hit:3 http://raspbian.raspberrypi.org/raspbian bullseye InRelease Hit:4 https://deb.nodesource.com/node_18.x bullseye InRelease Hit:5 https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable InRelease Reading package lists... Done + return 0 ++ apt-cache madison openhab ++ head -n 1 ++ cut '-d|' -f2 ++ xargs + openhabVersion=4.0.1-1 + [[ -n 4.0.1-1 ]] + installVersion='openhab=4.0.1-1 openhab-addons=4.0.1-1' + cond_redirect apt-get install --allow-downgrades --yes -o DPkg::Lock::Timeout= --option Dpkg::Options::=--force-confnew openhab=4.0.1-1 openhab-addons=4.0.1-1 + [[ -n '' ]] + echo -e '\n\033[90;01m$ apt-get install --allow-downgrades --yes -o DPkg::Lock::Timeout= --option Dpkg::Options::=--force-confnew openhab=4.0.1-1 openhab-addons=4.0.1-1 \033[39;49;00m' $ apt-get install --allow-downgrades --yes -o DPkg::Lock::Timeout= --option Dpkg::Options::=--force-confnew openhab=4.0.1-1 openhab-addons=4.0.1-1 + apt-get install --allow-downgrades --yes -o DPkg::Lock::Timeout= --option Dpkg::Options::=--force-confnew openhab=4.0.1-1 openhab-addons=4.0.1-1 Reading package lists... Done Building dependency tree... Done Reading state information... Done The following packages will be upgraded: openhab openhab-addons 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 497 MB of archives. After this operation, 15.3 MB of additional disk space will be used. Get:1 https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable/main armhf openhab all 4.0.1-1 [104 MB] Get:2 https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable/main armhf openhab-addons all 4.0.1-1 [394 MB] Fetched 497 MB in 40s (12.4 MB/s) apt-listchanges: Reading changelogs... (Reading database ... 59615 files and directories currently installed.) Preparing to unpack .../openhab_4.0.1-1_all.deb ... Unpacking openhab (4.0.1-1) over (3.4.5-1) ... Preparing to unpack .../openhab-addons_4.0.1-1_all.deb ... Unpacking openhab-addons (4.0.1-1) over (3.4.5-1) ... Setting up openhab (4.0.1-1) ... Installing new version of config file /etc/openhab/services/addons.cfg ... Configuration file '/etc/openhab/services/runtime.cfg' ==> Modified (by you or by a script) since installation. ==> Package distributor has shipped an updated version. ==> Using new file as you requested. Installing new version of config file /etc/openhab/services/runtime.cfg ... Installing new version of config file /var/lib/openhab/etc/log4j2.xml ... [openHAB] Performing post-update tasks for version 4.0.0: Replacing: String ,javascript to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String javascript, to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String javascript to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String ,cometvisu-php to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String cometvisu-php, to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String cometvisu-php to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String ,innogysmarthome to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String innogysmarthome, to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String innogysmarthome to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String ,imperihome to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String imperihome, to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String imperihome to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String ,darksky to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String darksky, to in file /var/lib/openhab/config/org/openhab/addons.config Replacing: String darksky to in file /var/lib/openhab/config/org/openhab/addons.config [openHAB] Listing important changes for version 4.0.0: Warning: CORE: core.GenericEventTrigger and core.GenericEventCondition parameters have have changed. See https://www.openhab.org/docs/configuration/rules-ng.html#system-module-types. Warning: CORE: Rules are now triggered by ItemStateUpdatedEvent instead of ItemStateEvent. If you use JSR223 scripting without helper libraries and expect a certain Java type, code changes might be needed. Warning: CORE: The syntax for an item category/icon in a textual configuration file no longer accepts a value enclosed in quotes. So is valid but not <"temperature">. Please update the definition of your items if necessary. Warning: CORE: SCRIPT transformation has been removed and replaced with language-specific transformations: JS, RB, PY, DSL, GROOVY, etc. See https://www.openhab.org/docs/configuration/transformations.html#script-transformation Warning: CORE: UoM has been refactored. Please consult https://www.openhab.org/docs/concepts/units-of-measurement.html and https://www.openhab.org/docs/installation/#upgrading BEFORE starting openHAB, otherwise your persisted data may be corrupted. Warning: Airthings Binding: The channels `radon_st_avg` and `radon_lt_avg` are now of dimension `RadiationSpecificActivity` instead of `Density`. Please update your linked items accordingly. Warning: Bosch Indego Binding: Due to changes in the cloud services, the authentication method has changed. Please follow the authorization flow described in the documentation. Furthermore, a bridge is now required and must be assigned to the `indego` thing. Configuration of username and password is no longer required/supported. Warning: ComfoAir Binding: The channel `enthalpy#enthalpyTime` now represents the set time (in minutes) instead of the internal number value that is sent to the device (`minutes / 12`). Warning: DanfossAirUnit Binding: The deprecated channel 'manual_fan_speed' has been removed. Please use channel 'manual_fan_step' introduced in 3.2. Warning: Dark Sky Binding: Due to EOL of their API, this add-on has been removed. Warning: Generac MobileLink Binding: Due to an API change, existing Generator Things will need to be deleted and added again. Additionally, existing Items will need to be adjusted to reflect the updated Generator Thing channels. Warning: HomeKit: Add-on wide configuration of mappings for thermostat modes is no longer supported. Please use item-level configuration as described in the README. Warning: Hue emulation: The uniqueid value has been changed to resolve discovery issues with Alexa. You may need to rediscover "devices" in all services that use the hue emulation (Amazon Echo, Logitech Harmony, etc). Warning: Hunter Douglas (Luxaflex) PowerView Binding: Deprecated scene channels have been removed. Please use the scene channels introduced in 3.2 (in channel group 'scenes'). Warning: JavaScript: JavaScript engines have changed their MIME types: NashornJS is application/javascript:version=ECMAScript-5.1 and GraalJS is application/javascript. Please update your scripts to either make them compatible with GraalJS or change the MIME type to continue to use NashornJS. For Blockly migration, visit the Blockly documentation. Warning: JavaScript NashornJS: NashornJS has been removed from core and isn't included by default. If you still need or want to use it, you can install it as an addon. Warning: JavaScript Scripting Automation: The old "metadata" and "itemchannellink" APIs have been replaced by a new API with extended functionality on the "items" namespace. Warning: JavaScript Scripting Automation: ItemHistory: historicState, maximumBetween, maximumSince, minimumBetween, minimumSince & previousState now return a HistoricItem instead of just the state. previousStateTimestamp has been removed, the timestamp is available on the HistoricItem. Warning: KNX Binding: Units of Measurements have been introduced, make sure you use correct units in the state description. Rules may need to be adapted. Several items changed from PercentType to QuantityType, i.e. raw values increase by a factor of 100. Warning: LuftdatenInfo Binding: The binding was renamed to Sensor.Community Binding to match the new naming of the service. Things need to be recreated. Warning: Netatmo Binding: Due to API authorization process change scheduled on the 2023/04/17 - refresh Token is no more stored in thing configuration, thus can be removed from things config files. If it remains, it'll be ignored. Warning: Netatmo Binding: New scope has been added for the introduction of the Carbon Monoxide Alarm. Authorization process has to be replayed (and former refreshToken can be removed from things config files -- see above). Warning: Windcentrale Binding: The binding has been reworked to support the new API that requires authentication. Delete old 'mill' Things, add an 'account' Bridge and add new 'windmill' Things using the 'account' as Bridge. The channel names now follow the naming conventions. Items must be adapted for these changes. [openHAB] Running JSON Database upgrade tool (${OPENHAB_RUNTIME}/bin/upgradetool.jar). [main] INFO org.openhab.core.tools.internal.Upgrader - Copying item unit from state description to metadata in database '/var/lib/openhab/jsondb/org.openhab.core.items.Item.json' [main] ERROR org.openhab.core.tools.internal.Upgrader - Cannot access item database '/var/lib/openhab/jsondb/org.openhab.core.items.Item.json', check path and access rights. [main] INFO org.openhab.core.tools.internal.Upgrader - Upgrading JS profile configuration in database '/var/lib/openhab/jsondb/org.openhab.core.thing.link.ItemChannelLink.json' [main] ERROR org.openhab.core.tools.internal.Upgrader - Cannot access link database '/var/lib/openhab/jsondb/org.openhab.core.thing.link.ItemChannelLink.json', check path and access rights. [openHAB] JSON Database upgrade completed. Setting up openhab-addons (4.0.1-1) ... Updating FireMotD available updates count ... + return 0 + echo OK OK + rm -f /etc/apt/sources.list.d/openhab2.list ++ id -g openhabian + gid=114 + cond_redirect usermod -g openhab openhabian + cond_redirect usermod -aG 114 openhabian ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:12_CEST [openHABian] Setting up openHAB service... ' 2023-08-13_11:01:12_CEST [openHABian] Setting up openHAB service... + cond_redirect zram_dependency install openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ zram_dependency install openhab \033[39;49;00m' $ zram_dependency install openhab + zram_dependency install openhab + local zramServiceConfig=/etc/systemd/system/zram.service.d/override.conf + local install=yes + [[ -f /etc/ztab ]] + [[ install == \i\n\s\t\a\l\l ]] + shift 1 + [[ openhab == \r\e\m\o\v\e ]] + [[ -f /etc/systemd/system/zram.service.d/override.conf ]] ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:12_CEST [openHABian] Setting up zram service... ' 2023-08-13_11:01:12_CEST [openHABian] Setting up zram service... + cond_redirect mkdir -p /etc/systemd/system/zram.service.d + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /etc/systemd/system/zram.service.d \033[39;49;00m' $ mkdir -p /etc/systemd/system/zram.service.d + mkdir -p /etc/systemd/system/zram.service.d + return 0 + cond_redirect cp /opt/openhabian/includes/zram-override.conf /etc/systemd/system/zram.service.d/override.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ cp /opt/openhabian/includes/zram-override.conf /etc/systemd/system/zram.service.d/override.conf \033[39;49;00m' $ cp /opt/openhabian/includes/zram-override.conf /etc/systemd/system/zram.service.d/override.conf + cp /opt/openhabian/includes/zram-override.conf /etc/systemd/system/zram.service.d/override.conf + return 0 + echo OK OK + for arg in "$@" + [[ yes == \y\e\s ]] + grep -qs openhab.service /etc/systemd/system/zram.service.d/override.conf + [[ yes == \n\o ]] + cond_redirect systemctl -q daemon-reload + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl -q daemon-reload \033[39;49;00m' $ systemctl -q daemon-reload + systemctl -q daemon-reload + return 0 + return 0 + cond_redirect systemctl enable openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl enable openhab.service \033[39;49;00m' $ systemctl enable openhab.service + systemctl enable openhab.service + return 0 + echo OK OK + openhab_misc + is_arm + is_armv6l + [[ '' == \a\r\m\v\6\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_armv7l + [[ '' == \a\r\m\v\7\l ]] + case "$(uname -m)" in ++ uname -m + return 1 + is_aarch64 + [[ '' == \a\a\r\c\h\6\4 ]] + [[ '' == \a\r\m\6\4 ]] + case "$(uname -m)" in ++ uname -m + return 0 + return 0 ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:13_CEST [openHABian] Optimizing openHAB to run on low memory single board computers... ' 2023-08-13_11:01:13_CEST [openHABian] Optimizing openHAB to run on low memory single board computers... + has_lowmem + local totalMemory ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=3936500 + [[ -z 3936500 ]] + [[ 3936500 -lt 900000 ]] + return 1 + has_highmem + local totalMemory ++ awk '/MemTotal/ {print $2}' /proc/meminfo + totalMemory=3936500 + [[ -z 3936500 ]] + [[ 3936500 -gt 1500000 ]] + return 0 + cond_redirect sed -i -e '/^[^#]/ s/\(^.*EXTRA_JAVA_OPTS=.*$\)/EXTRA_JAVA_OPTS="-Xms192m -Xmx768m -XX:+ExitOnOutOfMemoryError"/' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e /^[^#]/ s/\(^.*EXTRA_JAVA_OPTS=.*$\)/EXTRA_JAVA_OPTS="-Xms192m -Xmx768m -XX:+ExitOnOutOfMemoryError"/ /etc/default/openhab \033[39;49;00m' $ sed -i -e /^[^#]/ s/\(^.*EXTRA_JAVA_OPTS=.*$\)/EXTRA_JAVA_OPTS="-Xms192m -Xmx768m -XX:+ExitOnOutOfMemoryError"/ /etc/default/openhab + sed -i -e '/^[^#]/ s/\(^.*EXTRA_JAVA_OPTS=.*$\)/EXTRA_JAVA_OPTS="-Xms192m -Xmx768m -XX:+ExitOnOutOfMemoryError"/' /etc/default/openhab + return 0 + echo OK OK ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:13_CEST [openHABian] Setting openHAB HTTP/HTTPS ports... ' 2023-08-13_11:01:13_CEST [openHABian] Setting openHAB HTTP/HTTPS ports... + cond_redirect sed -i -e 's|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g /etc/default/openhab \033[39;49;00m' $ sed -i -e s|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g /etc/default/openhab + sed -i -e 's|^#*.*OPENHAB_HTTP_PORT=.*$|OPENHAB_HTTP_PORT=8080|g' /etc/default/openhab + return 0 + cond_redirect sed -i -e 's|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g' /etc/default/openhab + [[ -n '' ]] + echo -e '\n\033[90;01m$ sed -i -e s|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g /etc/default/openhab \033[39;49;00m' $ sed -i -e s|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g /etc/default/openhab + sed -i -e 's|^#*.*OPENHAB_HTTPS_PORT=.*$|OPENHAB_HTTPS_PORT=8443|g' /etc/default/openhab + return 0 + echo OK OK + create_systemd_dependencies + local targetDir=/etc/systemd/system/openhab.service.d ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:13_CEST [openHABian] Creating dependencies to jointly start services that depend on each other... ' 2023-08-13_11:01:13_CEST [openHABian] Creating dependencies to jointly start services that depend on each other... + cond_redirect mkdir -p /etc/systemd/system/openhab.service.d + [[ -n '' ]] + echo -e '\n\033[90;01m$ mkdir -p /etc/systemd/system/openhab.service.d \033[39;49;00m' $ mkdir -p /etc/systemd/system/openhab.service.d + mkdir -p /etc/systemd/system/openhab.service.d + return 0 + cond_redirect rm -f /etc/systemd/system/openhab.service.d/override.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ rm -f /etc/systemd/system/openhab.service.d/override.conf \033[39;49;00m' $ rm -f /etc/systemd/system/openhab.service.d/override.conf + rm -f /etc/systemd/system/openhab.service.d/override.conf + return 0 + cond_redirect install -m 644 /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + [[ -n '' ]] + echo -e '\n\033[90;01m$ install -m 644 /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf \033[39;49;00m' $ install -m 644 /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + install -m 644 /opt/openhabian/includes/openhab-override.conf /etc/systemd/system/openhab.service.d/override.conf + return 0 + cond_redirect systemctl -q daemon-reload + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl -q daemon-reload \033[39;49;00m' $ systemctl -q daemon-reload + systemctl -q daemon-reload + return 0 + echo OK OK + [[ openhab == \o\p\e\n\h\a\b ]] + dashboard_add_tile openhabiandocs + local application + local dashboardConfig + local ipAddress + local openhabConfig + local tileDesc + local tileImg + local tileURL + application=openhabiandocs + openhabConfig=/etc/openhab + dashboardConfig=/etc/openhab/services/runtime.cfg ++ ip route get 8.8.8.8 ++ xargs ++ awk '{print $7}' + ipAddress=192.168.2.180 ++ grep '^[[:space:]]*tile_desc_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_desc_openhabiandocs=||g; s|"||g' + tileDesc='openHABian Help' ++ grep '^[[:space:]]*tile_imagedata_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_imagedata_openhabiandocs=||g; s|"||g' + tileImg='data:image/png;base64,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' ++ grep '^[[:space:]]*tile_url_openhabiandocs' /opt/openhabian/includes/dashboard-imagedata ++ sed 's|tile_url_openhabiandocs=||g; s|"||g; s|{HOSTNAME}|192.168.2.180|g' + tileURL=https://www.openhab.org/docs/installation/openhabian.html ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:14_CEST [openHABian] Adding an openHAB dashboard tile for '\''openhabiandocs'\''... ' 2023-08-13_11:01:14_CEST [openHABian] Adding an openHAB dashboard tile for 'openhabiandocs'... + case $application in + true + openhab_is_installed + openhab2_is_installed ++ dpkg -s openhab2 ++ grep Status ++ cut '-d ' -f2 + [[ '' =~ ^(install|hold)$ ]] + return 1 + openhab3_is_installed ++ dpkg -s openhab ++ grep -E '^Version' ++ cut -d . -f1 ++ cut -d ' ' -f2 + [[ 4 = 3 ]] + return 1 + openhab4_is_installed ++ dpkg -s openhab ++ grep -E '^Version' ++ cut -d ' ' -f2 ++ cut -d . -f1 + [[ 4 = 4 ]] + return 0 + return 0 + [[ -d /etc/openhab/services ]] + touch /etc/openhab/services/runtime.cfg + grep -qs openhabiandocs-link /etc/openhab/services/runtime.cfg + [[ -z openHABian Help ]] + [[ -z https://www.openhab.org/docs/installation/openhabian.html ]] + [[ -z data:image/png;base64,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 ]] + echo -e '\norg.openhab.core.ui.tiles:openhabiandocs-link-name=openHABian Help\norg.openhab.core.ui.tiles:openhabiandocs-link-url=https://www.openhab.org/docs/installation/openhabian.html\norg.openhab.core.ui.tiles:openhabiandocs-link-imageurl=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAADKCAMAAADaddjJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABCFBMVEX6+vz7+vz7/Pz39/rz8/Xl5eXz7u/V2Nuoqaqss7rBvLvt7e/t7vH58/Pl29nh4+fx8fL4+Pjo6On129WyuL7DyMz0zcL45eD7y7P56+j46+j45ODk5uqXl5j/3MXvmH7yuqnyrZjvm4Lwn4bur5zQzs/p4t+2vMPZ3OHf3+DN0dbv8PG9wsjc3+Pe4eTJzdLn6e3r7fDiu7D+7eLvt6frzcbwo4zb3uGkrLObpKzmo47Zvrf+59j/1Ljq6uri4uL09PXx8vTy8/afqLCIk5yEjpeOl6GUnaZ7hpHw7e319vj7rnr8l1P/8+v/4c3/yqf/w5v+uIr9sX/8oGPn6ert7/D/vpP///94KvEMAAAAAWJLR0RXfQrZHwAAAAd0SU1FB+UMChYVItpuVcYAAChlSURBVHja7X2LYqNIkiCFsztNYwolrezrmVN7e3YXI0FOMnXeHcEdAtSuKs/2jJBrzrf//ykXkclTdlm4XvIrLCMeCUJBKN4RaRgAr169MoZgmkdH5pHxGOBIvfqbe+Ebf7NXBvnu++E9m6ZpmN/0Jj4RgBDgVhusDtePPvIN7oHeo3vuv/UoPbaOfxhQsGm/OjlyHOe1O2EHQ91eYISZxhEBHCMygR6OjnbXb8PwxxB/A+1HvdOPeqOQ+IzbHxNeeYcZ0GPvx++n3PnxJ+d//PyHP/z0x+9//p/W99Zsatm/HPND4/DjQMaMARSQkxYPJwotwPpqTMCx3mAk/WYorAwew9FJg7+jZpB5tIPfE6J4Kux9RbpDU3r6L7/axz/+6ddf//Tzn/71X//t33/991+Of6G//OL/8svxoZH4cWDGGbX3jEEK4wGfL8IItlwRzueLecjnf57POaIi5HRBpU1huaB8EfIFpTM8cc7nIqZkMZ/PPcRqHM4lDefh/C9zGnIPkX0kOP/zXM5Dw4gAr8YJ97kI+RsxP5q53bOf/q8/nf/6H8f/+etPf/3rj3/9l1//9Nfz/zi2j48Bt8fhsXNoLH4Uu8yg3y33jQL0CisIAkvChowDESTwL4I0CJD4Yn8aBBxH4G5YBME0xB837LICQQNLBKFC75/hsAY8HdF7Yunt0Diy8VFJEUwDjntO+uj98X//wTD+z7HzE+D317Mff/3xp+9/9J2Qf/c9n07pobF4B34N4r7eMwapdyblnxcBUi+hJ3I2+8sbCXukIlKXntHX8PrujJ599xpWz+h3SK3GyQkMspn0TmZvkJ//ZSFnJ7A+W8C/6+Ojgc3FTM4WnvocEKsL154dzRZzaR71GJfzw5TGxy6uZbYLID33u+++/w7B/eOhkfh50PLA+h2FktkTbKer1c+rlVr8XP+tTm88In3yK3W+OpmZ5u4Y02z2He0IPeJPf2iZmNIUiNLMmMk+ojc8DHUCNYeIwZIwwyTEJEcE1xlBYGp9r3bJ8MWMZvnq1dGr/R/82aDQa5ofu7uHgV6jpaZm3WzezTuUp7vg1U0b63NgMskn8E9dl4L0tGleLGHldTg7ySMvyllu44gSVvLJGpcEx09sEuVRTkg0ATqZTAj8TXBVval9/R31mPbYFxx/EsEC/qMIdkUn6n4iva3gexLden0YcaI29aI9HJGTW8fD6BMbLrd7PzD85NbrqzcjV0ATgONE+GkcTqfJVBxT27M9Ly9sPSAv9LLI6x3wxvA+9Mc1UK+TnfdJb8wXHk/wIbffR6OywW6uvz657fpED/h+9/ok+v728fqR3Pi+zSO69f4d0G7YZAJEWcgz17PtZT4BTBaui4yrBCCsVMBYjkMBpayc4CnswfCHhwwMgagl0xusvwvAaRawq+wGHPrGHwf0EFZjlQzwS/pHkWbLZveh7/xRgMYXqXGHLIPtQsnKwUMoyQv5jgXErsOKZbikvmQx50vOKdgrRS6XElaWy7BFLy71qlre52MIvszIMKU0TW94yBz4ZmR9X/wOb4LJ0DT4zTQi5Q8wtJfgYCjceR8cU0hbxkKA7S1jwQvLSkQynQphWco+Fx1C9RIX5T7sRsDJQTExAEkkB2vcmAtDpEaYBhfe3LSZAbJdjxQUXzAuigxi24mBpxmBBaK93mvoy8BzUO9vDJ/j68IyxIUVGIY15Yb5xqDafmee8W2BGR+3A2q0LQtUHpiUOSsAgHyXOVAw/heNQHNYj4j3UC+3Ejexkhk8I5oG8D8PLDNJPP8iTqSwAceplWj8BpZMqZxa8wtOEyEtN0kAT6klUh/O9iyL4xgLTriADdAdLe4n1BLeRWIGAZ8aRsINBkcuUs6NgKaI8W8J9IeY+gBnZ/EPsR+7mj5q1LMhZzV6GoTRMl9HcWC1VraIvusjU9MPUsKtt9OUW+YxfSsuAvruvYjTAFAjxSVNDUsarjCNIIUtGlzOE99LuJdM0yTgNKBCmO+s1Lq0gJ4TI+CpEQTvpqkQb6w45fB++d4PEssCAg8S/g5+c5QKI/Et43iMI/gLovf4mB8fH08prBwfJ2d9Xtehtiwnu6pC3uK3Xjg9WXfnRyZzIVIaiDSUNDAvwsBYTC2+OOZTN42tC576CaKXeIo5BHHqX3pAxG4qLJ5I244Avb6Zchmm0jNI6iX+e0B+Sj0RRkksDC4u5r4FzyEFjmGnAo8IeHCpn7rpt48Stvx3By+KeJ2S7Shoth5J25ABN+IpCDsa8Og9bIRBKOURtaUhkdNSbgUucqLY8IP5m6krBKfvg/k3x+7H0e50zHQAeQ+5bFdz2IteBOuL3igZeTkQoQ8I+ohF5pAjczB7uC1b9DuN5qB5795LR1/2Tkcy1IcV30YU0nBZUFGECVVK79IrLO6FVISyQ3G7VDoErD8cn+RDBsSXeJteXqbp23fpu7dpevl2ypP04jJ9+7fL3BzitmUPY6j3BTRzWPIQZEIgOCw5FzEtghjMCdjKG22hU95a3vuC3xFQ3qUymLU6Vva0X/26r1H8XKEjyI+B01ceNIphkdNvq7s/UviYzlsO3ssaqU6r+p7xF/SOgJ7Su2sLNwZc2VhtZbfhUD6567KxL8Hy5ouIEFvaGEUxzXk8MyISgU1AJMVd6MExbD8ink0i1yWGa0cYpKEMIzV2ZDNDRpEdGSyKcGF6NDJsSk5sRkwSmYYtI9eXEbG9iJHwBHfidSN3JqUfgk0oI0OHfYhp4IWplxP03MHVDClZ6GKA2WZu4XmwX5oeHCDoMyAzj+TKj0SpIRlgUiU3Lh21YgwD5D75wVeFQEAU8CjwsQpFMrkPDOwXYWHo/hkAWydYqbhFvC8uIpjJvCyRacjaJ45sPF8APwfB7BBl5RJAFefjoNTBdTbKbw4fBhEQlwLEpsD+T2ifDB6rZEbKsrWJh44/ozuA4PCEexPoWbpxIWgSBgqRcwxhcqUQeOiCCZijGeI7ZGYoTLACaSwMKvLySoD3ANTA2y+K7eW1Py2d3Ua9teKIFIYwqadAgU4PmRDQTJqeu7Nl240peGHbozP6bEDReuCIBCwNKlMCIkVFLp+pz60qc2bPpeaFIweBfhjFAuXUnDkNq+j6OBJD25oAasGDMq4BxXegugXvzhUAT8MI/5YE8v6IyLyBe+Cb8uGVMw1HGAB2Oo5S3owvNDai78eI6nuTYJqVzYkR+6BL4PjpTSXfjw+T6lI6kXbTUK3yNWL7jvyWu6pOHZcgmff9a3LJwWw+Xru9F7E/awans/K/8y9hjpG5P9S9of2f9ZwDT5sjUoYaZ5q+qw7ptsZa1KFDz/UrfwreAQ5vJAbVjvKA61A71vsjX7F/y/7lJ8o6OISE+lGkTMIHkkbZBP5E1ku3K+8EMzUsc8L/IwFSSihM5yAiQceaZJWAwCzZUg3CIKLMUHYUWk7WFehheZFAQQMXM4CNLIRVFjgAAk8MO1Z7BhmzbxTuDaEXAoOGCjaLKjyJQ2tWcU5V9EThgIRhpFzKQmpSqFAQQriCs8i0SSRBRuOZLyc9FbY2xtqoyyvoVWdh5erZZ1vh3kvXf9mglKCxBIKNWChYtpnfMQpRWKnSlIHA/4uo8iKdD8HgRQAHaj8L2AepaXXCRpkCZJIjG/5ZK73EqUGQnSD4ZZNlfBq0QqERjkKikU2PxFalmplyTvrTS1AjDtL94nQUKURMPzAspRTqKBKiV8LlxNRFqKJh63ghiFXwBiWXK8ISsI4s9Dr9YGpIeRnxzpt8cFWhdkn27rA3eLtggkTLiY+yCjKZV2DOLAk6FY+CAZZiB25pFH5yA+pAQpBEtK44USMRKkmhdH3Oe+G1IrISCGOJ8TkJEwTIASwX2QK8zFjC0ZEhtEIMgYHyUcfCilIvYjzIPmfhxyEF2czmKGkmsBwsgHCUUw28uL/BPp+/MQdplytghlSIkdzkEKysViHodsQWEfplZ/nt9PYwtuC3URr3WWl2Vn/A403oYJ03Gi7fNsD0Lu3v4M+EaMWOHKzJVyQvMdyi13UNux4herbRyUfZfDmrEhvbYWcevNacj37L6K2fOEmkCdob+hs84GoaAe+b6gdxT0FDGz/u+JNY3Rkg2pGhH8+vHpvYcA/WMvOA9lwZeYQqLx1znRO5dDE2jDXa/F5NC3vgsPK8qmgakIZmGhm8KaYuFRPjQjnB7dNqTLGPuaou130MEMipURKlGK/W5GEl1hoDlIGZmRCVYFIwsKdg1Z5+s15qVh7loEr4h65gJLQ47ABMmJYbsYVoF3Yuemaa5xPYrm1DRMNC7AgpBz9+uhtxZfQLWeXBYSqXdIrp2a1ld7na/JeyNqCQP1e4EuN8YtCivK22WheysIPSSGqTUNORgCYL8EYCug0aDG0MLiyiQA20bYHMyWXFqE4xbo4Z5MhLIjKJgUXDvwvqIOxG6HXk4kY228razZRumUI/XeTwPQ+MGQwJwQ36K2FajAn0/BCERfIRgeiB0+x70CLS6fCeVVFAHQvSf10+BmLHiEliETFoETlG4f0YCj700Zcvi0/H11nZ+H3huhirLBZu28aRzoA3x/C71XFU3hLxt/9WoDy8GavVj4Q/BN7cAhR009kGmSurIJ1omhSrrRIjHXv5t4rhoW4RHza0dk+2pv1KXm1DKtHDgi9R5NyA9FMXuI8qwHmjbzEM1/zgWt3Q69AFwfw51j5wW9owCRtWZSiAQDNoIPTAunl7fXYVxpEy967yjQqFvnufQACm/d13fLIWbLJr+3RE35v14SHfZD2TOI0WRbm7X3oSZeZ2hTtJraE3DpfAu+8ndNmWv9v24cO4wNVIqWeFtSHsN7zTfEdu3QU9+EKG9i1PT3YGSmkpxBhs99eP/NNFw/h4HEwxH5UdS7Sr2GMfQGLRIdsRgpd72mxt3DcfJNizpTlcXYKqra7MT4o+capq10DDhftR1g+LlwNNI3Z/6Gi/GsrWSb6HaPxUeRStB5DH3bZXJBvooqLQBKLUXFynlwrKsC8tKMHiRWJakb5SiS7gfK4NiOpfKZAj8SGm7Pmz5BPRXqkIc6KxGrResCDwxCLjvzeudGDwXNsVPlAaI7xMMUUw9jI0ENsE4B9wtHhWx8EKdZoeKs4t6Mre5DvWLTwsL/WODuPtjdVadZdXqp9V2e/WfWZXdMC3Kkg1E293MwcRswHgee77P8d6o7Yt4TrnncuoGMYbA4UvIWYCRGOG/wbgQDLTSqeWDEfae0jCcw/dE4wIuAViUJ3AVn09jgtmFsU/noc9o7Ea+FDQCQ4HjMJuHZhiGPvd4NOcBnkhpHIJ5gViLbcyRB4sYd4R87nPKwkWMB10fbtin8OzgumHI1UbIYx9j+WCETPmntQ35h8LZ2Yd/fvj7hyv4g/erv//zatdJ1jmAx/p72bgjg19dtNDvtBtiDp8iMUZGQMYNZLuDP3LKyacWc/1jgvj6Y/VzlWVnWX6WV0DI2R/XA7dOS8ZOS8kPRe994PB/nYbtmi0jWJtrbULUbNdpAsU9p9mL3jsKsibsruSZNjLW5tADOfT5Plh/70MEjT6MwTOjFWZ5w2idYUCoxzG+rt772SrpJ13gKyjCGo/SonQJIvI1CNoiD6e0V8fWGcU9FXivv/d3M/IJYRHoseQEVNMQVAftyrZp5EUmA5mFui0MUUoxI3OeExPzZSTopR42a4PRJhyfSzcMBSimmCKKuaSo/pKIeqq9E4MtAsrt3BNKsf4Nrv4G83gkdmdCbfY3+JKgvqKiHCnXWWSaxPPQJW948nfTdCXIONCIzd9MT5robwPN8ssUx9XoDYJkak2nlgXK3zLmYQ+Tg2BFOdLfSy9NKlXCJui3oMzaArRZ2J6m1kUQJhdWksJfshBJklgUxiSwz7qAG4D9Pk+tNE1kAAdhEKy+T97bSlH1tF83PuGYZBrwN6gTo9sdE4L83EZHL/W1xq217sVcnRJjGo+NHnpsChdrF7LSbXmOez2V6KM97Ry1R/FFfp01P8i94poW17n8f5PXOZa/9urYWoPY6THjPcyBzE0vnPtUwrfl85CbIabgUh4Ec+FL0FEBj6CvL8TU5zGhqGfy0EqDAPThANNxwP54w6cJHogpB4TlnMvYByLkYuHHJvzMYNMzQYX1QxnaISiznuEJOhfSk7GYU98PMak4AgPCxyRYzEIVIWYZgwoOzyD2ZSxt6kuDwkUJ/HbhEYRwH9KjMve8L+JSuaUms7xV0S173BiZww8jNYePMTRTmUGDZxTd0C4P5Nf4cs6qtmxiAJ0tMYjJdysg2l4UsxFQU6cKU+QtFtu8yP6OxqWjCHm5V3PweIgBmAjb5EUzz3P98ASdMlh1QahUUiaC9eh3wmeEeRF2tTQNWwWCQewQG0sxdB0GSDgM6pAjrKNwpcttg0VHno15rCC+UOC5xI1M27OpZ6t0Urj6kfYj0RDEpcpTpTl10WkEvxJX9ekz4Jwjk3neEfk6ITdNpZOAAqMSYK6Hk0ZDcBr/Qr+4otUf9mgO9L1BfJAhkipposSPhRFc353PVRAY8zwxUiuEb/joAbIxSCmmU2CSU9+eomfBjbl2y/hwBZRtWv4kIqEuBnkXsB/DkZ4PoyxMbaV0qoRWgFxflXJw2/ctHIQiS4JgQ+eNj/UcQdOARSjx+1V6kWp0FVizgbdoYSFmg0XnhnHRZens4b2gFhm2C4Jl5oswXmA1xAJkEKceCaWPKadTwRdYoRCCHgZqWEiBTF0b5JgNsogSQHXs2pgzSjGnl7oho7EIfUltlESuyyX14SdBBXUFAQlFOcVaDPhdgPgKfGzJ69mcSg7UC2KOxtz1XZ/6YYzpridATiHWZpCFj3mrcEtfhXx1KHhSTvL1BMuBJq0U62rY2KDnQ1mbFWMTXz/Su8Ier8Tne/jQjcNH3h0Hd+GrNqrvqHPN+qUVA+3BYR0J12WZ+3nvCxi3KGZlybreIz1nWWNSjMpOf4EaEGNrlsu17pbRaWVdwlMXy2zyHWCl8B/ylAAPBjRGpeAxuuh50ZNjfZO4XW2YyfKHyaFv/TFAE5jE6A2oKkWd9LTeyeLr5No9Qpkv0CRB5WwNL4BOrLFeOLMl27YC4AW9o2Dod6xRuh4kqLcKQz/2tnxB7xhgO2jc2aitY2fg7MW3s7G894EngX1l0CSZL9HfkOvCq+XZpMxzmrNJ3mkNTb5DHcx0zvhdMy4Qi8uA8oVh0+AkCF13wenMpVw+N21Dk2YR8BDNYvQ7nGFmQhAHWF0K22c7ZVg1ooE53IUqPr1M0/RyMb0IpPDRd55iDevFA55k5KuAVnZzTPXQud5BrtJUwrovVHg2FHYNe9jjTrcXMWZwELnwDLoIF7MFpe6M7p3i56lBTZJ5PtElQsV1Y7g1cNOd82K1jQbWbzMwkG5l3yLuPGd1zO2r1lY8HWC3wiBVurGW29R/59vUVjwF0AhbyyKf5NfF5Bq4hMz7ZkXZct5BzG20Yva8QWNO8iDBdkuF6t201DMo9MJtZc+voy2M/WZFtdqwTeawzcZ5sFO+fXXQ6M1Vkw9BJxgvx/qVhlydXuae0ncb/ruHeul7Y7W62l592G6vADaH/pqHgibPQTMETJ1uqq/K4XIg6bB31OSuyxJpZJvV6fZ0ta2qavVsyfeGA6dmsM4gXlFnPg2xfuhbfwzQE11Dv26jNjQobo81Ac4X9I4AjbJ8Wep6n0nHcMtd7tAZFar79D7IVhnLNllmrE6rDb4/R9BIO8OmjGEI4i28pc9012O2pfF97ZFBtJ2iaNtuPzCUbh+2q0N/04OARte1LoihYcyHPKLL0BnQ8F70gmjbbFer09Pq1KlOq9Vq80ypt/PkKi6R971jvXwSp6cD156dQ9/6YwDW0wrKni2sybbcoeTe8tA3/jigE2Idpx1wg0FjWacxNsahl60yJPxNxtAPbzgrkHGnq42jWjDDXvgoh2UMFOPMOK3g+iAK1aejrXdozHwZ9A6DP7c40KKuJT0bPIZ9l5be5sPVlTbb4H21yq6uspXeVEJvpY+cb69W2wyPbq+qLS5xQHVozHwRGNpiLZgKyztZUU5HxGPQC9YfGG2AzxUsT7Nq61Tn59XqvKoQnzi1NeJyBbu324qtcLndgDBcqYfxNEShtoh1em9elMxcm3mYK8NYRnnRZ8V90+4e81Ywp/mkNu272QWG862nAGd4Irwd8SXeJskUu/9Y2BDWp5dCXFoWTjAndH/68gYXvu+0IE8EW/cGRBhPLy+tt4nEepzLVOYC3tM0sdJ3wizb+ETZ2cmjfQ7IE0B8OefO+QYfyAbkGqwCAAGfb5zzKjtXah+IvyyrTlco7tg5SsMNyLoNSkCQiSyrMkOJRwcsQCURH4kerfJ2SzWJNnb6hxVsTQJrHry8fN3z8/acE84YzYHmzmr1AeVUVWVb5LKr86tVI+muNnq10m9bGPjh6r+RG+Og7TYDS+/qHPnw6rwWh04tJ7eKOR8ac+PQWxOmuaMyDNuoN+701sUzhjkQYqDZVm1XTrZaARpXGVhy21OQaVVVKYkG0u1cCTrYka1OYftqVZ3j/mqDog8eAZ4OJ4PhlzF15ulKycXHoVncVBp2oLY12nTUjhWP/YTBlsN6H12/73qDnd0zHi/nBkSRj5HswIzra7xq96Hv/FFAbTrIHOvgcxNUstxsreSGMXQ2cW3QjeK96uogjTabijnV5hwEEpAiyrNDf+lvB3VoBwtxsUAmlly8DsNwGceUFj0fZFeVWfOL/Zem9qaWYyC4/huF1zbbonB6HFLpi0CpNdtQzZMjEnHNubCmoap2XrZKWd9/Nnq2QRtEG5ps6JBEYYTyCwQTCLFDf+lvBwpVBA23PI9wCqZ8Milz4Ad53dVhJzlVbeq8knHXP/QXPCw0squeFEQLN2cYwmzEWi9TkjxztI2FRjcwB/Q5oFlnsKaPkFHUy7S+mmUO2F4OiDfQfMHq2qAVBnbZxnnyD0njK5Ieeh7X+bqvkZXXNZaBUaA512DfGccaaGFcoUeyqpR4g1UQdR/Q8lplH5Q1d3V66K//1dGrfvSvgziORRGr9mhFiLO98mURi+uQx6oxqgiOOeu5H0ZabSjLNtk5Oh/BgFuh2QUG3FW1qVanSsod+ut/dfQq6i2o8AWXYT3tkYUtCHEe6Gs1f1GM+dRBaPQtjPFW2y2feegv/e2g5rJrnQcFzAGrr3CtKMsJ6A9n+VolVms9og5ijspzeAGj73Mw2I3wxO3i7h7+XhRlzoZV6IKsMjTgNoxt1NbTiKXtgxsuHLPR0do+/x2u+z6I/eiluXO1Ahn2IUNTDYy2D+h13KqY2tWHD8/CuEC+MFGGAkH+cO1RdPquh9EJzRB6LrRRsTbQjbNsCyLNyartaQY6GgqzapNVavVZsBeNskJVA6m+tUlI6VTkbGAN7xoZ981zeBaovPWLKwP3GhutcT+O1awboEXIzrHbT0RtHGYvaSQjQZPjenI9qSkz19069cbkhq+36Vw0RjFjbJUZmBqJbkkH/rOnb6bdQEFfIehHLsrBG+uVtjkj00hyZ6vDYhg/03GyZyHPerAbClrfUCV62dQ1hkfG2uB3gGExTCS52qDzYbXdPg91rAONtjV6FHKpHY06qYRd113j0OGwzHutkTWruIe4Yhg1/xwz7/GCxlrBQ1/VEFOOve997P8VFCFXLfqx0pgPiXekU+cFNHrPsDs+YDIRwscerYIutcNhKmIO6sQ0dtgOD95/adMwqm1mVBVSLphsz7E8qDEU1mhdSDpZa7+DLr8qcj1zRTkpm5BmO8vjfuawsB0l0JRcQxH33BivYRiD1OjaKu7AUHqC0x3u5gfZzxwiwlaVAxJtUymP5BNJerwX5H2cDvMceupaL8esxfSh7/xRgEZVRAvkB+hrQDROinKNWsS6MS/6tKvckWPsg5cHoNALOJRxqFwO8H8WUj2RJG7npq6waCKZLfGOaMGHD2PjONkmq0DCMWdjZCvM9a82qhLmPNtgjj8eyZ4uU9bY8vxQRSpCboFqthQxNi8XVlC09kSXY9YowHdelr43qqsG0BWJnshVVlcCYDLJBxR3K7bFWYqeOnqVnoCuhnyJdZkThssS7Ysb5kTnjLjrsoQCrV6tVqfV6nxVYSbkNttgciPmRn6ADTgEG5mRYcLk02Uj7KMwNIYHDkkyGSXZPjLGebrEehMF3eyuN/DaCrS+W6dJI3lRHcaA1rFyusxZ4eWqZiUvltfw6y9wA6OZ12hWFJM81yaFcw+9TKWKwBlZBmvZM3wgGlcysfR0JkIU8G7BMsRe7jghSRCqDnKwGTpdj84xsTZvswL5tgLRVedJPj/81m5IP8bJTUJQyfIY3mROsUVcWGA+SbGEPXEQxrThDs44q40xnbW/crJqhYUpz8/r0GeyJjKGZmPd+W+azBynVyb//Ajxk2BXsu3axWXnZ6h33N/f+4yhR6gat+YQzQNtt7drFHrZFhNIMgcUXFXLBqYb6MGG42ycjSpkqx5Jgc9noBeRmxc4zzbWtUUyX+dhka+lXKtZLLp+Zo5yN5SjY20LTCPB4uxasl1htbCqAOjsuQ9Xh0bA10YvAqUcM/8xUS8WXFrC8rEhasAHif89BjGG904Iyzan2FIH5RtWxG/QaIMl2nNZlVXPgHqRQM08DGkI/9KiRQhqg/Sl9EOLv+53cWjEnE52uPcHfXTjKUO/GBvgOuqJtbxz8+4uPysB9RnBsIdLB+tuZ9vYsMXwuH4OcPHVxkDPI7IgNXN3VjkqAnJ+jufr2bwPjYGvi96PlLyWuk1nL5mkabfDxvZzkAWItlXdXKTxRqpOGdolma1q5+ShcfA10asD8WJ5XeQyXxa5l3tea1J0mu8gY3KcYmaDaMu2qwwdkpnuNnKqMFthdfy2Os9UQ5LVU7aVtdRaBlPM8g8CC1P5kqL1jXVeyCYB9V79HG4C9nXoA3vahrLGYp4XtKBqruICFl0RUEe6fRVidE3xs4eaDTg3eG/Zf+9N/jo+xwxgVeHj0R/yTNL9h7Dbl3cg3Qb62MA+HpUhaW+udB6Jaqz1/NIjjWYq0oE/geyScdlOFt/Ppt576Zyw6nyrW2qtsCnJE7fQboPblbKB9ru7t/wk3vs8mfWQJ+gIO/43M2c6TX5D2fp1xvZzeAFNvTkvyjJfxjlm8easoBhlK/j1ushf54M+UH32u+/KToV9IiuGpUAVttnC7lib7TnuNUal+TwBUG3ipiJJ0rdpklpWMk3fwkYawq4gTd6m1lCiKVzrNOu7LkvfG9k/ddIIppCA9bbRnSE/6O6Rq2fSkgTxRBORJlMrSP+WpoGFM1OlFg9xlip4WZ3KUHYdB/b1c8A0klPVOWurRdtqs0W3JIo6bLW1fS7oVfXCGHLP2ZJjJB44hEr/h1VYm+wqbvrtvnkON3jB8+ANBrtF4d0Rdu3UIL3iqyfu6PpiUO6gt7YhGi5QDvb0y2D30h+2HsmyjbNhm8pZZQ7Wa2PzR+ZszrOn7WnooGWpN+3hLuWpP8dCl81+12VxUpvTq8Zo22arqmkd+bwySmpXjZorc6mRmKt6CpUqWZaT1kXWlAQ5Y/o5gGjboNNxpZpHVqqsraqu1CYG3J5wUuQQvYoalzHlXEw5p3EoAh7zJWyHnMNuEfJ82MxMv40KxA/e+vLsmWDX0H7cIo6bwqvYwgI3WsQ4SQhgNxAib1Xee/VzeIGaOWDhlSq0opN2isx8d7bMHvMd1c8h22J6JOZGgmyDNZRzm80zeyisR5I7zpuy17isbHWGhhXffVmaGput9kVefbjqwfOwJlpoXYx9B6TjtCpEO11QGw4qx/RzANHGqnOVPXKKaZKYKVmdVqfPDr3abMuVlXa2xlxpVXk1OcNe36wj7k4haxoPfMqnnR/6+35j0JgqAuwFFwQC53LkRRxQamG+tMQy7kk7SWZH558aynxmrLf29xZYsi30tOU8vI7jApPOBF2iepa3UeOacEem8MHFs0x1k9U+ZGZsnOrcMTIs3nayuu5ASbtNs8Wwym2TVacb9iSic+0PftIWWQ3s5LLtiDzw6YxKI8mZ6iGJqSPnq9XVVXWaKTPuHI0LXcWt80jApttiG/qrekqbuhDuCUSPHHYDcQOveZvD18q90cGgiBinq9MKHZCniLsKNLMKs0k2WyXqrraVmtQGe8FgcdspuoJ1uQAqHSAPHz8ruVUhG3Skb9JHyp3j9/ycnVU9w012jhtY9Irv7PEzgxtfW6m0OaeoM+SdI6c10QZNzJqEiJfp8EZCjTVscYqvvMvlvYHcsqmyuE8ayflGzVpj4MRt546z2oDo0jKs+eGcq8Z8IMtw6hukaGwz2RwFqVcZeuP8HK/BskfFkOsf/HJJORVWz3vjdJyhdakPDJC9l5aeMtxU2t65ElorJbnQmMOJNLerej6b1aYWgZnupbzKcMCpnvkGawc223bat6vVozJMWnuXNS2gdthCWypYdnvG9XPAbiSAQaDM6srBUm0MYKqJbLBJyRbtOdWIC/QvlWayPWVYEwD7z9WcNjjSwZKBqwxrvLcoBUH5eFQM+kYoqJcr3Z/ktZdfhjCin0MfNupB3vveBuc/SthRc3vm780IRa++4kWyjQONuZyqiSs69PWnFiwbhbdnEE9e8DsKNLqWVmCB4kD7syj0JtpuMevcq5/DC9TozWkY0mUsa9duz3XTy5/uT8300s9hHJS7oo01ZNq3hVkv6f8+/RyePfQk1632ROfhbRlxOdKl8wJNpLjNbTAbvtvTErq0h0b7HdfP4QWQevHHXnBKr6/P1BykPQ3B2UFrpzq85PeOA42wayy5CvSi6LPYsubAmg23hYN7+zm4khz6mz0I0DjLseZqebaMgYpz1iu26rOOXhLfPt5L3gZSeoTO0vmbN7BGI1ce+pseBPo28I5J7AwN5I5R7A8Gkb9Zwd/ei3fpO1CoLy/ev0veJof+pgcBNhRerPEs9EVbWxHktDS9h/d6l554Z6Xv0vcifXfJ0zRI3tmH/qqHgBt5Dj0U76SWDSevuPOqpjQiPpfcpZLH88jjdkgP/U0PAhpzhZCTPPcKmef5ZNJ1L/pIN4eXaMVY0CRJVa02doqbBgG3ip7zcSDc+qbFoe/8UYBWwPJC0iKk+FdQGnYzBjlNn62eYefUatuhb/0xwJDv3pywrRwQbTv2hTmMgxvu9IHrofHl9JIldQbfC3MYBz3Utrm+tc9h6EEfOHz3GsVRpC4+8ibMW7fJEzD8EJUONnsploWX1zXaAydOK+O65B22t7aCcy4pERTNQEr9OfUWgsrYPwlhk9mwsF1YzCX1YQSfcTojXMApklKJTb98nJ8ENrwZ9SWdh74dUY+GhAqbC0pJTCWV+aGxtxc0JpcJKA0JRivaliPlTaz2dIl9zEFSbolICEy6tFTDuVmgIyLwJ/2EW24c1BPmwF4X3gnnU8uOrWCqGuOjB2SaiDkVPLiAQQtsmE9hIIm5SGYc0zIevqWiqTQHfUEul0XffujnPPVWdLcHstffy5A/2ITAC8CnBonsKPIIySMzslluSE8d8WC3bdi2BGZAIiNyJbHxQ+BMAGJGxLRtym2D5XCa4REYx2yD2DmJHj73YDegzwQmrTXcwzup+fShb/0RwP8HZ/woncNgl5UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMTItMTBUMTg6NTE6MzErMDA6MDD8oA32AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTEyLTEwVDE4OjUxOjMxKzAwOjAwjf21SgAAAABJRU5ErkJggg==' + echo OK OK ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:14_CEST [openHABian] Restarting openHAB service to play it safe... ' 2023-08-13_11:01:14_CEST [openHABian] Restarting openHAB service to play it safe... + cond_redirect systemctl restart openhab.service + [[ -n '' ]] + echo -e '\n\033[90;01m$ systemctl restart openhab.service \033[39;49;00m' $ systemctl restart openhab.service + systemctl restart openhab.service + return 0 + echo OK OK + [[ -n 1 ]] + unset DEBIAN_FRONTEND + whiptail --title 'Operation successful!' --msgbox 'The stable release of openhab is now installed on your system.\n\nPlease test the correct behavior of your setup. You might need to adapt your configuration, if available. If you made changes to the files in '\''/var/lib/openhab'\'' they were replaced, but you can restore them from backup files next to the originals.\n\nCheck the "openHAB Release Notes" and the official announcements to learn about additons, fixes and changes.' 15 80 + '[' 0 -ne 0 ']' + true + show_main_menu + local choice + local version +++ get_git_revision +++ local branch +++ local commitDate +++ local shorthash ++++ git -C /opt/openhabian rev-parse --abbrev-ref HEAD +++ branch=main ++++ git -C /opt/openhabian log --pretty=format:%aI -n 1 +++ commitDate=2023-08-13T08:46:02+02:00 ++++ git -C /opt/openhabian log --pretty=format:%h -n 1 +++ shorthash=bc33bfe +++ echo '[main]{2023-08-13T08:46:02+02:00}(bc33bfe)' ++ whiptail --title 'openHABian Configuration Tool — [main]{2023-08-13T08:46:02+02:00}(bc33bfe)' --menu 'Setup Options' 24 118 16 --cancel-button Exit --ok-button Execute '00 | About openHABian' 'Information about the openHABian project and this tool' '' '' '01 | Select Branch' 'Select the openHABian config tool version ("branch") to run' '02 | Upgrade System' 'Update all installed software packages (incl. openHAB) to their latest version' '03 | Install openHAB' 'Install or upgrade to latest openHAB' '04 | Import config' 'Import an openHAB configuration from file or URL' '' '' '10 | Apply Improvements' 'Apply the latest improvements to the basic openHABian setup ►' '20 | Optional Components' 'Choose from a set of optional software components ►' '30 | System Settings' 'A range of system and hardware related configuration steps ►' '40 | openHAB Related' 'Switch the installed openHAB version or apply tweaks ►' '50 | Backup/Restore' 'Manage backups and restore your system ►' + choice= + RET=1 + '[' 1 -eq 1 ']' + return 255 + system_check_default_password + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 + local algo + local defaultPassword + local defaultUser + local generatedPassword + local introText + local originalPassword + local salt + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 + id -u pi + is_pi + is_pifour + [[ '' == \p\i\4 ]] + grep -q '^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$' /proc/cpuinfo + return 0 + return 0 + defaultUser=openhabian + defaultPassword=openhabian ++ grep -w openhabian /etc/shadow ++ cut -d: -f2 + originalPassword='$6$lcY0Csc7PgslXNgy$mbFm2JLHt7hfWgT7I26sJWhrG95Vk/BnR966dyu7yhJob7ei6MK37IBFrwG3LscedyNv96jYQHOWrjs3oVa/R0' ++ echo '$6$lcY0Csc7PgslXNgy$mbFm2JLHt7hfWgT7I26sJWhrG95Vk/BnR966dyu7yhJob7ei6MK37IBFrwG3LscedyNv96jYQHOWrjs3oVa/R0' ++ cut '-d$' -f2 + algo=6 + introText='The default password was detected on your system! That is a serious security concern. Bad guys or malicious programs in your subnet are able to gain root access!\n\nPlease set a strong password by typing the command '\''passwd openhabian'\''!' ++ echo '$6$lcY0Csc7PgslXNgy$mbFm2JLHt7hfWgT7I26sJWhrG95Vk/BnR966dyu7yhJob7ei6MK37IBFrwG3LscedyNv96jYQHOWrjs3oVa/R0' ++ cut '-d$' -f3 + salt=lcY0Csc7PgslXNgy + export algo defaultPassword salt ++ perl -le 'print crypt("$ENV{defaultPassword}","\$$ENV{algo}\$$ENV{salt}\$")' + generatedPassword='$6$lcY0Csc7PgslXNgy$mbFm2JLHt7hfWgT7I26sJWhrG95Vk/BnR966dyu7yhJob7ei6MK37IBFrwG3LscedyNv96jYQHOWrjs3oVa/R0' ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -n '2023-08-13_11:01:34_CEST [openHABian] Checking for default openHABian username:password combination... ' 2023-08-13_11:01:34_CEST [openHABian] Checking for default openHABian username:password combination... ++ id -u openhabian + [[ -n 1000 ]] + [[ $6$lcY0Csc7PgslXNgy$mbFm2JLHt7hfWgT7I26sJWhrG95Vk/BnR966dyu7yhJob7ei6MK37IBFrwG3LscedyNv96jYQHOWrjs3oVa/R0 == \$\6\$\l\c\Y\0\C\s\c\7\P\g\s\l\X\N\g\y\$\m\b\F\m\2\J\L\H\t\7\h\f\W\g\T\7\I\2\6\s\J\W\h\r\G\9\5\V\k\/\B\n\R\9\6\6\d\y\u\7\y\h\J\o\b\7\e\i\6\M\K\3\7\I\B\F\r\w\G\3\L\s\c\e\d\y\N\v\9\6\j\Y\Q\H\O\W\r\j\s\3\o\V\a\/\R\0 ]] + [[ -n 1 ]] + whiptail --title 'Default password detected' --msgbox 'The default password was detected on your system! That is a serious security concern. Bad guys or malicious programs in your subnet are able to gain root access!\n\nPlease set a strong password by typing the command '\''passwd openhabian'\''!' 11 80 + echo FAILED FAILED ++ timestamp ++ printf '%(%F_%T_%Z)T\n' -1 + echo -e '2023-08-13_11:01:36_CEST [openHABian] We hope you got what you came for! See you again soon ;)' 2023-08-13_11:01:36_CEST [openHABian] We hope you got what you came for! See you again soon ;) + cd /home/openhabian