(command.BraceGroup
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_BRANCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name GIT_BRANCH>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{<master>})
              )
            }
          spids: [39]
        )
      ]
    )
    (C {<echo>} {<-e>} {(DQ <'Git Branch: '> ($ Id.VSub_DollarName '$GIT_BRANCH'))})
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$HOME'))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$UID')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} 
              {
                (SQ 
                  <
'Error: Root privileges required. Please run the command with "sudo"\\nIn case install the "sudo" package with root privileges: #apt-get install sudo\\n'
                  >
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [86 100]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(SQ <'Acquire::ForceIPv4 "true";'>)}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</etc/apt/apt.conf.d/99-dietpi-force-ipv4>}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:a_MIN_APT_PREREQS)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [{(SQ <wget>)} {(SQ <ca-certificates>)} {(SQ <locales>)}]
              )
            }
          spids: [143]
        )
      ]
    )
    (command.Simple
      words: [{<rm>} {</etc/apt/sources.list.d/deb-multimedia.list>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<apt-get>} {<clean>})
    (C {<apt-get>} {<update>})
    (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 a_MIN_APT_PREREQS>
                    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.DParen
                          child: 
                            (arith_expr.Unary
                              op_id: Id.Arith_Bang
                              child: 
                                (arith_expr.ArithWord
                                  w: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<dpkg>} {<--get-selections>})
                                                  (C {<grep>} {<-ci>} {<-m1>} 
                                                    {
                                                      (DQ <'^'> 
                                                        (braced_var_sub
                                                          token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                                          bracket_op: 
                                                            (bracket_op.ArrayIndex
                                                              expr: 
                                                                (arith_expr.ArithWord
                                                                  w: {($ Id.VSub_DollarName '$i')}
                                                                )
                                                            )
                                                        ) <'[[:space:]]'>
                                                      )
                                                    }
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<apt-get>} {<install>} {<-y>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name a_MIN_APT_PREREQS>
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                            )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_NEqual
                                      left: (arith_expr.ArithWord w:{($ Id.VSub_QMark '$?')})
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<echo>} {<-e>} 
                              {
                                (DQ <'Error: Unable to install '> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                      )
                                  ) <', please try to install it manually with'> <Id.Lit_Other '\\'> <'n - apt-get install -y '> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                      )
                                  )
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [275 289]
                        )
                      ]
                    )
                  ]
                  spids: [222 257]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<a_MIN_APT_PREREQS>})
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DPipe Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<grep>} {<-q>} {(SQ <'^[[:blank:]]*prefer-family ='>)} {</etc/wgetrc>})
        (C {<sed>} {<-i>} {(SQ <'/^[[:blank:]]*prefer-family =/c\\prefer-family = IPv4'>)} 
          {</etc/wgetrc>}
        )
        (C {<grep>} {<-q>} {(SQ <'^[[:blank:]#;]*prefer-family ='>)} {</etc/wgetrc>})
        (C {<sed>} {<-i>} {(SQ <'/^[[:blank:]#;]*prefer-family =/c\\prefer-family = IPv4'>)} 
          {</etc/wgetrc>}
        )
        (command.Simple
          words: [{<echo>} {(SQ <'prefer-family = IPv4'>)}]
          redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{</etc/wgetrc>})]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(SQ <'en_GB.UTF-8 UTF-8'>)}]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</etc/locale.gen>})]
    )
    (C {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<locales>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_QMark '$?')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Locale generation failed. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [449 463]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 501
          stdin_parts: [
            <
'# Force locale on remote access, especially via dropbear, where overwriting server locale by SSH client cannot be suppressed:\n'
            >
            <'export LANG=en_GB.UTF-8\n'>
            <'export LC_ALL=en_GB.UTF-8\n'>
            <'export LANGUAGE=en_GB:en\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</etc/profile.d/99-dietpi-force-locale.sh>}
        )
      ]
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {</etc/profile.d/99-dietpi-force-locale.sh>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LANG)
          op: assign_op.Equal
          rhs: {<en_GB.UTF-8>}
          spids: [516]
        )
      ]
    )
    (C {<wget>} 
      {<https> <Id.Lit_Other ':'> <//raw.githubusercontent.com/Fourdee/DietPi/> 
        ($ Id.VSub_DollarName '$GIT_BRANCH') </dietpi/func/dietpi-globals>
      } {<-O>} {<dietpi-globals>}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_QMark '$?')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Unable to download dietpi-globals. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [554 568]
        )
      ]
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {<dietpi-globals>})
    (C {<.>} {<./dietpi-globals>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_QMark '$?')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Unable to load dietpi-globals. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [608 622]
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-PREP_SYSTEM_FOR_DIETPI>)})
    (C {<export>} {<Id.Lit_VarLike 'G_DISTRO='> <0>})
    (C {<export>} {<Id.Lit_VarLike 'G_DISTRO_NAME='> (SQ <NULL>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [673]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [677]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <wheezy>)} {</etc/os-release>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<2>}
                  spids: [699]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <wheezy>)}
                  spids: [703]
                )
              ]
            )
          ]
          spids: [682 695]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <jessie>)} {</etc/os-release>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<3>}
                  spids: [727]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <jessie>)}
                  spids: [731]
                )
              ]
            )
          ]
          spids: [710 723]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <stretch>)} {</etc/os-release>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<4>}
                  spids: [755]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <stretch>)}
                  spids: [759]
                )
              ]
            )
          ]
          spids: [738 751]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <buster>)} {</etc/os-release>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<5>}
                  spids: [783]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <buster>)}
                  spids: [787]
                )
              ]
            )
          ]
          spids: [766 779]
        )
      ]
      else_action: [
        (C {<echo>} {<-e>} {(SQ <'Error: Unknown or unsupported distribution version. Aborting...\\n'>)})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_HW_ARCH_DESCRIPTION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<uname>} {<-m>})])
              )
            }
          spids: [825]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                  {<Id.Lit_Equals '='>} {(DQ <armv6l>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [854]
                )
              ]
            )
          ]
          spids: [833 850]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                  {<Id.Lit_Equals '='>} {(DQ <armv7l>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<2>}
                  spids: [880]
                )
              ]
            )
          ]
          spids: [859 876]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                  {<Id.Lit_Equals '='>} {(DQ <aarch64>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<3>}
                  spids: [906]
                )
              ]
            )
          ]
          spids: [885 902]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                  {<Id.Lit_Equals '='>} {(DQ <x86_64>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<10>}
                  spids: [932]
                )
              ]
            )
          ]
          spids: [911 928]
        )
      ]
      else_action: [
        (C {<echo>} {<-e>} 
          {
            (DQ <'Error: Unknown or unsupported CPU architecture '> 
              ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION') <'. Aborting...'>
            )
          }
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INTERNET_ADDRESS)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [966]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE)
          op: assign_op.Equal
          rhs: {(SQ <DietPi-Prep>)}
          spids: [976]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [982]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [986]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [990]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_RETURN_VALUE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [994]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [998]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1002]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1006]
        )
      ]
    )
    (command.ShFunction
      name: Run_Whiptail
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_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 '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_DESC'))}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_DEFAULT_ITEM'))}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<24>}
                                  {<85>}
                                  {<12>}
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name WHIP_MENU_ARRAY>
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    )
                                  }
                                ]
                                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: [1017]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1071]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$WHIP_CHOICE')}
                                    )
                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                )
                            )
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName '$WHIP_OPTION'))} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_RETURN_VALUE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$WHIP_OPTION')}
                          spids: [1106]
                        )
                      ]
                    )
                  ]
                  spids: [1075 1102]
                )
              ]
              else_action: [
                (C {<G_DIETPI-NOTIFY>} {<1>} {(SQ <'No choices detected, aborting...'>)})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
              ]
            )
            (C {<unset>} {<WHIP_MENU_ARRAY>})
          ]
        )
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 0: Detecting existing DietPi system:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {<systemctl>} {<is-active>} {<dietpi-ramdisk>})
                                      (C {<grep>} {<-ci>} {<-m1>} {(SQ <'^active'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'DietPi system found, running pre-prep'>)})
            (C {</DietPi/dietpi/dietpi-services>} {<stop>})
            (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramlog>})
            (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramdisk>})
            (C {<rm>} {<-R>} {</DietPi/> <Id.Lit_Star '*'>})
            (C {<rm>} {<-R>} {</boot/dietpi>})
            (command.Simple
              words: [{<rm>} {<-R>} {</mnt/dietpi-backup>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {<-R>} {</mnt/dietpi-sync>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {<-R>} {</mnt/dietpi_userdata>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {<-R>} {</etc/dietpi>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {<-R>} {</var/lib/dietpi>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {<-R>} {</var/tmp/dietpi>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {</root/DietPi-Automation.log>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<rm>} {</boot/Automation_Format_My_Usb_Drive>}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
          ]
          spids: [1220 1248]
        )
      ]
      else_action: [(C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Non-DietPi system'>)})]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 1: Initial prep to allow this script to function:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Updating APT:'>)})
    (C {<G_RUN_CMD>} {<mkdir>} {<-p>} {</var/tmp/dietpi/logs>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Installing core packages, required for next stage of this script:'>)}
    )
    (C {<G_AGI>} {<apt-transport-https>} {<unzip>} {<whiptail>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 2: Hardware selection:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'Hardware selection:'>)}
          spids: [1550]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                <
'Please select the current device this is being installed on:\\n - NB: Select "Generic device" if not listed.'
                >
              )
            }
          spids: [1556]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<22>}
          spids: [1562]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ )}
                  {
                    (SQ 
                      <
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Other\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                      >
                    )
                  }
                  {(SQ <22>)}
                  {(SQ <'Generic device (unknown to DietPi)'>)}
                  {(SQ )}
                  {
                    (SQ 
                      <
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80SBC\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                      >
                    )
                  }
                  {(SQ <52>)}
                  {(SQ <'Asus Tinker Board'>)}
                  {(SQ <51>)}
                  {(SQ <'BananaPi Pro (Lemaker)'>)}
                  {(SQ <50>)}
                  {(SQ <'BananaPi M2+ (sinovoip)'>)}
                  {(SQ <71>)}
                  {(SQ <'Beagle Bone Black'>)}
                  {(SQ <66>)}
                  {(SQ <'NanoPi M1 Plus'>)}
                  {(SQ <65>)}
                  {(SQ <'NanoPi NEO 2'>)}
                  {(SQ <64>)}
                  {(SQ <'NanoPi NEO Air'>)}
                  {(SQ <63>)}
                  {(SQ <'NanoPi M1/T1'>)}
                  {(SQ <62>)}
                  {(SQ <'NanoPi M3/T3'>)}
                  {(SQ <61>)}
                  {(SQ <'NanoPi M2/T2'>)}
                  {(SQ <60>)}
                  {(SQ <'NanoPi Neo'>)}
                  {(SQ <13>)}
                  {(SQ <'Odroid U3'>)}
                  {(SQ <12>)}
                  {(SQ <'Odroid C2'>)}
                  {(SQ <11>)}
                  {(SQ <'Odroid XU3/4/HC1'>)}
                  {(SQ <10>)}
                  {(SQ <'Odroid C1'>)}
                  {(SQ <38>)}
                  {(SQ <'OrangePi PC 2'>)}
                  {(SQ <37>)}
                  {(SQ <'OrangePi Prime'>)}
                  {(SQ <36>)}
                  {(SQ <'OrangePi Win'>)}
                  {(SQ <35>)}
                  {(SQ <'OrangePi Zero Plus 2 (H3/H5)'>)}
                  {(SQ <34>)}
                  {(SQ <'OrangePi Plus'>)}
                  {(SQ <33>)}
                  {(SQ <'OrangePi Lite'>)}
                  {(SQ <32>)}
                  {(SQ <'OrangePi Zero (H2+)'>)}
                  {(SQ <31>)}
                  {(SQ <'OrangePi One'>)}
                  {(SQ <30>)}
                  {(SQ <'OrangePi PC'>)}
                  {(SQ <40>)}
                  {(SQ <'Pine A64'>)}
                  {(SQ <3>)}
                  {(SQ <'Raspberry Pi 3'>)}
                  {(SQ <2>)}
                  {(SQ <'Raspberry Pi 2'>)}
                  {(SQ <1>)}
                  {(SQ <'Raspberry Pi 1/Zero (512mb)'>)}
                  {(SQ <0>)}
                  {(SQ <'Raspberry Pi 1 (256mb)'>)}
                  {(SQ <43>)}
                  {(SQ <Rock64>)}
                  {(SQ <70>)}
                  {(SQ <'Sparky SBC'>)}
                  {(SQ )}
                  {
                    (SQ 
                      <
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80PC\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                      >
                    )
                  }
                  {(SQ <21>)}
                  {(SQ <'x86_64 Native PC'>)}
                  {(SQ <20>)}
                  {(SQ <'x86_64 VMware/VirtualBox'>)}
                ]
              )
            }
          spids: [1566]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_HW_MODEL)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$WHIP_RETURN_VALUE')}
          spids: [1909]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Setting G_HW_MODEL index of: '> ($ Id.VSub_DollarName '$G_HW_MODEL'))}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ <'CPU ARCH = '> ($ Id.VSub_DollarName '$G_HW_ARCH') <' : '> 
          ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION')
        )
      }
    )
    (command.Simple
      words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$G_HW_MODEL'))}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</etc/.dietpi_hw_model_identifier>}
        )
      ]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 3: Distro selection:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'Distro selection:'>)}
          spids: [1995]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'Please select a distro to install on this system. Selecting a distro that is older than the current installed on system, is not supported.'
                > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nCurrently installed:'> <Id.Lit_Other '\\'> <'n - '> 
                ($ Id.VSub_DollarName '$G_DISTRO') <' '> ($ Id.VSub_DollarName '$G_DISTRO_NAME')
              )
            }
          spids: [2001]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$G_DISTRO')}
          spids: [2016]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_LIST_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <3>)}
                  {(SQ <'Jessie (oldstable, just if you need to avoid upgrade to current release)'>)}
                  {(SQ <4>)}
                  {(SQ <'Stretch (current stable release, recommended)'>)}
                  {(SQ <5>)}
                  {(SQ <'Buster (testing only, not officially supported)'>)}
                ]
              )
            }
          spids: [2020]
        )
      ]
    )
    (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: 
                {
                  (word_part.ArithSub
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Slash
                        left: 
                          (arith_expr.ArithWord
                            w: 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                                  prefix_op: (Id.VSub_Pound)
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                )
                              }
                          )
                        right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                      )
                  )
                }
            )
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:temp_distro_available)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [2100]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:temp_distro_index)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                            right: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                          )
                      )
                    }
                  spids: [2104]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Less
                              left: 
                                (arith_expr.ArithWord
                                  w: {($ Id.VSub_DollarName '$temp_distro_index')}
                                )
                              right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_DISTRO')})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<G_DIETPI-NOTIFY>} {<2>} 
                      {
                        (DQ <'Disabled Distro downgrade: index '> 
                          ($ Id.VSub_DollarName '$temp_distro_index')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:temp_distro_available)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [2150]
                        )
                      ]
                    )
                  ]
                  spids: [2122 2136]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.ArithWord
                              w: {($ Id.VSub_DollarName '$temp_distro_available')}
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              (arith_expr.ArithWord
                                                w: 
                                                  {
                                                    (word_part.ArithSub
                                                      anode: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_Star
                                                          left: 
                                                            (arith_expr.ArithWord
                                                              w: {($ Id.VSub_DollarName '$i')}
                                                            )
                                                          right: 
                                                            (arith_expr.ArithWord
                                                              w: {<Id.Lit_Digits 2>}
                                                            )
                                                        )
                                                    )
                                                  }
                                              )
                                          )
                                      )
                                    )
                                  }
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              (arith_expr.ArithWord
                                                w: 
                                                  {
                                                    (word_part.ArithSub
                                                      anode: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_Plus
                                                          left: 
                                                            (arith_expr.Binary
                                                              op_id: Id.Arith_Star
                                                              left: 
                                                                (arith_expr.ArithWord
                                                                  w: {($ Id.VSub_DollarName '$i')}
                                                                )
                                                              right: 
                                                                (arith_expr.ArithWord
                                                                  w: {<Id.Lit_Digits 2>}
                                                                )
                                                            )
                                                          right: 
                                                            (arith_expr.ArithWord
                                                              w: {<Id.Lit_Digits 1>}
                                                            )
                                                        )
                                                    )
                                                  }
                                              )
                                          )
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [2177]
                        )
                      ]
                    )
                  ]
                  spids: [2163 2173]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<DISTRO_LIST_ARRAY>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-z>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name WHIP_MENU_ARRAY>
                      suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<x>})
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_DIETPI-NOTIFY>} {<1>} 
              {(SQ <'Error: No available Distros for this system. Aborting...'>)}
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [2244 2259]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$WHIP_RETURN_VALUE')}
          spids: [2285]
        )
      ]
    )
    (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 '$DISTRO_TARGET')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <jessie>)}
                  spids: [2307]
                )
              ]
            )
          ]
          spids: [2289 2303]
        )
        (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 '$DISTRO_TARGET')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <stretch>)}
                  spids: [2332]
                )
              ]
            )
          ]
          spids: [2314 2328]
        )
        (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 '$DISTRO_TARGET')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <buster>)}
                  spids: [2357]
                )
              ]
            )
          ]
          spids: [2339 2353]
        )
      ]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 4: APT configuration:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Removing conflicting apt sources.list.d'>)})
    (command.Simple
      words: [{<rm>} {</etc/apt/sources.list.d/deb-multimedia.list>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ <'Setting APT sources.list: '> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') <' '> 
          ($ Id.VSub_DollarName '$DISTRO_TARGET')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 2497
                  stdin_parts: [
                    <'deb https://www.mirrorservice.org/sites/archive.raspbian.org/raspbian '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <' main contrib non-free rpi\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/apt/sources.list>}
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 2514
                  stdin_parts: [
                    <'deb https://archive.raspberrypi.org/debian/ '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <' main ui\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/apt/sources.list.d/raspi.list>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Great
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$DISTRO_TARGET')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                    )
                )
                (C {<sed>} {<-i>} {(DQ <s/> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') </stretch/>)} 
                  {</etc/apt/sources.list.d/raspi.list>}
                )
              ]
            )
          ]
          spids: [2465 2479]
        )
      ]
      else_action: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir.HereDoc
              op: <Id.Redir_DLess '<<'>
              fd: -1
              here_begin: {<_EOF_>}
              here_end_span_id: 2579
              stdin_parts: [
                <'deb https://deb.debian.org/debian/ '>
                ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                <' main contrib non-free\n'>
                <'deb https://deb.debian.org/debian/ '>
                ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                <'-updates main contrib non-free\n'>
                <'deb https://deb.debian.org/debian-security/ '>
                ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                <'/updates main contrib non-free\n'>
                <'deb https://deb.debian.org/debian/ '>
                ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                <'-backports main contrib non-free\n'>
              ]
            )
            (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</etc/apt/sources.list>})
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_DISTRO')})
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<sed>} {<-i>} {(SQ <'s/https:/http:/g'>)} {</etc/apt/sources.list>})]
              spids: [2586 2600]
            )
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$DISTRO_TARGET')})
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<sed>} {<-i>} {(SQ </backports/d>)} {</etc/apt/sources.list>})]
              spids: [2620 2634]
            )
          ]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Updating APT for '> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') <':'>)}
    )
    (C {<G_RUN_CMD>} {<apt-get>} {<clean>})
    (C {<G_AGUP>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ 
          <'Marking all packages as auto installed first, to allow effective autoremove afterwards'>
        )
      }
    )
    (C {<G_RUN_CMD>} {<apt-mark>} {<auto>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {<apt-mark>} {<showmanual>})])
        )
      }
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ 
          <
