(BraceGroup children: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[75])] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_Number '$1')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [102] ) ] ) ] spids: [79 99] ) ] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Cloudshell>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_CLOUDSHELL_VERSION) op: assign_op.Equal rhs: {<9>} spids: [139] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/dietpi-cloudshell'>)} spids: [148] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROGRAM_NAME) op: assign_op.Equal rhs: {(DQ <DietPi-Cloudshell>)} spids: [155] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_ACTIVE) op: assign_op.Equal rhs: {<0>} spids: [162] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED) op: assign_op.Equal rhs: {<0>} spids: [166] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_TIME_HOUR_START) op: assign_op.Equal rhs: {<0>} spids: [170] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_TIME_HOUR_END) op: assign_op.Equal rhs: {<0>} spids: [174] ) ] ) (command.ShFunction name: RUN_BLANK_SCREEN_AT_SPECIFIC_TIME body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'current_hour='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <-H>}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: {($ Id.VSub_DollarName '$BLANK_SCREEN_ACTIVE')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (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_DollarName '$BLANK_SCREEN_TIME_HOUR_START')} right: {($ Id.VSub_DollarName '$current_hour')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<clear>}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nScreen will be powered down in under 1 minute'> <Id.Lit_BadBackslash '\\'> <n> ) } ) (command.Simple words: [{<setterm>} {<--blank>} {<1>} {<--powersave>} {<on>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_ACTIVE) op: assign_op.Equal rhs: {<1>} spids: [275] ) ] ) ] spids: [223 237] ) ] ) ] spids: [207 219] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_END')} right: {($ Id.VSub_DollarName '$current_hour')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<setterm>} {<--blank>} {<poke>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] do_fork: T ) (command.Simple words: [{<setterm>} {<--reset>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] do_fork: T ) (command.Simple words: [{<setterm>} {<--blank>} {<0>} {<--powersave>} {<off>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_ACTIVE) op: assign_op.Equal rhs: {<0>} spids: [339] ) ] ) ] spids: [287 301] ) ] ) ] ) ) (command.ShFunction name: BC_ADD_LEADING_ZERO body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> ($ Id.VSub_Number '$1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub token: <Id.VSub_Name return_value> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) ) } {<Id.Lit_Equals '='>} {(DQ <.>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: {(DQ <0> ($ Id.VSub_DollarName '$return_value'))} spids: [408] ) ] ) ] spids: [382 405] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub token: <Id.VSub_Name return_value> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) ) } {<Id.Lit_Equals '='>} {(DQ <-.>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) (C {<sed>} {(SQ <'s/^-./-0./'>)}) ] negated: F ) ) } spids: [446] ) ] ) ] spids: [420 443] ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) ] ) ) (command.ShFunction name: BYTE_PRINT_CONVERSION body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'decimal_count='> <1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number '$1')} right: {<Id.Lit_Digits 1048576>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' KB'> ) } spids: [536] ) ] ) ] spids: [515 529] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number '$1')} right: {<Id.Lit_Digits 1073741824>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' / 1024 / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' MB'> ) } spids: [586] ) ] ) ] spids: [565 579] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' / 1024 / 1024 / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' GB'> ) } spids: [622] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BC_ADD_LEADING_ZERO>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) ) } spids: [655] ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) ] ) ) (command.ShFunction name: BIT_PRINT_CONVERSION body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'decimal_count='> <1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number '$1')} right: {<Id.Lit_Digits 1000000>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' * 8 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' Kbit'> ) } spids: [740] ) ] ) ] spids: [719 733] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number '$1')} right: {<Id.Lit_Digits 1000000000>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' * 8 / 1000 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' Mbit'> ) } spids: [789] ) ] ) ] spids: [768 782] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName '$decimal_count') <'; '> ($ Id.VSub_Number '$1') <' * 8 / 1000 / 1000 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) <' Gbit'> ) } spids: [824] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:return_value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BC_ADD_LEADING_ZERO>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) ) } spids: [856] ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$return_value'))}) ] ) ) (command.ShFunction name: Enable_Term_Options body: (BraceGroup children: [ (C {<setfont>} {<'/usr/share/consolefonts/Uni3-TerminusBold32x16'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<tput>} {<lines>}) ) } right: {<Id.Lit_Digits 10>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<setfont>} {<'/usr/share/consolefonts/Uni3-TerminusBold24x12.psf'>})] spids: [904 922] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_RESET) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[0m'>)} spids: [952] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_REVERSE) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[7m'>)} spids: [959] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_BOLD) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[1m'>)} spids: [971] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aCOLOUR) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Id.Lit_BadBackslash '\\'> <'e[39m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[31m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[32m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[33m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[34m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[35m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[36m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[93m'>)} ] ) } spids: [1015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USER_COLOUR_INDEX) op: assign_op.Equal rhs: {<3>} spids: [1075] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: {<0>} spids: [1080] ) ] ) (command.ShFunction name: Percent_To_Graph body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<echo>} {($ Id.VSub_Number '$1')}) (C {<cut>} {<-d.>} {<-f1>})] negated: F ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 100>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:input_value) op: assign_op.Equal rhs: {<100>} spids: [1144] ) ] ) ] spids: [1127 1141] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:input_value) op: assign_op.Equal rhs: {<0>} spids: [1165] ) ] ) ] spids: [1148 1162] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 95>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) <------WARNING-----> ($ Id.VSub_DollarName '$C_RESET') <']'> ) } spids: [1198] ) ] ) ] spids: [1181 1195] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 90>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) <-----------------> ($ Id.VSub_DollarName '$C_RESET') <'-]'> ) } spids: [1233] ) ] ) ] spids: [1216 1230] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 88>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) <----------------> ($ Id.VSub_DollarName '$C_RESET') <'--]'> ) } spids: [1268] ) ] ) ] spids: [1251 1265] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 82>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) <---------------> ($ Id.VSub_DollarName '$C_RESET') <'---]'> ) } spids: [1303] ) ] ) ] spids: [1286 1300] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 76>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <--------------> ($ Id.VSub_DollarName '$C_RESET') <'----]'> ) } spids: [1338] ) ] ) ] spids: [1321 1335] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 70>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <-------------> ($ Id.VSub_DollarName '$C_RESET') <'-----]'> ) } spids: [1373] ) ] ) ] spids: [1356 1370] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 64>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <------------> ($ Id.VSub_DollarName '$C_RESET') <'------]'> ) } spids: [1408] ) ] ) ] spids: [1391 1405] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 56>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <-----------> ($ Id.VSub_DollarName '$C_RESET') <'-------]'> ) } spids: [1443] ) ] ) ] spids: [1426 1440] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 50>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <----------> ($ Id.VSub_DollarName '$C_RESET') <'--------]'> ) } spids: [1478] ) ] ) ] spids: [1461 1475] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 44>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) <---------> ($ Id.VSub_DollarName '$C_RESET') <'---------]'> ) } spids: [1513] ) ] ) ] spids: [1496 1510] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 38>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <--------> ($ Id.VSub_DollarName '$C_RESET') <'----------]'> ) } spids: [1548] ) ] ) ] spids: [1531 1545] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 32>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <-------> ($ Id.VSub_DollarName '$C_RESET') <'-----------]'> ) } spids: [1583] ) ] ) ] spids: [1566 1580] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 26>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <------> ($ Id.VSub_DollarName '$C_RESET') <'------------]'> ) } spids: [1618] ) ] ) ] spids: [1601 1615] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 20>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <-----> ($ Id.VSub_DollarName '$C_RESET') <'-------------]'> ) } spids: [1653] ) ] ) ] spids: [1636 1650] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 15>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <----> ($ Id.VSub_DollarName '$C_RESET') <'--------------]'> ) } spids: [1688] ) ] ) ] spids: [1671 1685] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 10>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <---> ($ Id.VSub_DollarName '$C_RESET') <'---------------]'> ) } spids: [1723] ) ] ) ] spids: [1706 1720] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$input_value')} right: {<Id.Lit_Digits 5>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <--> ($ Id.VSub_DollarName '$C_RESET') <'----------------]'> ) } spids: [1758] ) ] ) ] spids: [1741 1755] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$input_value') <'% ['> ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <-> ($ Id.VSub_DollarName '$C_RESET') <'-----------------]'> ) } spids: [1779] ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_CONVERSION_VALUE) op: assign_op.Equal rhs: {<0>} spids: [1817] ) ] ) (command.ShFunction name: Obtain_Temperature_Conversion body: (BraceGroup 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: {($ Id.VSub_DollarName '$TEMPERATURE_OUTPUT_TYPE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_CONVERSION_VALUE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<awk>} { (DQ <'BEGIN {printf '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <'%.0f'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <','> ($ Id.VSub_DollarName '$TEMPERATURE_CONVERSION_VALUE') <' * 1.8 + 32'> ) <Id.Lit_RBrace '}'> } ) ) } spids: [1845] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_CONVERSION_VALUE) op: assign_op.PlusEqual rhs: {(DQ <'\'f'>)} spids: [1862] ) ] ) ] spids: [1828 1842] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_CONVERSION_VALUE) op: assign_op.PlusEqual rhs: {(DQ <'\'c'>)} spids: [1871] ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DATE_TIME) op: assign_op.Equal rhs: {<0>} spids: [1885] ) ] ) (command.ShFunction name: Obtain_DATE_TIME body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DATE_TIME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%a %x - %R'>)}) ) } spids: [1896] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPTIME) op: assign_op.Equal rhs: {<0>} spids: [1912] ) ] ) (command.ShFunction name: Obtain_UPTIME body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'fSeconds='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<cat>} {<'/proc/uptime'>}) (C {<awk>} {(SQ <'{print $1}'>)})] negated: F ) ) } ) (C {<local>} {<Id.Lit_VarLike 'seconds='> (braced_var_sub token: <Id.VSub_Name fSeconds> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'minutes='> <0>}) (C {<local>} {<Id.Lit_VarLike 'hours='> <0>}) (C {<local>} {<Id.Lit_VarLike 'days='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$seconds')} right: {<Id.Lit_Digits 60>} ) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike minutes> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:seconds) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$seconds')} right: {<Id.Lit_Digits 60>} ) ) } spids: [1996] ) ] ) ] ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$minutes')} right: {<Id.Lit_Digits 60>} ) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike hours> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:minutes) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$minutes')} right: {<Id.Lit_Digits 60>} ) ) } spids: [2037] ) ] ) ] ) ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$hours')} right: {<Id.Lit_Digits 24>} ) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike days> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hours) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$hours')} right: {<Id.Lit_Digits 24>} ) ) } spids: [2078] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPTIME) op: assign_op.Equal rhs: { (DQ <'Uptime: '> ($ Id.VSub_DollarName '$days') <' Day, '> ($ Id.VSub_DollarName '$hours') <' Hour'> ) } spids: [2095] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOV) op: assign_op.Equal rhs: {<0>} spids: [2114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_TEMP) op: assign_op.Equal rhs: {<0>} spids: [2118] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_CPUTEMP) op: assign_op.Equal rhs: {<0>} spids: [2122] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_FREQ_1) op: assign_op.Equal rhs: {<0>} spids: [2126] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_FREQ_2) op: assign_op.Equal rhs: {<0>} spids: [2130] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_USAGE) op: assign_op.Equal rhs: {<0>} spids: [2134] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_TOTALPROCESSES) op: assign_op.Equal rhs: {<0>} spids: [2138] ) ] ) (command.ShFunction name: Obtain_CPU body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_TOTALPROCESSES) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ps>} {<--ppid>} {<2>} {<-p>} {<2>} {<--deselect>}) (C {<wc>} {<-l>}) ] negated: F ) ) } right: {<Id.Lit_Digits 2>} ) ) } spids: [2149] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_GOV) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'>}) ) } spids: [2183] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_TEMP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<G_OBTAIN_CPU_TEMP>}) ) } spids: [2191] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$CPU_TEMP')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$CPU_TEMP')} right: {<Id.Lit_Digits 65>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_CPUTEMP) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) } spids: [2244] ) ] ) ] spids: [2226 2240] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$CPU_TEMP')} right: {<Id.Lit_Digits 50>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_CPUTEMP) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) ) } spids: [2272] ) ] ) ] spids: [2254 2268] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$CPU_TEMP')} right: {<Id.Lit_Digits 35>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_CPUTEMP) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) } spids: [2300] ) ] ) ] spids: [2282 2296] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C_CPUTEMP) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) ) } spids: [2314] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_CONVERSION_VALUE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$CPU_TEMP')} spids: [2332] ) ] ) (C {<Obtain_Temperature_Conversion>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_TEMP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$TEMPERATURE_CONVERSION_VALUE')} spids: [2339] ) ] ) ] spids: [2198 2218] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_FREQ_1) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq'>} ) ) } right: {<Id.Lit_Digits 1000>} ) ) } spids: [2348] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_FREQ_2) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [2365] ) ] ) (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_DollarName '$G_HW_MODEL')} right: {<Id.Lit_Digits 11>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_FREQ_2) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} { < '/sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq' > } ) ) } right: {<Id.Lit_Digits 1000>} ) ) } spids: [2394] ) ] ) ] spids: [2376 2390] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_USAGE) op: assign_op.Equal rhs: {<0>} spids: [2416] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.cpu_usage'>)} spids: [2420] ) ] ) (command.Pipeline children: [ (C {<ps>} {<-axo>} {<Id.Lit_Other '%'> <cpu>}) (C {<sed>} {(SQ <1d>)}) (command.Simple words: [{<sed>} {(SQ <'s/ //'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))} ) ] do_fork: T ) ] negated: F ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_USAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale=1;'> ($ Id.VSub_DollarName '$CPU_USAGE') <' + '> ($ Id.VSub_DollarName '$line') ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) } spids: [2474] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$FP_TEMP')} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_USAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale=0;'> ($ Id.VSub_DollarName '$CPU_USAGE') <' / '> ($ Id.VSub_DollarName '$G_HW_CPU_CORES') ) } ) (C {<bc>} {<-l>}) ] negated: F ) ) } spids: [2508] ) ] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName '$CPU_USAGE')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CPU_USAGE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$C_PERCENT_GRAPH')} spids: [2551] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAX_STORAGE) op: assign_op.Equal rhs: {<6>} spids: [2568] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_TOTAL) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2572] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_USED) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2577] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_FREE) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2582] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_PERCENT) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2587] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_PATH) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2592] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STORAGE_NAME) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [2597] ) ] ) (command.ShFunction name: Init_STORAGE body: (BraceGroup children: [ (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: {($ Id.VSub_DollarName '$MAX_STORAGE')} ) 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 name: STORAGE_TOTAL index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2632] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_USED index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2642] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_FREE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2652] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PERCENT index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <' Not installed'>)} spids: [2662] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_NAME index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<0>} spids: [2672] ) ] ) (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_DollarName '$i')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PATH index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'/'>)} spids: [2703] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_NAME index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'Flash/RootFS Storage: '>)} spids: [2713] ) ] ) ] spids: [2685 2699] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PATH index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(DQ <'/mnt/usb_'> ($ Id.VSub_DollarName '$i'))} spids: [2728] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_NAME index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(DQ <'Storage '> ($ Id.VSub_DollarName '$i') <': '>)} spids: [2739] ) ] ) ] ) ] ) ) ] ) ) (command.ShFunction name: Destroy_STORAGE body: (BraceGroup children: [ (C {<unset>} {<STORAGE_TOTAL>}) (C {<unset>} {<STORAGE_USED>}) (C {<unset>} {<STORAGE_FREE>}) (C {<unset>} {<STORAGE_PERCENT>}) (C {<unset>} {<STORAGE_PATH>}) (C {<unset>} {<STORAGE_NAME>}) ] ) ) (command.ShFunction name: Obtain_STORAGE body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'index_start='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'index_end='> ($ Id.VSub_Number '$2')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.df'>)} spids: [2830] ) ] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}) (C {<local>} {<Id.Lit_VarLike 'df_failed='> <0>}) (command.Sentence child: (command.Simple words: [{<df>} {<-Ph>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FP_TEMP')} ) ] do_fork: T ) terminator: <Id.Op_Amp _> ) (C {<local>} {<Id.Lit_VarLike 'pid='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {($ Id.VSub_Bang '$!')}) ) } ) (C {<local>} {<Id.Lit_VarLike 'max_seconds='> <4>}) (C {<local>} {<Id.Lit_VarLike 'current_seconds='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ps>} {<aux>}) (C {<awk>} {(SQ <'{print $2}'>)}) (C {<grep>} {<-ci>} {<-m1>} {(DQ ($ Id.VSub_DollarName '$pid') <Id.Lit_Dollar '$'>)} ) ] negated: F ) ) } ) ] ) 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_GreatEqual left: {($ Id.VSub_DollarName '$current_seconds')} right: {($ Id.VSub_DollarName '$max_seconds')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ <'DF failed, unable to obtain drive data'>)} ) (C {<sleep>} {<2>}) (C {<kill>} {($ Id.VSub_DollarName '$pid')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:df_failed) op: assign_op.Equal rhs: {<1>} spids: [2982] ) ] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>}) ) <' | df failed to respond'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [2938 2952] ) ] else_action: [ (C {<sleep>} {<1>}) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike current_seconds> ) ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child:{($ Id.VSub_DollarName '$df_failed')}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$index_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$index_end')} ) 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 name: STORAGE_PERCENT index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } spids: [3070] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_FREE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'DF failed'>)} spids: [3085] ) ] ) ] ) ) ] spids: [3033 3043] ) ] else_action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$index_start')} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$index_end')} ) 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: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-ci>} {<-m1>} { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } ) ] negated: F ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_TOTAL index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F ) ) } spids: [3163] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_TOTAL index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3199] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_USED index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F ) ) } spids: [3209] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_USED index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3245] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_FREE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F ) ) } spids: [3255] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_FREE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3291] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PERCENT index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $5}'>)}) (C {<sed>} {(SQ <'s/%//g'>)}) ] negated: F ) ) } spids: [3301] ) ] ) (C {<Percent_To_Graph>} { (braced_var_sub token: <Id.VSub_Name STORAGE_PERCENT> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PERCENT index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$C_PERCENT_GRAPH')} spids: [3356] ) ] ) (command.Simple words: [ {<echo>} {<-e>} {(DQ <'Results success:'> <Id.Lit_BadBackslash '\\'> <n>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} {(DQ <' - Index = '> ($ Id.VSub_DollarName '$i'))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Path = '> (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Total = '> (braced_var_sub token: <Id.VSub_Name STORAGE_TOTAL> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) ] spids: [3127 3159] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PERCENT index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } spids: [3441] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_FREE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <'Mount not active'>)} spids: [3456] ) ] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>}) ) <' | Mount not found:'> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <' - Index = '> ($ Id.VSub_DollarName '$i'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Path = '> (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] do_fork: T ) ] ) ] ) ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_VERSION_CURRENT) op: assign_op.Equal rhs: {<0>} spids: [3570] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_UPDATE_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [3574] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_WEBSITE) op: assign_op.Equal rhs: {(SQ <dietpi.com>)} spids: [3578] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_TWITTER) op: assign_op.Equal rhs: {(DQ <'@dietpi_'>)} spids: [3584] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_HW_DESCRIPTION) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [3590] ) ] ) (command.ShFunction name: Obtain_DIETPIINFO body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_VERSION_CURRENT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>}) ) <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>}) ) ($ Id.VSub_DollarName '$C_RESET') ) } spids: [3607] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_HW_DESCRIPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.hw_model'>}) ) } spids: [3643] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_UPDATE_AVAILABLE) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [3660] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/DietPi/dietpi/.update_available'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_VERSION_CURRENT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>}) ) <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>}) ) ($ Id.VSub_DollarName '$C_RESET') ) } spids: [3685] ) ] ) (C {<local>} {<Id.Lit_VarLike 'update_version='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/DietPi/dietpi/.update_available'>}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$update_version'))} {<Id.Lit_Equals '='>} {(SQ <-1>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_UPDATE_AVAILABLE) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) <'New Image'> ($ Id.VSub_DollarName '$C_RESET') ) } spids: [3748] ) ] ) ] spids: [3727 3744] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIETPI_UPDATE_AVAILABLE) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) ) ($ Id.VSub_DollarName '$update_version') ($ Id.VSub_DollarName '$C_RESET') ) } spids: [3766] ) ] ) ] ) ] spids: [3666 3677] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_ADAPTER) op: assign_op.Equal rhs: {(SQ <eth0>)} spids: [3796] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_IP_INT) op: assign_op.Equal rhs: {<0>} spids: [3802] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_MAC_ADDRESS) op: assign_op.Equal rhs: {<0>} spids: [3806] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_SIGNAL_STRENGTH) op: assign_op.Equal rhs: {<0>} spids: [3810] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_DUPLEXSPEED) op: assign_op.Equal rhs: {<0>} spids: [3814] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_HOSTNAME) op: assign_op.Equal rhs: {<0>} spids: [3818] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_MODE) op: assign_op.Equal rhs: {<0>} spids: [3822] ) ] ) (command.ShFunction name: Obtain_NETWORK_DETAILS body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.ifconfig'>)} spids: [3836] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_HOSTNAME) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<hostname>}))} spids: [3847] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_ADAPTER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<3p>} {<'/DietPi/dietpi/.network'>}) ) } spids: [3858] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/network/interfaces'>}) (C {<grep>} {<-ci>} {<-m1>} { (DQ <'iface '> ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER') <' inet dhcp'> ) } ) ] negated: F ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_MODE) op: assign_op.Equal rhs: {(DQ <Dhcp>)} spids: [3906] ) ] ) ] spids: [3875 3903] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_MODE) op: assign_op.Equal rhs: {(DQ <Static>)} spids: [3915] ) ] ) ] ) (command.Simple words: [{<ifconfig>} {($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FP_TEMP')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_IP_INT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}) (C {<grep>} {<-m1>} {(SQ <'inet '>)}) (C {<cut>} {<-d> <Id.Lit_Colon ':'>} {<-f2>}) (C {<awk>} {(SQ <'{ print $1}'>)}) ] negated: F ) ) } spids: [3943] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_MAC_ADDRESS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/class/net/'> ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER') <'/address'> } ) ) } spids: [3979] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER')} ) (C {<grep>} {<-ci>} {<-m1>} {(SQ <wlan>)}) ] negated: F ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_SIGNAL_STRENGTH) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<iwconfig>} {($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER')} ) (C {<grep>} {<-m1>} {(SQ <'Signal level='>)}) (C {<awk>} {(SQ <'{ print $4 }'>)}) (C {<sed>} {(SQ <'s/level=//g'>)}) (C {<cut>} {<-f1>} {<-d>} {(DQ <'/'>)}) ] negated: F ) ) <'%'> ) } spids: [4031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_DUPLEXSPEED) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<iwconfig>} {($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER')} ) (C {<grep>} {<-m1>} {(SQ <'Bit Rate:'>)}) (C {<awk>} {(SQ <'{ print $2 }'>)}) (C {<sed>} {(SQ <'s/Rate://g'>)}) ] negated: F ) ) <Mbit> ) } spids: [4080] ) ] ) ] spids: [3998 4028] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_DUPLEXSPEED) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/class/net/'> ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER') <'/speed'> } ) ) <' Mbit'> ) } spids: [4124] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_DETAILS_SIGNAL_STRENGTH) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [4141] ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_TOTAL_CURRENT_SENT) op: assign_op.Equal rhs: {<0>} spids: [4159] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_TOTAL_CURRENT_RECIEVED) op: assign_op.Equal rhs: {<0>} spids: [4163] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_SENT) op: assign_op.Equal rhs: {<0>} spids: [4168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_RECIEVED) op: assign_op.Equal rhs: {<0>} spids: [4172] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_INIT) op: assign_op.Equal rhs: {<0>} spids: [4176] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE) op: assign_op.Equal rhs: {<0>} spids: [4180] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_CURRENT_SENT) op: assign_op.Equal rhs: {<0>} spids: [4185] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_CURRENT_RECIEVED) op: assign_op.Equal rhs: {<0>} spids: [4189] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_PREVIOUS_SENT) op: assign_op.Equal rhs: {<0>} spids: [4193] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_PREVIOUS_RECIEVED) op: assign_op.Equal rhs: {<0>} spids: [4197] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_OF_MONTH) op: assign_op.Equal rhs: {<-1>} spids: [4201] ) ] ) (command.ShFunction name: Obtain_NETWORK_USAGE body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'run_update='> <1>}) (C {<local>} {<Id.Lit_VarLike 'mtu_size='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER'))}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$mtu_size')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4277] ) ] ) ] spids: [4252 4274] ) ] ) (C {<local>} {<Id.Lit_VarLike 'network_usage_current_recieved='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER'))}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$network_usage_current_recieved')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4338] ) ] ) ] spids: [4313 4335] ) ] ) (C {<local>} {<Id.Lit_VarLike 'network_usage_current_sent='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER'))}) (C {<awk>} {(SQ <'{print $8}'>)}) ] negated: F ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$network_usage_current_sent')} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4399] ) ] ) ] spids: [4374 4396] ) ] ) (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_DollarName '$run_update')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'total_previous_sent='> ($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_SENT') } ) (C {<local>} {<Id.Lit_VarLike 'total_previous_recieved='> ($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_RECIEVED') } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_TOTAL_CURRENT_RECIEVED) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$network_usage_current_recieved')} right: {($ Id.VSub_DollarName '$mtu_size')} ) ) } spids: [4447] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_TOTAL_CURRENT_SENT) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$network_usage_current_sent')} right: {($ Id.VSub_DollarName '$mtu_size')} ) ) } spids: [4460] ) ] ) (C {<local>} {<Id.Lit_VarLike 'seconds_since_last_update='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}) ) } right: {($ Id.VSub_DollarName '$NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE')} ) ) } ) (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_DollarName '$NETWORK_USAGE_NOW_INIT')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_SENT) op: assign_op.Equal rhs: {<0>} spids: [4525] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_RECIEVED) op: assign_op.Equal rhs: {<0>} spids: [4529] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_INIT) op: assign_op.Equal rhs: {<1>} spids: [4534] ) ] ) ] spids: [4508 4522] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_SENT) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Minus left: { ($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_SENT' ) } right: {($ Id.VSub_DollarName '$total_previous_sent')} ) right: {($ Id.VSub_DollarName '$seconds_since_last_update')} ) ) } spids: [4546] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_NOW_CURRENT_RECIEVED) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Minus left: { ($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_RECIEVED' ) } right: {($ Id.VSub_DollarName '$total_previous_recieved')} ) right: {($ Id.VSub_DollarName '$seconds_since_last_update')} ) ) } spids: [4567] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}) ) } spids: [4596] ) ] ) (C {<local>} {<Id.Lit_VarLike 'dayofmonth='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d'>)}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$NETWORK_USAGE_DAY_OF_MONTH'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$dayofmonth'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_PREVIOUS_SENT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_SENT')} spids: [4678] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_PREVIOUS_RECIEVED) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_RECIEVED')} spids: [4682] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_OF_MONTH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$dayofmonth')} spids: [4686] ) ] ) ] spids: [4653 4671] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_CURRENT_SENT) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_SENT')} right: {($ Id.VSub_DollarName '$NETWORK_USAGE_DAY_PREVIOUS_SENT')} ) ) } spids: [4699] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_DAY_CURRENT_RECIEVED) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { ($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_RECIEVED') } right: {($ Id.VSub_DollarName '$NETWORK_USAGE_DAY_PREVIOUS_RECIEVED')} ) ) } spids: [4712] ) ] ) ] spids: [4408 4422] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_TOTAL) op: assign_op.Equal rhs: {<0>} spids: [4738] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_FREE) op: assign_op.Equal rhs: {<0>} spids: [4742] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_USED) op: assign_op.Equal rhs: {<0>} spids: [4746] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_CACHED) op: assign_op.Equal rhs: {<0>} spids: [4750] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_PERCENT) op: assign_op.Equal rhs: {<0>} spids: [4754] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPTOTAL) op: assign_op.Equal rhs: {<0>} spids: [4758] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPUSED) op: assign_op.Equal rhs: {<0>} spids: [4762] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPFREE) op: assign_op.Equal rhs: {<0>} spids: [4766] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPERCENT) op: assign_op.Equal rhs: {<0>} spids: [4770] ) ] ) (command.ShFunction name: Obtain_MEMORY body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.mem'>)} spids: [4785] ) ] ) (command.Simple words: [{<free>} {<-m>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FP_TEMP')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_TOTAL) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F ) ) } spids: [4805] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_CACHED) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $7}'>)}) ] negated: F ) ) } spids: [4835] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_USED) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F ) ) } right: {($ Id.VSub_DollarName '$MEMORY_CACHED')} ) ) } spids: [4861] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_FREE) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F ) ) } right: {($ Id.VSub_DollarName '$MEMORY_CACHED')} ) ) } spids: [4896] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_PERCENT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName '$MEMORY_USED') <' / '> ($ Id.VSub_DollarName '$MEMORY_TOTAL') <' * 100}'> ) } ) ] negated: F ) ) } spids: [4931] ) ] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName '$MEMORY_PERCENT')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_PERCENT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$C_PERCENT_GRAPH')} spids: [4959] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPTOTAL) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F ) ) } spids: [4968] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName '$MEMORY_SWAPTOTAL')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPUSED) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F ) ) } spids: [5015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPFREE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$FP_TEMP')}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F ) ) } spids: [5041] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPERCENT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName '$MEMORY_SWAPUSED') <' / '> ($ Id.VSub_DollarName '$MEMORY_SWAPTOTAL') <' * 100}'> ) } ) ] negated: F ) ) } spids: [5067] ) ] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName '$MEMORY_SWAPERCENT')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPERCENT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$C_PERCENT_GRAPH')} spids: [5096] ) ] ) ] spids: [4998 5012] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MEMORY_SWAPERCENT) op: assign_op.Equal rhs: {(DQ <' Disabled'>)} spids: [5103] ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_QUERY_COUNT) op: assign_op.Equal rhs: {<0>} spids: [5123] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_TOTAL_ADS) op: assign_op.Equal rhs: {<0>} spids: [5127] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_PERCENT_ADS) op: assign_op.Equal rhs: {<0>} spids: [5131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_TOTAL_DOMAINS) op: assign_op.Equal rhs: {<0>} spids: [5135] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_LAST_DOMAIN_BLOCKED) op: assign_op.Equal rhs: {<0>} spids: [5139] ) ] ) (command.ShFunction name: Obtain_PIHOLE body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'pihole_log_file='> (DQ <'/var/log/pihole.log'>)}) (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_DollarName '$PIHOLE_TOTAL_DOMAINS')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/pihole/gravity.list'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_TOTAL_DOMAINS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<wc>} {<-l>} {<'/etc/pihole/gravity.list'>}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F ) ) } spids: [5194] ) ] ) ] spids: [5180 5191] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_TOTAL_DOMAINS) op: assign_op.Equal rhs: {(DQ <'Not Installed'>)} spids: [5215] ) ] ) ] ) ] spids: [5163 5177] ) ] ) (C {<local>} {<Id.Lit_VarLike 'today='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (SQ <'%b %e'>)}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_QUERY_COUNT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName '$pihole_log_file'))}) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$today'))}) (C {<awk>} {(SQ <'/query/ {print $7}'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [5243] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName '$PIHOLE_QUERY_COUNT')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_QUERY_COUNT) op: assign_op.Equal rhs: {<1>} spids: [5296] ) ] ) ] spids: [5279 5293] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_TOTAL_ADS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName '$pihole_log_file'))}) (C {<grep>} {(DQ ($ Id.VSub_DollarName '$today'))}) (C {<awk>} {(SQ <'/\\/etc\\/pihole\\/gravity.list/ {print $7}'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [5304] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_PERCENT_ADS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName '$PIHOLE_TOTAL_ADS') <' / '> ($ Id.VSub_DollarName '$PIHOLE_QUERY_COUNT') <' * 100}'> ) } ) ] negated: F ) ) } spids: [5336] ) ] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName '$PIHOLE_PERCENT_ADS')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_PERCENT_ADS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$C_PERCENT_GRAPH')} spids: [5364] ) ] ) (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_DollarName '$PIHOLE_TOTAL_ADS')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_LAST_DOMAIN_BLOCKED) op: assign_op.Equal rhs: {(DQ <None>)} spids: [5390] ) ] ) ] spids: [5373 5387] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIHOLE_LAST_DOMAIN_BLOCKED) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<tac>} {<'/var/log/pihole.log'>}) (C {<grep>} {<-m1>} {(SQ <gravity.list>)}) (C {<awk>} {(SQ <'{print $6}'>)}) (C {<cut>} {<-c>} {<1-24>}) ] negated: F ) ) } spids: [5399] ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUN_INTRO) op: assign_op.Equal rhs: {<0>} spids: [5454] ) ] ) (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_DollarName '$INPUT')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUN_INTRO) op: assign_op.Equal rhs: {<1>} spids: [5475] ) ] ) ] spids: [5458 5472] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCENE_CURRENT) op: assign_op.Equal rhs: {<2>} spids: [5487] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAX_SCENES) op: assign_op.Equal rhs: {<9>} spids: [5491] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REFRESH_RATE) op: assign_op.Equal rhs: {<5>} spids: [5500] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_OUTPUT_TYPE) op: assign_op.Equal rhs: {<1>} spids: [5509] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETWORK_USAGE_CURRENT_OUTPUT_TYPE) op: assign_op.Equal rhs: {<0>} spids: [5518] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aEnabledScenes) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [5527] ) ] ) (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: {($ Id.VSub_DollarName '$MAX_SCENES')} ) 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 name: aEnabledScenes index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<1>} spids: [5554] ) ] ) ] ) ) (command.ShFunction name: Run_Intro body: (BraceGroup children: [ (C {<clear>}) (C {<local>} {<Id.Lit_VarLike 'aAnimation='> (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <' '>)} {(SQ <'i - c'>)} {(SQ <'P i - c l'>)} {(SQ <'t P i - c l o'>)} {(SQ <'e t P i- c l o u'>)} {(SQ <'i e t Pi- c l o u d s'>)} {(SQ <'D i etPi- c l o u d s h'>)} {(SQ <' D ietPi-c l o u d s h e'>)} {(SQ <' DietPi-cl o u d s h e '>)} {(SQ <' DietPi-clou d s h e l '>)} {(SQ <' DietPi-clouds h e l l '>)} {(SQ <' DietPi-cloudshe l l '>)} {(SQ <' DietPi-cloudshell '>)} ] ) } ) (C {<local>} {<Id.Lit_VarLike 'aBar='> (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} ] ) } ) (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 token: <Id.VSub_Name aAnimation> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET'))}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) (braced_var_sub token: <Id.VSub_Name aAnimation> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') <' v'> ($ Id.VSub_DollarName '$DIETPI_CLOUDSHELL_VERSION') ) } ) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ <' Loading...'>)}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') (braced_var_sub token: <Id.VSub_Name aBar> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) ) } ) (C {<sleep>} {<0.2>}) ] ) ) (C {<unset>} {<aAnimation>}) (C {<unset>} {<aBar>}) (C {<sleep>} {<0.1>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_PRINT) op: assign_op.Equal rhs: {<0>} spids: [5920] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_MODE) op: assign_op.Equal rhs: {<0>} spids: [5924] ) ] ) (command.ShFunction name: Update_Banner body: (BraceGroup 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: {($ Id.VSub_DollarName '$BANNER_MODE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_PRINT) op: assign_op.Equal rhs: { (DQ <'DietPi - Cloudshell v'> ($ Id.VSub_DollarName '$DIETPI_CLOUDSHELL_VERSION') ) } spids: [5956] ) ] ) ] spids: [5939 5953] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$BANNER_MODE')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Obtain_DATE_TIME>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_PRINT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$DATE_TIME')} spids: [5983] ) ] ) ] spids: [5963 5977] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$BANNER_MODE')} right: {<Id.Lit_Digits 2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Obtain_UPTIME>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_PRINT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$UPTIME')} spids: [6007] ) ] ) ] spids: [5987 6001] ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike BANNER_MODE> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$BANNER_MODE')} right: {<Id.Lit_Digits 3>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BANNER_MODE) op: assign_op.Equal rhs: {<0>} spids: [6048] ) ] ) ] spids: [6031 6045] ) ] ) ] ) ) (command.ShFunction name: Update_Scene_0 body: (BraceGroup children: [ (C {<Obtain_CPU>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' CPU Usage: '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$CPU_USAGE'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' CPU Stats: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Temp '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$C_CPUTEMP') ($ Id.VSub_DollarName '$CPU_TEMP') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Processes '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$CPU_TOTALPROCESSES') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Governor '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$CPU_GOV') ) } ) (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_DollarName '$G_HW_MODEL')} right: {<Id.Lit_Digits 11>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Freq 0-3 '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$CPU_FREQ_1') <' mhz'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Freq 4-7 '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$CPU_FREQ_2') <' mhz'> ) } ) ] spids: [6234 6248] ) ] else_action: [ (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Freq '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$CPU_FREQ_1') <' mhz'> ) } ) ] ) ] ) ) (command.ShFunction name: Update_Scene_1 body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'index_1='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'index_2='> ($ Id.VSub_Number '$2')}) (C {<Obtain_STORAGE>} {($ Id.VSub_DollarName '$index_1')} {($ Id.VSub_DollarName '$index_2')} ) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' '> (braced_var_sub token: <Id.VSub_Name STORAGE_NAME> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_1')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_PERCENT> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_1')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Used: '> ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_USED> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_1')}) ) <' / '> (braced_var_sub token: <Id.VSub_Name STORAGE_TOTAL> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_1')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Free: '> ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_FREE> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_1')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' '> (braced_var_sub token: <Id.VSub_Name STORAGE_NAME> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_2')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_PERCENT> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_2')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Used: '> ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_USED> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_2')}) ) <' / '> (braced_var_sub token: <Id.VSub_Name STORAGE_TOTAL> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_2')}) ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Free: '> ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name STORAGE_FREE> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$index_2')}) ) ) } ) ] ) ) (command.ShFunction name: Update_Scene_4 body: (BraceGroup children: [ (C {<Obtain_DIETPIINFO>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' DietPi: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Version '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$DIETPI_VERSION_CURRENT') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Updates '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$DIETPI_UPDATE_AVAILABLE') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Web '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$DIETPI_WEBSITE') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Twitter '> (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <':'> ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$DIETPI_TWITTER') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Device: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$DIETPI_HW_DESCRIPTION') ) } ) ] ) ) (command.ShFunction name: Update_Scene_5 body: (BraceGroup children: [ (C {<Obtain_NETWORK_DETAILS>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Network Details: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' IP : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_IP_INT') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Mode : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_MODE') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Adapter : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_ADAPTER') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Duplex : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_DUPLEXSPEED') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Signal : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_SIGNAL_STRENGTH') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Hostname: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_HOSTNAME') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' MAC: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$NETWORK_DETAILS_MAC_ADDRESS') ) } ) ] ) ) (command.ShFunction name: Update_Scene_6 body: (BraceGroup children: [ (C {<Obtain_NETWORK_USAGE>}) (C {<local>} {<Id.Lit_VarLike 'total_sent_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_SENT')} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'total_recieved_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_TOTAL_CURRENT_RECIEVED')} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'today_sent_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_DAY_CURRENT_SENT')} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'today_recieved_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_DAY_CURRENT_RECIEVED')} ) ) } ) (C {<local>} {<Id.Lit_VarLike 'now_sent_output='> <0>}) (C {<local>} {<now_recieved_output0>}) (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_DollarName '$NETWORK_USAGE_CURRENT_OUTPUT_TYPE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:now_sent_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BIT_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_NOW_CURRENT_SENT')} ) ) } spids: [7093] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:now_recieved_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BIT_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_NOW_CURRENT_RECIEVED')} ) ) } spids: [7103] ) ] ) ] spids: [7076 7090] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:now_sent_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_NOW_CURRENT_SENT')} ) ) } spids: [7116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:now_recieved_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName '$NETWORK_USAGE_NOW_CURRENT_RECIEVED')} ) ) } spids: [7126] ) ] ) ] ) (C {<clear>}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Network Usage (TOTAL): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Sent : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$total_sent_output') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Recieved : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$total_recieved_output') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Network Usage (TODAY): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Sent : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$today_sent_output') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Recieved : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$today_recieved_output') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Network Usage (CURRENT): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Sent : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$now_sent_output') <'/s'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Recieved : '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$now_recieved_output') <'/s'> ) } ) ] ) ) (command.ShFunction name: Update_Scene_7 body: (BraceGroup children: [ (C {<Obtain_MEMORY>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Memory Usage (RAM): '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_PERCENT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Used: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_USED') <' MB / '> ($ Id.VSub_DollarName '$MEMORY_TOTAL') <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Free: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_FREE') <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Memory Usage (SWAP): '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_SWAPERCENT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Used: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_SWAPUSED') <' MB / '> ($ Id.VSub_DollarName '$MEMORY_SWAPTOTAL') <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Free: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$MEMORY_SWAPFREE') <' MB'> ) } ) ] ) ) (command.ShFunction name: Update_Scene_8 body: (BraceGroup children: [ (C {<Obtain_PIHOLE>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$BANNER_PRINT'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Pi-hole stats (TODAY): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Ads Blocked: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$PIHOLE_TOTAL_ADS') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' DNS Queries: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$PIHOLE_QUERY_COUNT') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) <' Blocked Domains: '> ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$PIHOLE_TOTAL_DOMAINS') ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' % of traffic = Ads: '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET') ($ Id.VSub_DollarName '$PIHOLE_PERCENT_ADS'))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') (braced_var_sub token: <Id.VSub_Name aCOLOUR> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$USER_COLOUR_INDEX')} ) ) ($ Id.VSub_DollarName '$C_REVERSE') <' Last domain blocked: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName '$C_RESET') <' '> ($ Id.VSub_DollarName '$PIHOLE_LAST_DOMAIN_BLOCKED') ) } ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILEPATH_SETTINGS) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-cloudshell'>)} spids: [7713] ) ] ) (command.ShFunction name: Read_Settings_File body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$FILEPATH_SETTINGS'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<.>} {(DQ ($ Id.VSub_DollarName '$FILEPATH_SETTINGS'))})] spids: [7727 7740] ) ] ) ] ) ) (command.ShFunction name: Write_Settings_File body: (BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<_EOF_>} here_end_span_id: 7807 stdin_parts: [ <'REFRESH_RATE='> ($ Id.VSub_DollarName '$REFRESH_RATE') <'\n'> <'USER_COLOUR_INDEX='> ($ Id.VSub_DollarName '$USER_COLOUR_INDEX') <'\n'> <'TEMPERATURE_OUTPUT_TYPE='> ($ Id.VSub_DollarName '$TEMPERATURE_OUTPUT_TYPE') <'\n'> <'OUTPUT_DISPLAY_INDEX='> ($ Id.VSub_DollarName '$OUTPUT_DISPLAY_INDEX') <'\n'> <'\n'> <'NETWORK_USAGE_CURRENT_OUTPUT_TYPE='> ($ Id.VSub_DollarName '$NETWORK_USAGE_CURRENT_OUTPUT_TYPE') <'\n'> <'\n'> <'BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED='> ($ Id.VSub_DollarName '$BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED') <'\n'> <'BLANK_SCREEN_TIME_HOUR_START='> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_START') <'\n'> <'BLANK_SCREEN_TIME_HOUR_END='> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_END') <'\n'> <'\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$FILEPATH_SETTINGS'))} ) ] do_fork: T ) (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: {($ Id.VSub_DollarName '$MAX_SCENES')} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'aEnabledScenes['> ($ Id.VSub_DollarName '$i') <']='> (braced_var_sub token: <Id.VSub_Name aEnabledScenes> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FILEPATH_SETTINGS')} ) ] do_fork: T ) ] ) ) (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: {($ Id.VSub_DollarName '$MAX_STORAGE')} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'STORAGE_PATH['> ($ Id.VSub_DollarName '$i') <']=\''> (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) <'\''> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FILEPATH_SETTINGS')} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <'STORAGE_NAME['> ($ Id.VSub_DollarName '$i') <']=\''> (braced_var_sub token: <Id.VSub_Name STORAGE_NAME> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) <'\''> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$FILEPATH_SETTINGS')} ) ] do_fork: T ) ] ) ) ] ) ) (command.ShFunction name: Init body: (BraceGroup children: [ (C {<Init_STORAGE>}) (C {<Read_Settings_File>}) (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_DollarName '$G_HW_MODEL')} right: {<Id.Lit_Digits 20>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:aEnabledScenes index:{<Id.Lit_Digits 0>}) op: assign_op.Equal rhs: {<0>} spids: [8011] ) ] ) ] spids: [7994 8008] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<'/etc/pihole/gravity.list'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:aEnabledScenes index:{<Id.Lit_Digits 8>}) op: assign_op.Equal rhs: {<0>} spids: [8052] ) ] ) ] spids: [8035 8048] ) ] ) (C {<local>} {<Id.Lit_VarLike 'enabled_scene='> <0>}) (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: {($ Id.VSub_DollarName '$MAX_SCENES')} ) 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 token: <Id.VSub_Name aEnabledScenes> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:enabled_scene) op: assign_op.Equal rhs: {<1>} spids: [8119] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [8101 8116] ) ] ) ] ) ) (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_DollarName '$enabled_scene')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name:aEnabledScenes index:{<Id.Lit_Digits 4>}) op: assign_op.Equal rhs: {<1>} spids: [8155] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCENE_CURRENT) op: assign_op.Equal rhs: {<4>} spids: [8163] ) ] ) ] spids: [8137 8151] ) ] ) (C {<'/DietPi/dietpi/func/obtain_network_details'>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OUTPUT_DISPLAY_INDEX) op: assign_op.Equal rhs: {<0>} spids: [8203] ) ] ) (command.ShFunction name: Stop body: (BraceGroup children: [ (C {<systemctl>} {<stop>} {<dietpi-cloudshell>}) (command.Pipeline children: [ (C {<ps>} {<ax>}) (C {<grep>} {(SQ <'[d]ietpi-cloudshell [1-9]'>)}) (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'))} ) ] do_fork: T ) ] negated: F ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.Simple words: [{<kill>} {($ Id.VSub_DollarName '$line')}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$FP_TEMP')} ) ] ) ] ) ) (command.ShFunction name: Start body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'output_current_screen='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<tty>}) ) ) } {<Id.Lit_Equals '='>} {(DQ <'/dev/tty1'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:output_current_screen) op: assign_op.Equal rhs: {<1>} spids: [8330] ) ] ) ] spids: [8308 8327] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$OUTPUT_DISPLAY_INDEX')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:output_current_screen) op: assign_op.Equal rhs: {<1>} spids: [8351] ) ] ) ] spids: [8334 8348] ) ] ) (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_DollarName '$output_current_screen')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$C_RESET'))}) (C {<read>} {<-p>} { (DQ <'Use CTRL+C to exit. Press any key to launch '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <...> ) } ) ] spids: [8363 8377] ) ] ) (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_DollarName '$output_current_screen')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-cloudshell'>} {<1>})] spids: [8411 8425] ) ] else_action: [(C {<systemctl>} {<start>} {<dietpi-cloudshell>})] ) (C {<sleep>} {<0.1>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE) op: assign_op.Equal rhs: {<0>} spids: [8477] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {<0>} spids: [8481] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: {<0>} spids: [8485] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [8489] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8493] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LASTSELECTED_ITEM) op: assign_op.Equal rhs: {(DQ )} spids: [8497] ) ] ) (command.ShFunction name: Menu_Exit body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName '$PROGRAM_NAME'))} spids: [8510] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <' configuration tool?'>)} spids: [8517] ) ] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yesno>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<9>} {<55>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [8564] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Write_Settings_File>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<-1>} spids: [8598] ) ] ) ] spids: [8568 8582] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8611] ) ] ) ] ) ] ) ) (command.ShFunction name: Menu_Main body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8635] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE) op: assign_op.Equal rhs: { (DQ <'- '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <' v'> ($ Id.VSub_DollarName '$DIETPI_CLOUDSHELL_VERSION') <' -'> ) } spids: [8639] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'- '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <' -'>)} spids: [8649] ) ] ) (C {<local>} {<Id.Lit_VarLike 'temp_output_text='> (DQ <Fahrenheit>)}) (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_DollarName '$TEMPERATURE_OUTPUT_TYPE')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp_output_text) op: assign_op.Equal rhs: {(DQ <Celsius>)} spids: [8683] ) ] ) ] spids: [8666 8680] ) ] ) (C {<local>} {<Id.Lit_VarLike 'target_output_text='> (DQ <'Main Screen (tty1)'>)}) (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_DollarName '$OUTPUT_DISPLAY_INDEX')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:target_output_text) op: assign_op.Equal rhs: {(DQ <'Current screen or terminal'>)} spids: [8718] ) ] ) ] spids: [8701 8715] ) ] ) (C {<local>} {<Id.Lit_VarLike 'bitbyte_output_text='> (DQ <'Bit (Kbit, Mbit, Gbit)'>)}) (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_DollarName '$NETWORK_USAGE_CURRENT_OUTPUT_TYPE')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bitbyte_output_text) op: assign_op.Equal rhs: {(DQ <'Byte (KB, MB, GB)'>)} spids: [8753] ) ] ) ] spids: [8736 8750] ) ] ) (C {<local>} {<Id.Lit_VarLike 'autoscreenoff='> (DQ <Disabled>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED')} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:autoscreenoff) op: assign_op.Equal rhs: {(DQ <Enabled>)} spids: [8784] ) ] ) ] spids: [8771 8781] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<--menu>} {(DQ )} {<--cancel-button>} {(DQ <Exit>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName '$LASTSELECTED_ITEM'))} {<17>} {<75>} {<10>} {(DQ <Colour>)} {(DQ <'Setting: Change the colour scheme.'>)} {(DQ <'Update Rate'>)} {(DQ <'Setting: Control the time between screen updates.'>)} {(DQ <Scenes>)} {(DQ <'Setting: Toggle which scenes are shown.'>)} {(DQ <Storage>)} {(DQ <'Setting: Set mount locations used for storage stats'>)} {(DQ <Temperature>)} {(DQ <'Setting: Output = '> ($ Id.VSub_DollarName '$temp_output_text'))} {(DQ <'Net Usage Current'>)} { (DQ <'Setting: Output = '> ($ Id.VSub_DollarName '$bitbyte_output_text') ) } {(DQ <'Output Display'>)} {(DQ <'Setting: '> ($ Id.VSub_DollarName '$target_output_text') <.>)} {(DQ <'Auto screen off'>)} { (DQ <'Setting: '> ($ Id.VSub_DollarName '$autoscreenoff') <' | Start '> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_START') <' h | End '> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_END') <' h'> ) } {(DQ <'Start / Restart'>)} { (DQ <'Apply settings. Launch on '> ($ Id.VSub_DollarName '$target_output_text') <.> ) } {(DQ <Stop>)} {(DQ <'Stops '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <.>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [8794] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [8959] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LASTSELECTED_ITEM) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))} spids: [8981] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))} arms: [ (case_arm pat_list: [{(DQ <Storage>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<5>} spids: [9004] ) ] ) ] spids: [8998 9001 9008 -1] ) (case_arm pat_list: [{(DQ <'Auto screen off'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<4>} spids: [9017] ) ] ) ] spids: [9011 9014 9021 -1] ) (case_arm pat_list: [{(DQ <'Net Usage Current'>)}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike NETWORK_USAGE_CURRENT_OUTPUT_TYPE> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: { ($ Id.VSub_DollarName '$NETWORK_USAGE_CURRENT_OUTPUT_TYPE' ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name: NETWORK_USAGE_CURRENT_OUTPUT_TYPE ) op: assign_op.Equal rhs: {<0>} spids: [9054] ) ] ) ] spids: [9037 9051] ) ] ) ] spids: [9024 9027 9061 -1] ) (case_arm pat_list: [{<Temperature>}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike TEMPERATURE_OUTPUT_TYPE> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: { ($ Id.VSub_DollarName '$TEMPERATURE_OUTPUT_TYPE' ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPERATURE_OUTPUT_TYPE) op: assign_op.Equal rhs: {<0>} spids: [9092] ) ] ) ] spids: [9075 9089] ) ] ) ] spids: [9064 9065 9099 -1] ) (case_arm pat_list: [{(DQ <'Output Display'>)}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike OUTPUT_DISPLAY_INDEX> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName '$OUTPUT_DISPLAY_INDEX')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OUTPUT_DISPLAY_INDEX) op: assign_op.Equal rhs: {<0>} spids: [9132] ) ] ) ] spids: [9115 9129] ) ] ) ] spids: [9102 9105 9139 -1] ) (case_arm pat_list: [{(DQ <'Start / Restart'>)}] action: [(C {<Write_Settings_File>}) (C {<Stop>}) (C {<Start>})] spids: [9142 9145 9157 -1] ) (case_arm pat_list: [{(DQ <Stop>)}] action: [(C {<Stop>})] spids: [9160 9163 9169 -1] ) (case_arm pat_list: [{<Colour>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<1>} spids: [9176] ) ] ) ] spids: [9172 9173 9180 -1] ) (case_arm pat_list: [{(DQ <'Update Rate'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<2>} spids: [9189] ) ] ) ] spids: [9183 9186 9193 -1] ) (case_arm pat_list: [{<Scenes>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<3>} spids: [9200] ) ] ) ] spids: [9196 9197 9204 -1] ) ] ) ] spids: [8963 8977] ) ] else_action: [(C {<Menu_Exit>})] ) ] ) ) (command.ShFunction name: Menu_Colour body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9239] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Colour -'>)} spids: [9276] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Select your colour scheme.'>)} spids: [9282] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName '$USER_COLOUR_INDEX'))} {<15>} {<45>} {<7>} {(DQ <0>)} {(DQ <White>)} {(DQ <1>)} {(DQ <Red>)} {(DQ <2>)} {(DQ <Green>)} {(DQ <3>)} {(DQ <'Yellow (Default)'>)} {(DQ <4>)} {(DQ <Blue>)} {(DQ <5>)} {(DQ <Purple>)} {(DQ <6>)} {(DQ <Cyan>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [9288] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [9410] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USER_COLOUR_INDEX) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTION')} spids: [9432] ) ] ) ] spids: [9414 9428] ) ] ) ] ) ) (command.ShFunction name: Menu_UpdateRate body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9460] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Update Rate -'>)} spids: [9465] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Change the delay between scene changes and updates.'>)} spids: [9471] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName '$REFRESH_RATE'))} {<15>} {<55>} {<7>} {(DQ <1>)} {(DQ <Second>)} {(DQ <3>)} {(DQ <Seconds>)} {(DQ <5>)} {(DQ <'Seconds (Default)'>)} {(DQ <10>)} {(DQ <Seconds>)} {(DQ <15>)} {(DQ <Seconds>)} {(DQ <20>)} {(DQ <Seconds>)} {(DQ <30>)} {(DQ <Seconds>)} {(DQ <45>)} {(DQ <Seconds>)} {(DQ <60>)} {(DQ <Seconds>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [9477] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [9619] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REFRESH_RATE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTION')} spids: [9641] ) ] ) ] spids: [9623 9637] ) ] ) ] ) ) (command.ShFunction name: Menu_SceneSelection body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9669] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.dietpi-cloudshell_scenelist'>)} spids: [9674] ) ] ) (C {<local>} {<Id.Lit_VarLike 'aWhiptailArray='> (sh_array_literal left:<Id.Op_LParen _>)}) (C {<local>} {<Id.Lit_VarLike 'aWhip_OnOff_Status='> (sh_array_literal left:<Id.Op_LParen _>)} ) (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: {($ Id.VSub_DollarName '$MAX_SCENES')} ) 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 name: aWhip_OnOff_Status index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <on>)} spids: [9725] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { (braced_var_sub token: <Id.VSub_Name aEnabledScenes> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aWhip_OnOff_Status index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {(SQ <off>)} spids: [9756] ) ] ) ] spids: [9735 9752] ) ] ) ] ) ) (C {<local>} {<Id.Lit_VarLike 'index='> <0>}) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<0>} spids: [9785] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'CPU: Temperatures, Usage, frequency and more.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9788] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<1>} spids: [9809] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'Storage: Usage information for Flash and USB drives'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9812] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<2>} spids: [9833] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <' - Additional Storage (USB_2/3)'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9836] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<3>} spids: [9857] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <' - Additional Storage (USB_4/5)'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9860] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<4>} spids: [9881] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'DietPi: Information, stats and updates for DietPi.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9884] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<5>} spids: [9905] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'Network Details: Ip address, Speeds, Signal and more.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9908] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<6>} spids: [9929] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'Network Usage: Bandwidth usage (sent / recieved).'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9932] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<7>} spids: [9953] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'Memory: Stats for RAM and Swapfile usage.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9956] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<8>} spids: [9977] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$index'))} {(DQ <'Pi-hole: Stats for Pi-hole. Total Ads blocked etc.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name aWhip_OnOff_Status> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$index')} ) ) ) } ] ) } spids: [9980] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Scene Selection -'>)} spids: [10002] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Please use the spacebar to toggle which scenes are active.'>)} spids: [10008] ) ] ) (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--checklist>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--separate-output>} {<16>} {<75>} {<9>} { (DQ (braced_var_sub token: <Id.VSub_Name aWhiptailArray> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [10058] ) ] ) (C {<unset>} {<aWhiptailArray>}) (C {<unset>} {<aWhip_OnOff_Status>}) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) 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: {($ Id.VSub_DollarName '$MAX_SCENES')} ) 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 name: aEnabledScenes index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<0>} spids: [10122] ) ] ) ] ) ) ] spids: [10082 10096] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aEnabledScenes index: {($ Id.VSub_DollarName '$line')} ) op: assign_op.Equal rhs: {<1>} spids: [10156] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))} ) ] ) ] ) ) (command.ShFunction name: Menu_BlankScreenAtTime body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [10194] ) ] ) (C {<local>} {<Id.Lit_VarLike 'aWhipHour='> (sh_array_literal left:<Id.Op_LParen _>)}) (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: {<Id.Lit_Digits 24>} ) 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.Name name:aWhipHour) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_DollarName '$i'))} {(DQ <Hour>)}] ) } spids: [10232] ) ] ) ] ) ) (C {<local>} {<Id.Lit_VarLike 'blank_screen_at_specific_time_enabled_text='> (SQ <Disabled>)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED')} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:blank_screen_at_specific_time_enabled_text) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [10270] ) ] ) ] spids: [10257 10267] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Auto screen off -'>)} spids: [10280] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'Automatically power down the screen and disable DietPi-Cloudshell processing during a specific time.\\n\\nNB: This feature will only work if DietPi-Cloudshell was launched with the DietPi-Autostart option, or, launched from the main screen (tty1).' > ) } spids: [10286] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName '$REFRESH_RATE'))} {<16>} {<60>} {<3>} {(DQ <Toggle>)} { (DQ ($ Id.VSub_DollarName '$blank_screen_at_specific_time_enabled_text') ) } {(DQ <'Start time'>)} { (DQ <'Set which hour to power off screen ('> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_START') <').'> ) } {(DQ <'End time'>)} { (DQ <'Set which hour to power on screen ('> ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_END') <').'> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [10292] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [10378] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$OPTION'))} {<Id.Lit_Equals '='>} {(DQ <Toggle>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: { ($ Id.VSub_DollarName '$BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED' ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name: BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED ) op: assign_op.Equal rhs: {<0>} spids: [10444] ) ] ) ] spids: [10427 10441] ) ] ) ] spids: [10400 10416] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$OPTION'))} {<Id.Lit_Equals '='>} {(DQ <'Start time'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'Please select which hour (24h) you would like the screen to power off.' > ) } spids: [10472] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--default-item>} { (DQ ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_START' ) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<55>} {<7>} { (DQ (braced_var_sub token: <Id.VSub_Name aWhipHour> bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [10478] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [10532] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_TIME_HOUR_START) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTION')} spids: [10553] ) ] ) ] spids: [10536 10550] ) ] ) ] spids: [10452 10468] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$OPTION'))} {<Id.Lit_Equals '='>} {(DQ <'End time'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'Please select which hour (24h) you would like the screen to power on.' > ) } spids: [10581] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--default-item>} { (DQ ($ Id.VSub_DollarName '$BLANK_SCREEN_TIME_HOUR_END') ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<55>} {<7>} { (DQ (braced_var_sub token: <Id.VSub_Name aWhipHour> bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [10587] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [10641] ) ] ) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BLANK_SCREEN_TIME_HOUR_END) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTION')} spids: [10662] ) ] ) ] spids: [10645 10659] ) ] ) ] spids: [10561 10577] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<4>} spids: [10674] ) ] ) ] spids: [10382 10396] ) ] ) (C {<unset>} {<aWhipHour>}) ] ) ) (command.ShFunction name: Menu_Storage body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [10708] ) ] ) (C {<local>} {<Id.Lit_VarLike 'aWhiptailArray='> (sh_array_literal left:<Id.Op_LParen _>)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: {($ Id.VSub_DollarName '$MAX_STORAGE')} ) 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.Name name:aWhiptailArray) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName '$i'))} { (DQ <': Drive '> ($ Id.VSub_DollarName '$i') <' | '> (braced_var_sub token: <Id.VSub_Name STORAGE_PATH> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ] ) } spids: [10748] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Storage Device Mount Location -'>)} spids: [10773] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'DietPi-Cloudshell pulls the storage stats from the drive mount location. If you have custom drives/mounts, please set them here to be displayed during storage scene updates.\\n\\n - Drive 1 = Displayed during main storage scene\\n - Drive 2/3 = Displayed during additional storage scene\\n - Drive 4/5 = Displayed during additional storage scene' > ) } spids: [10779] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$PROGRAM_NAME'))} {<--menu>} {(DQ ($ Id.VSub_DollarName '$WHIP_QUESTION'))} {<--cancel-button>} {(DQ <Back>)} {<19>} {<75>} {<5>} { (DQ (braced_var_sub token: <Id.VSub_Name aWhiptailArray> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] do_fork: T ) ) } spids: [10785] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [10840] ) ] ) (C {<unset>} {<aWhiptailArray>}) (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_DollarName '$CHOICE')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'index='> ($ Id.VSub_DollarName '$OPTION')}) (C {<'/DietPi/dietpi/dietpi-drive_manager'>} {<1>}) (C {<local>} {<Id.Lit_VarLike 'return_string='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/tmp/dietpi-drive_manager_selmnt'>}) ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$return_string'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: STORAGE_PATH index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$return_string'))} spids: [10910] ) ] ) ] spids: [10893 10906] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<5>} spids: [10925] ) ] ) ] spids: [10851 10865] ) ] ) ] ) ) (C {<Init>}) (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_DollarName '$INPUT')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<clear>}) (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_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Main>})] spids: [11014 11028] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Colour>})] spids: [11034 11048] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_UpdateRate>})] spids: [11054 11068] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 3>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_SceneSelection>})] spids: [11074 11088] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 4>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_BlankScreenAtTime>})] spids: [11094 11108] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 5>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Storage>})] spids: [11114 11128] ) ] ) ] ) ) ] spids: [10970 10984] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$INPUT')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Enable_Term_Options>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child:{($ Id.VSub_DollarName '$RUN_INTRO')}) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Run_Intro>})] spids: [11176 11186] ) ] ) (command.Simple words: [{<renice>} {<-n>} {<10>} {($ Id.VSub_Dollar '$$')}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<true>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { ($ Id.VSub_DollarName '$BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED' ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<RUN_BLANK_SCREEN_AT_SPECIFIC_TIME>})] spids: [11227 11237] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$BLANK_SCREEN_ACTIVE')} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<sleep>} {<60>})] spids: [11253 11263] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub token: <Id.VSub_Name aEnabledScenes> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$SCENE_CURRENT')} ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Update_Banner>}) (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_DollarName '$SCENE_CURRENT')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<0>} {<1>})] spids: [11308 11322] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$SCENE_CURRENT')} right: {<Id.Lit_Digits 2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<2>} {<3>})] spids: [11338 11352] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$SCENE_CURRENT')} right: {<Id.Lit_Digits 3>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<4>} {<5>})] spids: [11368 11382] ) ] else_action: [ (C {<Update_Scene_> ($ Id.VSub_DollarName '$SCENE_CURRENT')}) ] ) (C {<sleep>} {($ Id.VSub_DollarName '$REFRESH_RATE')}) ] spids: [11281 11296] ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike SCENE_CURRENT> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName '$SCENE_CURRENT')} right: {($ Id.VSub_DollarName '$MAX_SCENES')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCENE_CURRENT) op: assign_op.Equal rhs: {<0>} spids: [11458] ) ] ) ] spids: [11441 11455] ) ] ) ] ) ] ) ) ] spids: [11150 11164] ) ] ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}] redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (C {<unset>} {<aCOLOUR>}) (C {<unset>} {<aEnabledScenes>}) (C {<Destroy_STORAGE>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] )