(BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AVAILABLE_OPTIONS='> name:AVAILABLE_OPTIONS) op: assign_op.Equal rhs: { (SQ <'\n'> <' - start/stop/restart/status (all services, known to DietPi)\n'> <' - start/stop/restart servicename (single service, SystemD)\n'> <' - systemd_controlled/dietpi_controlled (all services, known to DietPi)\n'> <' - enable/disable servicename (single service, SystemD)\n'> <' - enable/disable all (all services, known to DietPi)\n'> <' - mask/unmask servicename (single service, SystemD)'> ) } spids: [58] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT_MODE='> name:INPUT_MODE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [75] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT_S2='> name:INPUT_S2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [81] ) ] redirects: [] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Services>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aSERVICE_NAME='> name:aSERVICE_NAME) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <cron>)} {(SQ <transmission-daemon>)} {(SQ <proftpd>)} {(SQ <smbd>)} {(SQ <nmbd>)} {(SQ <nfs-kernel-server>)} {(SQ <vsftpd>)} {(SQ <apache2>)} {(SQ <nginx>)} {(SQ <lighttpd>)} {(SQ <php5-fpm>)} {(SQ <php7.0-fpm>)} {(SQ <mysql>)} {(SQ <mpd>)} {(SQ <ympd>)} {(SQ <minidlna>)} {(SQ <noip2>)} {(SQ <grasshopper>)} {(SQ <dnsmasq>)} {(SQ <pihole-FTL>)} {(SQ <subsonic>)} {(SQ <webiopi>)} {(SQ <haproxy>)} {(SQ <fail2ban>)} {(SQ <openvpn>)} {(SQ <isc-dhcp-server>)} {(SQ <hostapd>)} {(SQ <avahi-daemon>)} {(SQ <shairport-sync>)} {(SQ <squeezelite>)} {(SQ <mopidy>)} {(SQ <redis-server>)} {(SQ <emonhub>)} {(SQ <netdata>)} {(SQ <mumble-server>)} {(SQ <emby-server>)} {(SQ <plexmediaserver>)} {(SQ <cuberite>)} {(SQ <supervisor>)} {(SQ <gogs>)} {(SQ <qbittorrent>)} {(SQ <syncthing>)} {(SQ <syncthing-inotify>)} {(SQ <rtorrent>)} {(SQ <urbackupsrv>)} {(SQ <sickrage>)} {(SQ <roonbridge>)} {(SQ <mosquitto>)} {(SQ <networkaudiod>)} {(SQ <node-red>)} {(SQ <tomcat8>)} {(SQ <rpimonitor>)} {(SQ <openmediavault-engined>)} {(SQ <blynkserver>)} {(SQ <aria2>)} {(SQ <yacy>)} {(SQ <tonido>)} {(SQ <icecast2>)} {(SQ <darkice>)} {(SQ <motioneye>)} {(SQ <cups>)} {(SQ <cloudprintd>)} {(SQ <virtualhere>)} {(SQ <sabnzbd>)} {(SQ <spotify-connect-web>)} {(SQ <couchpotato>)} {(SQ <koel>)} {(SQ <sonarr>)} {(SQ <radarr>)} {(SQ <plexpy>)} {(SQ <jackett>)} {(SQ <nzbget>)} {(SQ <octoprint>)} {(SQ <roonserver>)} {(SQ <htpc-manager>)} {(SQ <home-assistant>)} {(SQ <openbazaar>)} {(SQ <docker>)} {(SQ <bdd>)} {(SQ <minio>)} {(SQ <gmrender>)} {(SQ <nukkit>)} {(SQ <gitea>)} {(SQ <pi-spc>)} {(SQ <raspotify>)} {(SQ <voice-recognizer>)} {(SQ <alsa-init>)} ] ) } spids: [113] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_INCLUDE_SERVICES='> name: FP_INCLUDE_SERVICES ) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-services_include'>)} spids: [572] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_SERVICES))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } spids: [606] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_NAME['> name: aSERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName line))} spids: [616] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName FP_INCLUDE_SERVICES))} ) ] ) ] spids: [578 591] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aSERVICE_AVAILABLE='> name:aSERVICE_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [645] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_AVAILABLE['> name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [677] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShFunction name: Populate_Available_Array body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<dpkg>} {<--get-selections>}) (command.Simple words: [{<awk>} {(SQ <'{print $1}'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/systemd/system/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <.service> } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-f>} {<'/lib/systemd/system/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <.service> } {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_AVAILABLE['> name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [796] ) ] redirects: [] ) ] spids: [756 792] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/init.d/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_AVAILABLE['> name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [826] ) ] redirects: [] ) ] spids: [805 822] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<grep>} {<-ci>} {<-m1>} { (DQ <'^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_AVAILABLE['> name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [874] ) ] redirects: [] ) ] spids: [839 870] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Print_Status body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Number 3)} right: {<Id.Lit_Digits 0>} ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Number 3)} right: {<Id.Lit_Digits 5>} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ ($ Id.VSub_Number 1) <' : '> ($ Id.VSub_Number 2))}) ] spids: [926 948] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_Number 1) <' : '> ($ Id.VSub_Number 2))}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Set_Running_State body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'target_state='> (DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<0>} spids: [1028] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDIETPISERVICE_FP='> name: aDIETPISERVICE_FP ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [1032] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDIETPISERVICE_NAME='> name: aDIETPISERVICE_NAME ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [1037] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <BruteFIR>)} spids: [1042] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/brutefir.service'>)} spids: [1051] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <JackD>)} spids: [1068] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jackd.service'>)} spids: [1077] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <Jconvolver>)} spids: [1094] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jconvolver.service'>)} spids: [1103] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_FP> var_name: aDIETPISERVICE_FP bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Simple words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_FP> var_name: aDIETPISERVICE_FP bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_DollarName target_state)} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName target_state)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_QMark '?')} ) ] spids: [1150 1166] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<unset>} {<aDIETPISERVICE_NAME>}) (C {<unset>} {<aDIETPISERVICE_FP>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aALLO_EXCLUDED_SERVICES_DURING_STOP='> name: aALLO_EXCLUDED_SERVICES_DURING_STOP ) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <apache2>)} {(SQ <nginx>)} {(SQ <lighttpd>)} {(SQ <php5-fpm>)} {(SQ <php7.0-fpm>)} {(SQ <mysql>)} {(SQ <avahi-daemon>)} ] ) } spids: [1241] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-d>} {<'/var/www/allo'>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName target_state))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike j) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike j) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aALLO_EXCLUDED_SERVICES_DURING_STOP> var_name: aALLO_EXCLUDED_SERVICES_DURING_STOP prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike j) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aALLO_EXCLUDED_SERVICES_DURING_STOP > var_name: aALLO_EXCLUDED_SERVICES_DURING_STOP bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName j)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aSERVICE_AVAILABLE['> name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1420] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1389 1416] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [1329 1356] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_AVAILABLE> var_name: aSERVICE_AVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName target_state)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName target_state)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_QMark '?')} ) ] spids: [1452 1471] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<unset>} {<aALLO_EXCLUDED_SERVICES_DURING_STOP>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<0>} spids: [1552] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDIETPISERVICE_FP='> name: aDIETPISERVICE_FP ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [1556] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDIETPISERVICE_NAME='> name: aDIETPISERVICE_NAME ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [1561] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <RaspimJpeg>)} spids: [1566] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/raspimjpeg.service'>)} spids: [1575] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <Deluge>)} spids: [1592] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/deluge.service'>)} spids: [1601] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_NAME['> name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'SqueezeBox Server'>)} spids: [1618] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDIETPISERVICE_FP['> name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/squeezeboxserver.service'>)} spids: [1627] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike index) ) redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_FP> var_name: aDIETPISERVICE_FP bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Simple words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_FP> var_name: aDIETPISERVICE_FP bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_DollarName target_state)} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName target_state)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDIETPISERVICE_NAME> var_name: aDIETPISERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_QMark '?')} ) ] spids: [1674 1690] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<unset>} {<aDIETPISERVICE_NAME>}) (C {<unset>} {<aDIETPISERVICE_FP>}) (C {<echo>} {<-e>} {(DQ )}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName target_state))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName target_state))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-process_tool'>} {<1>})] spids: [1774 1808] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.dietpi-services_installed'>)} spids: [1826] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Services>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))}) (C {<Populate_Available_Array>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(SQ <dietpi_controlled>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(SQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYSTEMD_CMD='> name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <disable>)} spids: [1915] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYSTEMD_CMD='> name: SYSTEMD_CMD ) op: assign_op.Equal rhs: {(SQ <enable>)} spids: [1943] ) ] redirects: [] ) ] spids: [1922 1939] ) ] else_action: [] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_AVAILABLE> var_name: aSERVICE_AVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName SYSTEMD_CMD)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName INPUT_MODE)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) } {($ Id.VSub_QMark '?')} ) ] spids: [1987 2006] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.Simple words: [{<systemctl>} {<daemon-reload>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [1877 1911] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYSTEMD_CMD='> name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <mask>)} spids: [2168] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYSTEMD_CMD='> name: SYSTEMD_CMD ) op: assign_op.Equal rhs: {(SQ <unmask>)} spids: [2212] ) ] redirects: [] ) ] spids: [2174 2208] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_S2))} {<Id.Lit_Equals '='>} {(SQ <all>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<stop>})] spids: [2248 2282] ) ] else_action: [] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_AVAILABLE> var_name: aSERVICE_AVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName INPUT_MODE) <' '> ($ Id.VSub_DollarName INPUT_S2) <': '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<systemctl>} {($ Id.VSub_DollarName SYSTEMD_CMD)} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2333 2348] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [2227 2244] ) ] else_action: [ (C {<systemctl>} {<stop>} {($ Id.VSub_DollarName INPUT_S2)}) (C {<systemctl>} {($ Id.VSub_DollarName SYSTEMD_CMD)} {($ Id.VSub_DollarName INPUT_S2)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName INPUT_MODE) <' '> ($ Id.VSub_DollarName INPUT_S2)) } ) ] spids: [2416 2430] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_DollarName INPUT_MODE) <' '> ($ Id.VSub_DollarName INPUT_S2))} ) ] redirects: [] ) ] redirects: [] ) (command.Simple words: [{<systemctl>} {<daemon-reload>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<start>})] spids: [2480 2514] ) ] else_action: [] redirects: [] ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2092 2160] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <status>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_AVAILABLE> var_name: aSERVICE_AVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATUS='> name:STATUS) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <t> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<systemctl>} {<status>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) (C {<grep>} {<-m1>} {(SQ <Active>)}) (C {<cut>} {<-c12->}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [2630] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName STATUS))} right: {<Id.Lit_Other .> <Id.Lit_Other '*'> (SQ <failed>) <Id.Lit_Other .> <Id.Lit_Other '*'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_DollarName STATUS))}) (C {<systemctl>} {<status>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aSERVICE_NAME> var_name: aSERVICE_NAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<-l>} {<--no-pager>} ) ] spids: [2672 2693] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName STATUS))} right: {<Id.Lit_Other .> <Id.Lit_Other '*'> (SQ <inactive>) <Id.Lit_Other .> <Id.Lit_Other '*'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ ($ Id.VSub_DollarName STATUS))}) ] spids: [2725 2746] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ ($ Id.VSub_DollarName STATUS))}) ] redirects: [] ) ] spids: [2607 2626] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2553 2570] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName INPUT_S2))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName INPUT_MODE)} {($ Id.VSub_DollarName INPUT_S2)} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName INPUT_MODE) <' '> ($ Id.VSub_DollarName INPUT_S2) ) } ) ] spids: [2890 2904] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} { (DQ ($ Id.VSub_DollarName INPUT_MODE) <' '> ($ Id.VSub_DollarName INPUT_S2)) } ) ] redirects: [] ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2862 2875] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => false,'>)} {<'/var/www/owncloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => false,'>)} {<'/var/www/nextcloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>}) ] ) ] spids: [2961 2994] ) ] else_action: [] redirects: [] ) (C {<Set_Running_State>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName INPUT_MODE))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => true,'>)} {<'/var/www/owncloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => true,'>)} {<'/var/www/nextcloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>}) ] ) ] spids: [3069 3102] ) ] else_action: [] redirects: [] ) ] redirects: [] ) ] spids: [2803 2854] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Invalid command'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'nAvailable commands:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName AVAILABLE_OPTIONS) <Id.Lit_BadBackslash '\\'> <n> ) } ) ] redirects: [] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) (C {<unset>} {<aSERVICE_NAME>}) (C {<unset>} {<aSERVICE_AVAILABLE>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] redirects: [] right: <Id.Lit_RBrace '}'> )