'Temporary disable automatic recommends/suggests installation and allow them to be autoremoved:'
          >
        )
      }
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ </etc/apt/apt.conf.d/99-dietpi-norecommends>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 2763
          stdin_parts: [
            <'APT::Install-Recommends '>
            <Id.Right_DoubleQuote '"'>
            <false>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
            <'APT::Install-Suggests '>
            <Id.Right_DoubleQuote '"'>
            <false>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
            <'APT::AutoRemove::RecommendsImportant '>
            <Id.Right_DoubleQuote '"'>
            <false>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
            <'APT::AutoRemove::SuggestsImportant '>
            <Id.Right_DoubleQuote '"'>
            <false>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Forcing use of modified apt configs'>)})
    (C {<export>} 
      {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ </etc/apt/apt.conf.d/99-dietpi-forceconf>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 2816
          stdin_parts: [
            <'Dpkg::options {\n'>
            <'   '>
            <Id.Right_DoubleQuote '"'>
            <--force-confdef>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
            <'   '>
            <Id.Right_DoubleQuote '"'>
            <--force-confold>
            <Id.Right_DoubleQuote '"'>
            <';\n'>
            <'}\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <apt-transport-https>)}
                  {(SQ <apt-utils>)}
                  {(SQ <bash-completion>)}
                  {(SQ <bc>)}
                  {(SQ <bzip2>)}
                  {(SQ <ca-certificates>)}
                  {(SQ <console-setup>)}
                  {(SQ <cron>)}
                  {(SQ <curl>)}
                  {(SQ <dbus>)}
                  {(SQ <debconf>)}
                  {(SQ <dosfstools>)}
                  {(SQ <dphys-swapfile>)}
                  {(SQ <ethtool>)}
                  {(SQ <fake-hwclock>)}
                  {(SQ <fbset>)}
                  {(SQ <gnupg>)}
                  {(SQ <hfsplus>)}
                  {(SQ <htop>)}
                  {(SQ <initramfs-tools>)}
                  {(SQ <iputils-ping>)}
                  {(SQ <isc-dhcp-client>)}
                  {(SQ <locales>)}
                  {(SQ <nano>)}
                  {(SQ <net-tools>)}
                  {(SQ <ntfs-3g>)}
                  {(SQ <ntp>)}
                  {(SQ <p7zip-full>)}
                  {(SQ <parted>)}
                  {(SQ <psmisc>)}
                  {(SQ <resolvconf>)}
                  {(SQ <sudo>)}
                  {(SQ <systemd-sysv>)}
                  {(SQ <tzdata>)}
                  {(SQ <unzip>)}
                  {(SQ <usbutils>)}
                  {(SQ <wget>)}
                  {(SQ <whiptail>)}
                  {(SQ <wput>)}
                  {(SQ <zip>)}
                ]
              )
            }
          spids: [2832]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_DISTRO')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <dropbear>)}])}
                  spids: [3184]
                )
              ]
            )
          ]
          spids: [3166 3180]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
              op: assign_op.PlusEqual
              rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <dropbear-run>)}])}
              spids: [3200]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_GreatEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<G_AGI>} {<debian-archive-keyring>})]
          spids: [3224 3238]
        )
      ]
      else_action: [(C {<G_AGI>} {<raspbian-archive-keyring>})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 20>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_AGI>} {<firmware-realtek>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <hdparm>)}])}
                  spids: [3296]
                )
              ]
            )
          ]
          spids: [3270 3284]
        )
      ]
    )
    (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 '$G_HW_ARCH')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_AGI>} {<linux-image-amd64>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 20>})
                    )
                )
                (C {<G_AGI>} {<firmware-linux-nonfree>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<grep>} {(SQ <vendor_id>)} {</proc/cpuinfo>})
                    (C {<grep>} {<-qi>} {(SQ <intel>)})
                  ]
                  negated: F
                )
                (C {<G_AGI>} {<intel-microcode>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<grep>} {(SQ <vendor_id>)} {</proc/cpuinfo>})
                    (C {<grep>} {<-qi>} {(SQ <amd>)})
                  ]
                  negated: F
                )
                (C {<G_AGI>} {<amd64-microcode>})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DParen
                              child: 
                                (arith_expr.ArithWord
                                  w: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<dpkg>} {<--get-selections>})
                                                  (C {<grep>} {<-ci>} {<-m1>} 
                                                    {(SQ <'^grub-efi-amd64[[:space:]]'>)}
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                            )
                            (C {<Id.Lit_LBracket '['>} {<-d>} {</boot/efi>} {<Id.Lit_RBracket ']'>})
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<G_AGI>} {<grub-efi-amd64>})]
                  spids: [3440 3477]
                )
              ]
              else_action: [(C {<G_AGI>} {<grub-pc>})]
            )
          ]
          spids: [3332 3346]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<apt-mark>} {<unhold>} {<libraspberrypi-bin>} {<libraspberrypi0>} 
              {<raspberrypi-bootloader>} {<raspberrypi-kernel>} {<raspberrypi-sys-mods>} {<raspi-copies-and-fills>}
            )
            (C {<rm>} {<-R>} {</lib/modules/> <Id.Lit_Star '*'>})
            (C {<G_AGI>} {<libraspberrypi-bin>} {<libraspberrypi0>} {<raspberrypi-bootloader>} 
              {<raspberrypi-kernel>} {<raspberrypi-sys-mods>} {<raspi-copies-and-fills>} {<--reinstall>}
            )
          ]
          spids: [3513 3527]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 12>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<G_AGI>} {<linux-image-arm64-odroid-c2>})]
          spids: [3579 3593]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 11>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_AGI>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<dpkg>} {<--get-selections>})
                            (C {<grep>} {(SQ <'^linux-image'>)})
                            (C {<awk>} {(SQ <'{print $1}'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {<dpkg>} {<--get-selections>})
                                      (C {<grep>} {<-ci>} {<-m1>} {(SQ <'^linux-image'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                    )
                )
                (C {<G_AGI>} {<linux-image-armhf-odroid-xu3>})
              ]
            )
          ]
          spids: [3607 3621]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<G_AGI>} {<linux-image-armhf-odroid-c1>})]
          spids: [3689 3703]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 43>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<G_AGI>} {<linux-rock64-package>})]
          spids: [3717 3731]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 71>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<G_AGI>} {<device-tree-compiler>})]
          spids: [3745 3759]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:AUTO_DETECT_KERN_PKG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {<dpkg>} {<--get-selections>})
                              (C {<grep>} {(SQ <'^linux-image'>)})
                              (C {<awk>} {(SQ <'{print $1}'>)})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [3781]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                      {(DQ ($ Id.VSub_DollarName '$AUTO_DETECT_KERN_PKG'))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<G_AGI>} {($ Id.VSub_DollarName '$AUTO_DETECT_KERN_PKG')})]
              spids: [3805 3818]
            )
          ]
          else_action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} 
              {
                (SQ 
                  <
'Unable to find kernel packages for installation. Assuming non-APT/.deb kernel installation.'
                  >
                )
              }
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:AUTO_DETECT_DTB_PKG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {<dpkg>} {<--get-selections>})
                              (C {<grep>} {(SQ <'^linux-dtb-'>)})
                              (C {<awk>} {(SQ <'{print $1}'>)})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [3850]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                      {(DQ ($ Id.VSub_DollarName '$AUTO_DETECT_DTB_PKG'))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<G_AGI>} {($ Id.VSub_DollarName '$AUTO_DETECT_DTB_PKG')})]
              spids: [3874 3887]
            )
          ]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'WiFi selection'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'WiFi required?'>)}
          spids: [3959]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: {(SQ <'Please select an option'>)}
          spids: [3965]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [3971]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <0>)}
                  {(DQ <"I don't require WiFi, do not install.">)}
                  {(SQ <1>)}
                  {(SQ <'I require WiFi functionality, keep/install related packages.'>)}
                ]
              )
            }
          spids: [3975]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (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 '$WHIP_RETURN_VALUE')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Marking WiFi as needed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <crda>)}])}
                  spids: [4034]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-atheros>)}])}
                  spids: [4045]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-brcm80211>)}])}
                  spids: [4056]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-ralink>)}])}
                  spids: [4067]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <iw>)}])}
                  spids: [4078]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <rfkill>)}])}
                  spids: [4089]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <wireless-tools>)}])}
                  spids: [4100]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <wpasupplicant>)}])}
                  spids: [4111]
                )
              ]
            )
          ]
          spids: [4006 4020]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Generating list of minimal packages, required for DietPi installation:'>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INSTALL_PACKAGES)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [4137]
        )
      ]
    )
    (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 aPACKAGES_REQUIRED_INSTALL>
                    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.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INSTALL_PACKAGES)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name aPACKAGES_REQUIRED_INSTALL>
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                            )
                        ) <' '>
                      )
                    }
                  spids: [4175]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<aPACKAGES_REQUIRED_INSTALL>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Marking required packages as manually installed:'>)})
    (C {<G_RUN_CMD>} {<apt-mark>} {<manual>} {($ Id.VSub_DollarName '$INSTALL_PACKAGES')})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Purging APT with autoremoval:'>)})
    (C {<G_AGA>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 5: APT installations:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Upgrading existing APT installed packages:'>)})
    (C {<G_AGDUG>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_DISTRO)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
          spids: [4299]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')}
          spids: [4303]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Disabling swapfile generation for dphys-swapfile during install'>)}
    )
    (command.Simple
      words: [{<G_RUN_CMD>} {<echo>} {<-e>} {(DQ <'CONF_SWAPSIZE=0'>)}]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</etc/dphys-swapfile>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Installing core DietPi pre-req APT packages'>)})
    (C {<G_AGI>} {($ Id.VSub_DollarName '$INSTALL_PACKAGES')})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Returning installation of recommends back to default'>)})
    (C {<G_RUN_CMD>} {<rm>} {</etc/apt/apt.conf.d/99-dietpi-norecommends>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Purging APT with autoremoval (in case of DISTRO upgrade/downgrade):'>)}
    )
    (C {<G_AGA>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DAmp
                      left: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_DISTRO')})
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                        )
                      right: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 9>})
                        )
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<sed>} {<-i>} {(SQ <'s/http:/https:/g'>)} {</etc/apt/sources.list>})]
          spids: [4390 4412]
        )
      ]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 6: Downloading and installing DietPi sourcecode'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INTERNET_ADDRESS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'https://github.com/Fourdee/DietPi/archive/'> ($ Id.VSub_DollarName '$GIT_BRANCH') 
                <.zip>
              )
            }
          spids: [4476]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Checking connection to '> ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))}
    )
    (C {<G_CHECK_URL>} {(DQ ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))})
    (C {<G_RUN_CMD>} {<wget>} {(DQ ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))} {<-O>} {<package.zip>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Extracting DietPi sourcecode'>)})
    (C {<G_RUN_CMD>} {<unzip>} {<-o>} {<package.zip>})
    (C {<rm>} {<package.zip>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Removing files not required'>)})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> </CHANGELOG.txt>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> </PREP_SYSTEM_FOR_DIETPI.sh>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> </TESTING-BRANCH.md>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> </uEnv.txt>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Creating /boot'>)})
    (C {<G_RUN_CMD>} {<mkdir>} {<-p>} {</boot>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Moving to /boot'>)})
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> </boot_c1.ini>} {</boot/boot.ini>})
          ]
          spids: [4625 4639]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 11>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> </boot_xu4.ini>} {</boot/boot.ini>})
          ]
          spids: [4655 4669]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 12>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> </boot_c2.ini>} {</boot/boot.ini>})
          ]
          spids: [4685 4699]
        )
      ]
    )
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> </> <Id.Lit_Star '*'> <.ini>})
    (C {<G_RUN_CMD>} {<cp>} {<-R>} {<DietPi-> <Id.Lit_Star '*'> </> <Id.Lit_Star '*'>} {</boot/>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Cleaning up extracted files'>)})
    (C {<G_RUN_CMD>} {<rm>} {<-R>} {<DietPi-> <Id.Lit_Star '*'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Setting execute permissions for /boot/dietpi'>)})
    (C {<G_RUN_CMD>} {<chmod>} {<-R>} {<Id.Lit_Other '+'> <x>} {</boot/dietpi>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Step 7: Prep system for DietPi ENV:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Deleting list of known users, not required by DietPi'>)})
    (command.Simple
      words: [{<userdel>} {<-f>} {<pi>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<test>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<odroid>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<rock64>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<linaro>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<dietpi>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<debian>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Removing misc files/folders/services, not required by DietPi'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {</home>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</media>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</selinux>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</var/www/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/src/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</root/.cache/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</root/.local/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</root/.config/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/man>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/doc>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/doc-base>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/calendar>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</var/cache/debconf/> <Id.Lit_Star '*'> <-old>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/fonts/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {<-R>} {</usr/share/icons/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/init.d/resize2fs>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/update-motd.d/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<firstrun>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/init.d/firstrun>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<log2ram.service>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<systemctl>} {<stop>} {<log2ram.service>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</usr/local/sbin/log2ram>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/systemd/system/log2ram.service>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<systemctl>} {<daemon-reload>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/cron.hourly/log2ram>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/init.d/cpu_governor>} {<Meveric>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_AndGreat '&>'>
          fd: -1
          arg_word: {</dev/null> <Id.Lit_Pound '#'>}
        )
      ]
    )
    (command.Simple
      words: [{<rm>} {</etc/systemd/system/cpu_governor.service>} {<Meveric>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_AndGreat '&>'>
          fd: -1
          arg_word: {</dev/null> <Id.Lit_Pound '#'>}
        )
      ]
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<resize2fs>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/systemd/system/resize2fs.service>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/profile.d/check_first_login_reboot.sh>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Creating DietPi core environment'>)})
    (C {<G_RUN_CMD>} {</boot/dietpi/func/dietpi-set_core_environment>})
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'Samba client can be installed and setup by DietPi-Config.'> <Id.Lit_Other '\\'> 
            <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</mnt/samba/readme.txt>})]
    )
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'FTP client mount can be installed and setup by DietPi-Config.'> <Id.Lit_Other '\\'> 
            <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</mnt/ftp_client/readme.txt>})]
    )
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'NFS client can be installed and setup by DietPi-Config.'> <Id.Lit_Other '\\'> 
            <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</mnt/nfs_client/readme.txt>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Deleting all log files /var/log'>)})
    (command.Simple
      words: [{</boot/dietpi/dietpi-logclear>} {<2>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Generating DietPi /etc/fstab'>)})
    (C {<G_RUN_CMD>} {</boot/dietpi/dietpi-drive_manager>} {<4>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PARTUUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {<blkid>} {</dev/mmcblk0p1>} {<-s>} {<PARTUUID>} {<-o>} {<value>})
                            ]
                          )
                      )
                    }
                  spids: [5444]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:UUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {<blkid>} {</dev/mmcblk0p1>} {<-s>} {<UUID>} {<-o>} {<value>})
                            ]
                          )
                      )
                    }
                  spids: [5460]
                )
              ]
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'s#^UUID='> ($ Id.VSub_DollarName '$UUID_CURRENT') <'#PARTUUID='> 
                  ($ Id.VSub_DollarName '$PARTUUID_CURRENT') <'#g'>
                )
              } {</etc/fstab>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PARTUUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {<blkid>} {</dev/mmcblk0p2>} {<-s>} {<PARTUUID>} {<-o>} {<value>})
                            ]
                          )
                      )
                    }
                  spids: [5492]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:UUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {<blkid>} {</dev/mmcblk0p2>} {<-s>} {<UUID>} {<-o>} {<value>})
                            ]
                          )
                      )
                    }
                  spids: [5508]
                )
              ]
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'s#^UUID='> ($ Id.VSub_DollarName '$UUID_CURRENT') <'#PARTUUID='> 
                  ($ Id.VSub_DollarName '$PARTUUID_CURRENT') <'#g'>
                )
              } {</etc/fstab>}
            )
            (C {<systemctl>} {<daemon-reload>})
          ]
          spids: [5426 5440]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Starting DietPi-RAMdisk service'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<start>} {<dietpi-ramdisk.service>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Starting DietPi-RAMlog service'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<start>} {<dietpi-ramlog.service>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Updating DietPi HW_INFO'>)})
    (C {</DietPi/dietpi/dietpi-obtain_hw_model>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring Network:'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {</etc/network/interfaces>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_RUN_CMD>} {<cp>} {</boot/dietpi/conf/network_interfaces>} {</etc/network/interfaces>})
    (command.Simple
      words: [{<rm>} {</etc/udev/rules.d/70-persistent-net.rules>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</etc/udev/rules.d/70-persistant-net.rules>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 32>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<sed>} {<-i>} 
              {
                (SQ 
                  <
'/iface wlan0 inet dhcp/apre-up modprobe xradio_wlan\\npre-up iwconfig wlan0 power on'
                  >
                )
              } {</etc/network/interfaces>}
            )
          ]
          spids: [5666 5680]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Tweaking DHCP timeout:'>)})
    (C {<sed>} {<-i>} {(SQ <'/^#timeout /d'>)} {</etc/dhcp/dhclient.conf>})
    (C {<sed>} {<-i>} {(SQ <'/^#retry /d'>)} {</etc/dhcp/dhclient.conf>})
    (C {<sed>} {<-i>} {(SQ <'/^timeout /d'>)} {</etc/dhcp/dhclient.conf>})
    (C {<sed>} {<-i>} {(SQ <'/^retry /d'>)} {</etc/dhcp/dhclient.conf>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 5771
          stdin_parts: [<'timeout 10;\n'> <'retry 4;\n'>]
        )
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{</etc/dhcp/dhclient.conf>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring hosts:'>)})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ </etc/hosts>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 5808
          stdin_parts: [
            <'127.0.0.1    localhost\n'>
            <'127.0.1.1    DietPi\n'>
            <'::1          localhost ip6-localhost ip6-loopback\n'>
            <'ff02::1      ip6-allnodes\n'>
            <'ff02::2      ip6-allrouters\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ </etc/hostname>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 5840
          stdin_parts: [<'DietPi\n'>]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring htop:'>)})
    (C {<mkdir>} {<-p>} {</root/.config/htop>})
    (C {<cp>} {</DietPi/dietpi/conf/htoprc>} {</root/.config/htop/htoprc>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring hdparm:'>)})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ </etc/hdparm.conf>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 5915
          stdin_parts: [
            <'\n'>
            <'#DietPi external USB drive. Power management settings.\n'>
            <'/dev/sda {\n'>
            <'        #10 mins\n'>
            <'        spindown_time = 120\n'>
            <'\n'>
            <'        #\n'>
            <'        apm = 254\n'>
            <'}\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_DGreat '>>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring fakehwclock:'>)})
    (C {<sed>} {<-i>} {(DQ <'/FORCE=/c'> <Id.Lit_Other '\\'> <'FORCE=force'>)} 
      {</etc/default/fake-hwclock>}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring serial consoles:'>)})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<serialconsole>} {<disable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring ntpd:'>)})
    (C {<systemctl>} {<disable>} {<systemd-timesyncd>})
    (command.Simple
      words: [{<rm>} {</etc/init.d/ntp>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DParen
          child: 
            (arith_expr.Binary
              op_id: Id.Arith_Great
              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_DISTRO')})
              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
            )
        )
        (C {<systemctl>} {<mask>} {<ntp>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring regional settings (TZdata):'>)})
    (command.Simple
      words: [{<rm>} {</etc/timezone>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<rm>} {</etc/localtime>})
    (C {<ln>} {<-fs>} {</usr/share/zoneinfo/Europe/London>} {</etc/localtime>})
    (C {<G_RUN_CMD>} {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<tzdata>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring regional settings (Keyboard):'>)})
    (C {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<keyboard-configuration>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Applying G_HW_ARCH specific tweaks:'>)})
    (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 '$G_HW_ARCH')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<dpkg>} {<--add-architecture>} {<i386>})
            (C {<G_AGUP>})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6169
                  stdin_parts: [
                    <'blacklist nouveau\n'>
                    <'blacklist lbm-nouveau\n'>
                    <'options nouveau modeset=0\n'>
                    <'alias nouveau off\n'>
                    <'alias lbm-nouveau off\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/modprobe.d/blacklist-nouveau.conf>}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'options nouveau modeset=0'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/modprobe.d/nouveau-kms.conf>}
                )
              ]
            )
            (C {<update-initramfs>} {<-u>})
          ]
          spids: [6116 6130]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Appling G_HW_MODEL specific tweaks:'>)})
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 35>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'blacklist bmp085'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/modprobe.d/bmp085.conf>}
                )
              ]
            )
          ]
          spids: [6212 6226]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 70>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<wget>} 
              {<https> <Id.Lit_Other ':'> 
                <//raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/uImage>
              } {<-O>} {</boot/uImage>}
            )
            (C {<wget>} 
              {<https> <Id.Lit_Other ':'> 
                <
//raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/3.10.38.bz2
                >
              } {<-O>} {<package.tar>}
            )
            (C {<tar>} {<xvf>} {<package.tar>} {<-C>} {</lib/modules/>})
            (C {<rm>} {<package.tar>})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6322
                  stdin_parts: [
                    <'uenvcmd=setenv os_type linux;\n'>
                    <
'bootargs=earlyprintk clk_ignore_unused selinux=0 scandelay console=tty0 loglevel=1 real_rootflag=rw root=/dev/mmcblk0p2 rootwait init=/lib/systemd/systemd aotg.urb_fix=1 aotg.aotg1_speed=0\n'
                    >
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</DietPi/uEnv.txt>}
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6346
                  stdin_parts: [
                    <'blacklist owl_camera\n'>
                    <'blacklist gsensor_stk8313\n'>
                    <'blacklist ctp_ft5x06\n'>
                    <'blacklist ctp_gsl3680\n'>
                    <'blacklist gsensor_bma222\n'>
                    <'blacklist gsensor_mir3da\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/modprobe.d/disable_sparkysbc_touchscreen.conf>}
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6364
                  stdin_parts: [
                    <'blacklist pvrsrvkm\n'>
                    <'blacklist drm\n'>
                    <'blacklist videobuf2_vmalloc\n'>
                    <'blacklist bc_example\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/modprobe.d/disable_sparkysbc_gpu.conf>}
                )
              ]
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'/^CONFIG_CPU_GOVERNOR=/c'> <Id.Lit_Other '\\'> 
                  <'CONFIG_CPU_GOVERNOR=performance'>
                )
              } {</DietPi/dietpi.txt>}
            )
            (C {</DietPi/dietpi/dietpi-cpu_set>})
          ]
          spids: [6248 6262]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6438
                  stdin_parts: [
                    <'ACTION=='>
                    <Id.Right_DoubleQuote '"'>
                    <add>
                    <Id.Right_DoubleQuote '"'>
                    <', SUBSYSTEM=='>
                    <Id.Right_DoubleQuote '"'>
                    <leds>
                    <Id.Right_DoubleQuote '"'>
                    <', ENV{DEVPATH}=='>
                    <Id.Right_DoubleQuote '"'>
                    <'*/input*::scrolllock'>
                    <Id.Right_DoubleQuote '"'>
                    <', ATTR{trigger}='>
                    <Id.Right_DoubleQuote '"'>
                    <kbd-scrollock>
                    <Id.Right_DoubleQuote '"'>
                    <'\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/udev/rules.d/50-leds.rules>}
                )
              ]
            )
          ]
          spids: [6392 6406]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 40>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6481
                  stdin_parts: [
                    <'infocmp > terminfo.txt\n'>
                    <"sed -i -e 's/?0c/?112c/g' -e 's/?8c/?48;0;64c/g' terminfo.txt\n">
                    <'tic terminfo.txt\n'>
                    <'tput cnorm\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$HOME')) </.bashrc>}
                )
              ]
            )
          ]
          spids: [6445 6459]
        )
        (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 11>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<_EOF_>}
                  here_end_span_id: 6525
                  stdin_parts: [
                    <'Package: *\n'>
                    <'Pin: release a=jessie-backports\n'>
                    <'Pin: origin '>
                    <Id.Right_DoubleQuote '"'>
                    <fuzon.co.uk>
                    <Id.Right_DoubleQuote '"'>
                    <'\n'>
                    <'Pin-Priority: 99\n'>
                  ]
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {</etc/apt/preferences.d/backports>}
                )
              ]
            )
          ]
          spids: [6488 6502]
        )
      ]
    )
    (command.Simple
      words: [{<sed>} {<-i>} {(SQ <'/verbosity=/c\\verbosity=7'>)} {</boot/armbianEnv.txt>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Step 8: Finalise system for first run of DietPi:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Configuring Dropbear:'>)})
    (C {<sed>} {<-i>} {(SQ <'/NO_START=1/c\\NO_START=0'>)} {</etc/default/dropbear>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Configuring Services'>)})
    (C {</DietPi/dietpi/dietpi-services>} {<stop>})
    (C {</DietPi/dietpi/dietpi-services>} {<dietpi_controlled>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Running general cleanup of misc files'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {</tmp/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) </.bash_history>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) </.nano_history>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling swapfile'>)})
    (C {</DietPi/dietpi/func/dietpi-set_dphys-swapfile>} {<0>} {</var/swap>})
    (command.Simple
      words: [{<rm>} {</var/swap>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 71>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<sed>} {<-i>} {(SQ <'/AUTO_SETUP_SWAPFILE_SIZE=/c\\AUTO_SETUP_SWAPFILE_SIZE=0'>)} 
              {</DietPi/dietpi.txt>}
            )
          ]
          spids: [6735 6749]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Resetting boot.ini, config.txt, cmdline.txt etc'>)})
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 40>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<sed>} {<-i>} {(SQ <'/^ethaddr/ d'>)} {</boot/uEnv.txt>})]
          spids: [6783 6797]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {</boot/cmdline.txt>} {<Id.Lit_RBracket ']'>})
        (C {<sed>} {<-i>} {(DQ <'s/ rootdelay=10//g'>)} {</boot/cmdline.txt>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating default wpa_supplicant.conf'>)})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<wificreds>} {<Id.KW_Set set>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling generic WiFi/BT by default'>)})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<bluetooth>} {<disable>})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<wifimodules>} {<disable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Enabling onboard WiFi modules by default'>)})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<wifimodules>} {<onboard_enable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling soundcards by default'>)})
    (C {</DietPi/dietpi/func/dietpi-set_hardware>} {<soundcard>} {<none>})
    (C {<G_AGP>} {<alsa-utils>})
    (C {<G_AGA>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Setting default CPU gov'>)})
    (C {</DietPi/dietpi/dietpi-cpu_set>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Clearing log files'>)})
    (C {</DietPi/dietpi/dietpi-logclear>} {<2>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Deleting DietPi-RAMlog storage'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {</var/lib/dietpi/dietpi-ramlog/storage/> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Deleting NTP drift file'>)})
    (command.Simple
      words: [{<rm>} {</var/lib/ntp/ntp.drift>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Resetting DietPi generated globals/files'>)})
    (C {<rm>} {</DietPi/dietpi/.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Setting DietPi-Autostart to console'>)})
    (command.Simple
      words: [{<echo>} {<0>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</DietPi/dietpi/.dietpi-autostart_index>}
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Creating our update file (used on 1st run to check for DietPi updates)'>)}
    )
    (command.Simple
      words: [{<echo>} {<-1>}]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</DietPi/dietpi/.update_stage>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Set Init .install_stage to -1 (first boot)'>)})
    (command.Simple
      words: [{<echo>} {<-1>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</DietPi/dietpi/.install_stage>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Remove server_version / patch_file (downloads fresh from dietpi-update)'>)}
    )
    (command.Simple
      words: [{<rm>} {</DietPi/dietpi/patch_file>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {</DietPi/dietpi/server_version> <Id.Lit_Star '*'>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Clearing APT cache'>)})
    (C {<G_RUN_CMD>} {<apt-get>} {<clean>})
    (C {<rm>} {<-R>} {</var/lib/apt/lists/> <Id.Lit_Star '*'>} {<-vf>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 10>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<rm>} {</etc/.dietpi_hw_model_identifier>})]
          spids: [7173 7187]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating dietpi-fs_partition_resize for first boot'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 7238
          stdin_parts: [
            <'[Unit]\n'>
            <'Description=dietpi-fs_partition_resize\n'>
            <'Before=dietpi-ramdisk.service\n'>
            <'\n'>
            <'[Service]\n'>
            <'Type=oneshot\n'>
            <'RemainAfterExit=no\n'>
            <
"ExecStart=/bin/bash -c '/var/lib/dietpi/fs_partition_resize.sh | tee /var/tmp/dietpi/logs/fs_partition_resize.log'\n"
            >
            <'StandardOutput=tty\n'>
            <'\n'>
            <'[Install]\n'>
            <'WantedBy=local-fs.target\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</etc/systemd/system/dietpi-fs_partition_resize.service>}
        )
      ]
    )
    (C {<systemctl>} {<daemon-reload>})
    (C {<G_RUN_CMD>} {<systemctl>} {<enable>} {<dietpi-fs_partition_resize.service>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 7339
          stdin_parts: [
            <'#!/bin/bash\n'>
            <'\n'>
            <'systemctl disable dietpi-fs_partition_resize.service\n'>
            <'systemctl enable dietpi-fs_expand.service\n'>
            <'systemctl daemon-reload\n'>
            <'\n'>
            <'sync\n'>
            <'\n'>
            <'TARGET_PARTITION=0\n'>
            <'TARGET_DEV='>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <'(findmnt / -o source -n)\n'>
            <'\n'>
            <'# - MMCBLK[0-9]p[0-9] scrape\n'>
            <'if [[ '>
            <Id.Right_DoubleQuote '"'>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <TARGET_DEV>
            <Id.Right_DoubleQuote '"'>
            <' = *'>
            <Id.Right_DoubleQuote '"'>
            <mmcblk>
            <Id.Right_DoubleQuote '"'>
            <'* ]]; then\n'>
            <'\n'>
            <'    TARGET_DEV='>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"(findmnt / -o source -n | sed 's/p[0-9]">
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"//')\n">
            <'\tTARGET_PARTITION='>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"(findmnt / -o source -n | sed 's/.*p//')\n">
            <'\n'>
            <'# - Everything else scrape (eg: /dev/sdX[0-9])\n'>
            <'else\n'>
            <'\n'>
            <'    TARGET_DEV='>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"(findmnt / -o source -n | sed 's/[0-9]">
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"//')\n">
            <'\tTARGET_PARTITION='>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"(findmnt / -o source -n | sed 's|/dev/sd.||')\n">
            <'\n'>
            <'fi\n'>
            <'\n'>
            <'cat << _EOF_1 | fdisk '>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <'TARGET_DEV\n'>
            <'p\n'>
            <'d\n'>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <'TARGET_PARTITION\n'>
            <'n\n'>
            <'p\n'>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <'TARGET_PARTITION\n'>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <'(parted '>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <
"TARGET_DEV -ms unit s p | grep ':ext4::;' | sed 's/:/ /g' | sed 's/s//g' | awk '{ print "
            >
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <"2 }')\n">
            <'\n'>
            <'p\n'>
            <'w\n'>
            <'\n'>
            <'_EOF_1\n'>
            <'\n'>
            <'reboot\n'>
            <'\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</var/lib/dietpi/fs_partition_resize.sh>}
        )
      ]
    )
    (C {<G_RUN_CMD>} {<chmod>} {<Id.Lit_Other '+'> <x>} {</var/lib/dietpi/fs_partition_resize.sh>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating dietpi-fs_partition_expand for subsequent boot'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 7391
          stdin_parts: [
            <'[Unit]\n'>
            <'Description=dietpi-fs_expand\n'>
            <'Before=dietpi-ramdisk.service\n'>
            <'\n'>
            <'[Service]\n'>
            <'Type=oneshot\n'>
            <'RemainAfterExit=no\n'>
            <'ExecStart=/bin/bash -c '>
            <Id.Right_DoubleQuote '"'>
            <'resize2fs '>
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
            <
'(findmnt / -o source -n) &> /var/tmp/dietpi/logs/fs_expand.log; systemctl disable dietpi-fs_expand.service; systemctl daemon-reload'
            >
            <Id.Right_DoubleQuote '"'>
            <'\n'>
            <'StandardOutput=tty\n'>
            <'\n'>
            <'[Install]\n'>
            <'WantedBy=local-fs.target\n'>
          ]
        )
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {</etc/systemd/system/dietpi-fs_expand.service>}
        )
      ]
    )
    (C {<systemctl>} {<daemon-reload>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Storing DietPi version ID'>)})
    (C {<G_RUN_CMD>} {<wget>} 
      {<https> <Id.Lit_Other ':'> <//raw.githubusercontent.com/Fourdee/DietPi/> 
        ($ Id.VSub_DollarName '$GIT_BRANCH') </dietpi/.version>
      } {<-O>} {</DietPi/dietpi/.version>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CORE_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<sed>} {<-n>} {<1p>} {</DietPi/dietpi/.version>})]
                  )
              )
            }
          spids: [7446]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUB_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<sed>} {<-n>} {<2p>} {</DietPi/dietpi/.version>})]
                  )
              )
            }
          spids: [7458]
        )
      ]
    )
    (command.DParen
      child: 
        (arith_expr.UnaryAssign
          op_id: Id.Node_PostDMinus
          child: (sh_lhs_expr.Name name:SUB_VERSION)
        )
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<_EOF_>}
          here_end_span_id: 7492
          stdin_parts: [
            ($ Id.VSub_DollarName '$CORE_VERSION')
            <'\n'>
            ($ Id.VSub_DollarName '$SUB_VERSION')
            <'\n'>
          ]
        )
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</DietPi/dietpi/.version>})
      ]
    )
    (C {<G_RUN_CMD>} {<cp>} {</DietPi/dietpi/.version>} {</var/lib/dietpi/.dietpi_image_version>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (command.DParen
                      child: 
                        (arith_expr.ArithWord
                          w: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<dpkg>} {<--get-selections>})
                                          (C {<grep>} {<-ci>} {<-m1>} 
                                            {(SQ <'^grub-efi-amd64[[:space:]]'>)}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                    )
                    (C {<Id.Lit_LBracket '['>} {<-d>} {</boot/efi>} {<Id.Lit_RBracket ']'>})
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Recreating GRUB-EFI'>)})
            (C {<G_RUN_CMD>} {<grub-install>} {<--target> <Id.Lit_Equals '='> <x86_64-efi>} 
              {<--efi-directory> <Id.Lit_Equals '='> </boot/efi>} {<--bootloader-id> <Id.Lit_Equals '='> <arch_grub>} {<--recheck>}
            )
          ]
          spids: [7509 7546]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Sync changes to disk. Please wait, this may take some time...'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramlog>})
    (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramdisk>})
    (C {<sync>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Please check and delete all non-required folders in /root/.xxxxxx'>)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Please delete outdated modules'>)})
    (C {<ls>} {<-lha>} {</lib/modules>})
    (C {<G_DIETPI-NOTIFY>} {<0>} 
      {
        (DQ 
          <
'Completed, disk can now be saved to .img for later use, or, reboot system to start first run of DietPi:'
          >
        )
      }
    )
    (C {<rm>} {<dietpi-globals>})
    (C {<rm>} {<PREP_SYSTEM_FOR_DIETPI.sh>})
  ]
)