(command.BraceGroup
  children: [
    (C {<.>} {</DietPi/dietpi/func/dietpi-globals>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Cron>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRAM_NAME)
          op: assign_op.Equal
          rhs: {(DQ <DietPi-Cron>)}
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [107]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PREVIOUS_MENU_SELECTION)
          op: assign_op.Equal
          rhs: {(DQ <cron.hourly>)}
          spids: [111]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [117]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [121]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCRON_TIME)
          op: assign_op.Equal
          rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
          spids: [125]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aDAY_OF_THE_WEEK_TEXT)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(DQ <Monday>)}
                  {(DQ <Tuesday>)}
                  {(DQ <Wednesday>)}
                  {(DQ <Thursday>)}
                  {(DQ <Friday>)}
                  {(DQ <Saturday>)}
                  {(DQ <Sunday>)}
                ]
              )
            }
          spids: [130]
        )
      ]
    )
    (command.ShFunction
      name: Read_Cron_Times
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.hourly>)})
                                  (C {<awk>} {(SQ <'{print $1}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [184]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.daily>)})
                                  (C {<awk>} {(SQ <'{print $1}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [219]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.daily>)})
                                  (C {<awk>} {(SQ <'{print $2}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [249]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.weekly>)})
                                  (C {<awk>} {(SQ <'{print $1}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [284]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.weekly>)})
                                  (C {<awk>} {(SQ <'{print $2}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [314]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.weekly>)})
                                  (C {<awk>} {(SQ <'{print $5}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [344]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.monthly>)})
                                  (C {<awk>} {(SQ <'{print $1}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [379]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 7>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.monthly>)})
                                  (C {<awk>} {(SQ <'{print $2}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [409]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aCRON_TIME
                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 8>})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {</etc/crontab>})
                                  (C {<grep>} {<-m1>} {(SQ <cron.monthly>)})
                                  (C {<awk>} {(SQ <'{print $3}'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [439]
                )
              ]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: (sh_lhs_expr.Name name:i)
                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name aCRON_TIME>
                            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:(sh_lhs_expr.Name name:i))
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_EqualTilde
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name aCRON_TIME>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: 
                                                  (arith_expr.ArithWord
                                                    w: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                          )
                                        }
                                      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.Simple
                              words: [{<echo>} {(DQ <valid>)}]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  fd: -1
                                  arg_word: {</dev/null>}
                                )
                              ]
                            )
                          ]
                          spids: [502 527]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.IndexedName
                                  name: aCRON_TIME
                                  index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                )
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [548]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: Write_Cron_Times
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 653
                  stdin_parts: [
                    <'#Please use dietpi-cron to change cron start times\n'>
                    <'SHELL=/bin/sh\n'>
                    <'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n'>
                    <'\n'>
                    <'# m h dom mon dow user  command\n'>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                        )
                    )
                    <' * * * *   root    cd / && run-parts --report /etc/cron.hourly\n'>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                        )
                    )
                    <' '>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                        )
                    )
                    <
' * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )\n'
                    >
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                        )
                    )
                    <' '>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                        )
                    )
                    <' * * '>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                        )
                    )
                    <
'   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )\n'
                    >
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                        )
                    )
                    <' '>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 7>})
                        )
                    )
                    <' '>
                    (braced_var_sub
                      token: <Id.VSub_Name aCRON_TIME>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 8>})
                        )
                    )
                    <
' * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )\n'
                    >
                  ]
                )
                (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</etc/crontab>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_Cron_Minute
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'min_value='> <0>})
            (C {<local>} {<Id.Lit_VarLike 'max_value='> <59>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--inputbox>}
                                  {
                                    (DQ <'Please enter a value for MINUTE:'> <Id.Lit_Other '\\'> 
                                      <'n - Valid range ('> ($ Id.VSub_DollarName '$min_value') <' - '> ($ Id.VSub_DollarName '$max_value') <')'>
                                    )
                                  }
                                  {<9>}
                                  {<50>}
                                  {(DQ ($ Id.VSub_DollarName '$input_value'))}
                                  {<--title>}
                                  {(DQ <'Set Minute'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [686]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [727]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {($ Id.VSub_DollarName '$OPTION')}
                                          right: 
                                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> 
                                              <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                                            }
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$min_value')}
                                            )
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LessEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$max_value')}
                                            )
                                        )
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:input_value)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$OPTION')}
                                  spids: [803]
                                )
                              ]
                            )
                          ]
                          spids: [753 800]
                        )
                      ]
                      else_action: [(C {<Info_Input_Not_Valid_Integer>})]
                    )
                  ]
                  spids: [731 745]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$input_value')}
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_Cron_Hour
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'min_value='> <0>})
            (C {<local>} {<Id.Lit_VarLike 'max_value='> <23>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--inputbox>}
                                  {
                                    (DQ <'Please enter a value for HOUR (24h):'> <Id.Lit_Other '\\'> 
                                      <'n - Valid range ('> ($ Id.VSub_DollarName '$min_value') <' - '> ($ Id.VSub_DollarName '$max_value') <')'>
                                    )
                                  }
                                  {<9>}
                                  {<50>}
                                  {(DQ ($ Id.VSub_DollarName '$input_value'))}
                                  {<--title>}
                                  {(DQ <'Set Hour'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [856]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [897]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {($ Id.VSub_DollarName '$OPTION')}
                                          right: 
                                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> 
                                              <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                                            }
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$min_value')}
                                            )
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LessEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$max_value')}
                                            )
                                        )
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:input_value)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$OPTION')}
                                  spids: [973]
                                )
                              ]
                            )
                          ]
                          spids: [923 970]
                        )
                      ]
                      else_action: [(C {<Info_Input_Not_Valid_Integer>})]
                    )
                  ]
                  spids: [901 915]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$input_value')}
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_Cron_DayOfWeek
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'min_value='> <1>})
            (C {<local>} {<Id.Lit_VarLike 'max_value='> <7>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ <'Day of the Week'>)}
                                  {<--menu>}
                                  {(DQ <'Please select a day of the week.'>)}
                                  {<--cancel-button>}
                                  {(DQ <Cancel>)}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$input_value'))}
                                  {<15>}
                                  {<45>}
                                  {<7>}
                                  {(DQ <1>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <2>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <3>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <4>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <5>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <6>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                                          )
                                      )
                                    )
                                  }
                                  {(DQ <7>)}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                                          )
                                      )
                                    )
                                  }
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1026]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<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: {($ Id.VSub_DollarName '$OPTION')}
                          spids: [1194]
                        )
                      ]
                    )
                  ]
                  spids: [1177 1191]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$input_value')}
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_Cron_DayOfMonth
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'input_value='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'min_value='> <1>})
            (C {<local>} {<Id.Lit_VarLike 'max_value='> <28>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--inputbox>}
                                  {
                                    (DQ <'Please enter a value for DAY of the MONTH:'> 
                                      <Id.Lit_Other '\\'> <'n - Valid range ('> ($ Id.VSub_DollarName '$min_value') <' - '> ($ Id.VSub_DollarName '$max_value') 
                                      <')'> <Id.Lit_Other '\\'> <'n - eg: 11 = the 11th day of month'>
                                    )
                                  }
                                  {<10>}
                                  {<50>}
                                  {(DQ ($ Id.VSub_DollarName '$input_value'))}
                                  {<--title>}
                                  {(DQ <'Set Day of Month'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1238]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1281]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {($ Id.VSub_DollarName '$OPTION')}
                                          right: 
                                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> 
                                              <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                                            }
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$min_value')}
                                            )
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LessEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$OPTION')}
                                            )
                                          right: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$max_value')}
                                            )
                                        )
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:input_value)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$OPTION')}
                                  spids: [1357]
                                )
                              ]
                            )
                          ]
                          spids: [1307 1354]
                        )
                      ]
                      else_action: [(C {<Info_Input_Not_Valid_Integer>})]
                    )
                  ]
                  spids: [1285 1299]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$input_value')}
            )
          ]
        )
    )
    (command.ShFunction
      name: Info_Input_Not_Valid_Integer
      body: 
        (command.BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Invalid Value'>)} {<--msgbox>} 
              {(DQ ($ Id.VSub_DollarName '$OPTION') <' is an invalid value.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<9>} {<60>}
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Exit
      body: 
        (command.BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Exit '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <'?'>)} 
              {<--yesno>} {(DQ <'Exit '> ($ Id.VSub_DollarName '$PROGRAM_NAME') <'?'>)} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$PROGRAM_NAME'))} {<--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: [1471]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                          op: assign_op.Equal
                          rhs: {<-1>}
                          spids: [1496]
                        )
                      ]
                    )
                  ]
                  spids: [1475 1489]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [1507]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Main
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$PROGRAM_NAME'))}
                                  {<--menu>}
                                  {
                                    (DQ 
                                      <
'This program allows you to change the date and times for starting each cron job.'
                                      > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'n- Example:'> <Id.Lit_Other '\\'> 
                                      <
'nIf you set cron.daily to 22 hours and 20 minutes, all scripts in /etc/cron.daily/* will be run at 10:20pm'
                                      >
                                    )
                                  }
                                  {<--cancel-button>}
                                  {(DQ <Exit>)}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$PREVIOUS_MENU_SELECTION'))}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$PROGRAM_NAME'))}
                                  {<18>}
                                  {<70>}
                                  {<5>}
                                  {(DQ <cron.hourly>)}
                                  {
                                    (DQ <'Every Hour at '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                          )
                                      ) <' Minutes'>
                                    )
                                  }
                                  {(DQ <cron.daily>)}
                                  {
                                    (DQ <'Every Day at '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                          )
                                      ) <' Hours and '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                          )
                                      ) <' Minutes'>
                                    )
                                  }
                                  {(DQ <cron.weekly>)}
                                  {
                                    (DQ <'Every '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aDAY_OF_THE_WEEK_TEXT>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              (arith_expr.ArithWord
                                                w: 
                                                  {
                                                    (word_part.ArithSub
                                                      anode: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_Minus
                                                          left: 
                                                            (arith_expr.ArithWord
                                                              w: 
                                                                {
                                                                  (braced_var_sub
                                                                    token: <Id.VSub_Name aCRON_TIME>
                                                                    bracket_op: 
                                                                      (bracket_op.ArrayIndex
                                                                        expr: 
                                                                          (arith_expr.ArithWord
                                                                            w: {<Id.Lit_Digits 5>}
                                                                          )
                                                                      )
                                                                  )
                                                                }
                                                            )
                                                          right: 
                                                            (arith_expr.ArithWord
                                                              w: {<Id.Lit_Digits 1>}
                                                            )
                                                        )
                                                    )
                                                  }
                                              )
                                          )
                                      ) <' at '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                          )
                                      ) <' Hours and '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                                          )
                                      ) <' Minutes'>
                                    )
                                  }
                                  {(DQ <cron.monthly>)}
                                  {
                                    (DQ <'On Day '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 8>})
                                          )
                                      ) <' of the month at '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 7>})
                                          )
                                      ) <' Hours and '> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name aCRON_TIME>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                                          )
                                      ) <' Minutes'>
                                    )
                                  }
                                  {(DQ <Apply>)}
                                  {(DQ <'Saves your cron start times and restarts service.'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1525]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1709]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PREVIOUS_MENU_SELECTION)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OPTION')}
                          spids: [1731]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ <cron.hourly>)}]
                          action: [
                            (C {<Input_Cron_Minute>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1761]
                                )
                              ]
                            )
                          ]
                          spids: [1745 1748 1769 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <cron.daily>)}]
                          action: [
                            (C {<Input_Cron_Hour>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1788]
                                )
                              ]
                            )
                            (C {<Input_Cron_Minute>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1807]
                                )
                              ]
                            )
                          ]
                          spids: [1772 1775 1815 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <cron.weekly>)}]
                          action: [
                            (C {<Input_Cron_DayOfWeek>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1834]
                                )
                              ]
                            )
                            (C {<Input_Cron_Hour>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1853]
                                )
                              ]
                            )
                            (C {<Input_Cron_Minute>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1872]
                                )
                              ]
                            )
                          ]
                          spids: [1818 1821 1880 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <cron.monthly>)}]
                          action: [
                            (C {<Input_Cron_DayOfMonth>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 8>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 8>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1899]
                                )
                              ]
                            )
                            (C {<Input_Cron_Hour>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 7>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 7>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1918]
                                )
                              ]
                            )
                            (C {<Input_Cron_Minute>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aCRON_TIME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                                    )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCRON_TIME
                                      index: (arith_expr.ArithWord w:{<Id.Lit_Digits 6>})
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [1937]
                                )
                              ]
                            )
                          ]
                          spids: [1883 1886 1945 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <Apply>)}]
                          action: [
                            (C {<Write_Cron_Times>})
                            (C {<systemctl>} {<restart>} {<cron>})
                            (C {<whiptail>} {<--title>} {(DQ <Completed>)} {<--msgbox>} 
                              {(DQ <'Your Cron start times have been saved and applied.'>)} {<9>} {<60>}
                            )
                          ]
                          spids: [1948 1951 1992 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1713 1727]
                )
              ]
              else_action: [(C {<Menu_Exit>})]
            )
          ]
        )
    )
    (C {<Read_Cron_Times>})
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: [
        (command.Sentence
          child: 
            (command.DParen
              child: 
                (arith_expr.Binary
                  op_id: Id.Arith_Great
                  left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                  right: 
                    (arith_expr.Unary
                      op_id: Id.Node_UnaryMinus
                      child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                    )
                )
            )
          terminator: <Id.Op_Semi _>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (C {<clear>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<Menu_Main>})]
                  spids: [2071 2085]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<aDAY_OF_THE_WEEK_TEXT>})
    (C {<unset>} {<aCRON_TIME>})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
  ]
)