(command.CommandList
  children: [
    (C {(.)} {(${ Id.VSub_Name BACKEND) (/functions.sh)})
    (C {(.)} {(${ Id.VSub_Name BACKEND) (/functions-networking.sh)})
    (C {(.)} {(${ Id.VSub_Name BACKEND) (/functions-parse.sh)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} {(DQ (${ Id.VSub_Number 1))} 
              {(Id.Lit_RBracket ']')}
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('ERROR: Install configuration ') ($ Id.VSub_Number '$1') (' does not exist!'))}
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:141)
              arg_word: {(1)}
            )
          ]
          spids: [113 129]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CONF)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Number 1)}
          spids: [151]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INSTALL_CFG)
          op: assign_op.Equal
          rhs: {(DQ (/tmp/pc-sysinstall.cfg))}
          spids: [156]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PCCFG)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:166)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(grep)} {(DQ ('pc_config:'))} {(${ Id.VSub_Name CONF)})
                          (C {(grep)} {(-v)} {(DQ ('^#'))})
                          (C {(sed)} {(DQ ('s|pc_config: ||g'))})
                          (C {(sed)} {(DQ ('s|pc_config:||g'))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [165]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SHUTDOWN_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:207)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(grep)} {(DQ ('shutdown_cmd:'))} {(${ Id.VSub_Name CONF)})
                          (C {(grep)} {(-v)} {(DQ ('^#'))})
                          (C {(sed)} {(DQ ('s|shutdown_cmd: ||g'))})
                          (C {(sed)} {(DQ ('s|shutdown_cmd:||g'))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [206]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CONFIRM_INS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:248)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(grep)} {(DQ ('confirm_install:'))} {(${ Id.VSub_Name CONF)})
                          (C {(grep)} {(-v)} {(DQ ('^#'))})
                          (C {(sed)} {(DQ ('s|confirm_install: ||g'))})
                          (C {(sed)} {(DQ ('s|confirm_install:||g'))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [247]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(echo)} {(DQ (${ Id.VSub_Name PCCFG))})
        (command.Simple
          words: [{(grep)} {(-q)} {(-e)} {(DQ ('^http'))} {(-e)} {(DQ ('^ftp'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:318)
              fd: 2
              arg_word: {(/dev/null)}
            )
          ]
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                      {(DQ (${ Id.VSub_Name INSTALL_CFG))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [(C {(cp)} {(${ Id.VSub_Name PCCFG)} {(${ Id.VSub_Name INSTALL_CFG)})]
                  spids: [340 357]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                      {(DQ (${ Id.VSub_Name INSTALL_CFG))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Error: ') (${ Id.VSub_Name INSTALL_CFG) 
                          (' is missing! Exiting in 10 seconds...')
                        )
                      }
                    )
                    (C {(sleep)} {(10)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:414)
                      arg_word: {(150)}
                    )
                  ]
                  spids: [378 395]
                )
              ]
            )
          ]
          spids: [321 333]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:NICCFG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:429)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {(grep)} {(DQ ('nic_config:'))} {(${ Id.VSub_Name CONF)})
                              (C {(grep)} {(-v)} {(DQ ('^#'))})
                              (C {(sed)} {(DQ ('s|nic_config: ||g'))})
                              (C {(sed)} {(DQ ('s|nic_config:||g'))})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [428]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name NICCFG))} {(Id.Lit_Equals '=')} 
                  {(DQ (dhcp-all))} {(-o)} {(DQ (${ Id.VSub_Name NICCFG))} {(Id.Lit_Equals '=')} {(DQ (DHCP-ALL))} {(Id.Lit_RBracket ']')}
                )
              ]
              action: [(C {(enable_auto_dhcp)})]
              spids: [470 503]
            )
          ]
          else_action: [
            (C {(echo)} 
              {
                (DQ ('Running command ') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:520)
                  ) ('ifconfig ') (${ Id.VSub_Name NICCFG) 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:525)
                  )
                )
              }
            )
            (C {(ifconfig)} {(${ Id.VSub_Name NICCFG)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WRKNIC)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_Backtick val:'`' span_id:538)
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {(${ Id.VSub_Name NICCFG)})
                                    (C {(cut)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:554))} 
                                      {(-f)} {(1)}
                                    )
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      )
                    }
                  spids: [536]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NICDNS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:565)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(grep)} {(DQ ('nic_dns:'))} {(${ Id.VSub_Name CONF)})
                                  (C {(grep)} {(-v)} {(DQ ('^#'))})
                                  (C {(sed)} {(DQ ('s|nic_dns: ||g'))})
                                  (C {(sed)} {(DQ ('s|nic_dns:||g'))})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [564]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NICGATE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:607)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(grep)} {(DQ ('nic_gateway:'))} {(${ Id.VSub_Name CONF)})
                                  (C {(grep)} {(-v)} {(DQ ('^#'))})
                                  (C {(sed)} {(DQ ('s|nic_gateway: ||g'))})
                                  (C {(sed)} {(DQ ('s|nic_gateway:||g'))})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [606]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('nameserver ') (${ Id.VSub_Name NICDNS))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:658)
                  fd: -1
                  arg_word: {(/etc/resolv.conf)}
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ('Running command ') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:667)
                  ) ('route add default ') (${ Id.VSub_Name NICGATE) 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:672)
                  )
                )
              }
            )
            (C {(route)} {(add)} {(default)} {(${ Id.VSub_Name NICGATE)})
          ]
        )
        (C {(get_nic_mac)} {(DQ ($ Id.VSub_DollarName '$WRKNIC'))})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:nic_mac)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name FOUNDMAC))}
              spids: [698]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:PCCFG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:708)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {(echo)} {(${ Id.VSub_Name PCCFG)})
                              (C {(sed)} {(DQ ('s|%%NIC_MAC%%|') (${ Id.VSub_Name nic_mac) ('|g'))})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [707]
            )
          ]
        )
        (C {(echo)} 
          {
            (DQ ('Fetching cfg with: ') 
              (word_part.EscapedLiteral
                token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:740)
              ) ('fetch -o ') (${ Id.VSub_Name INSTALL_CFG) (' ') (${ Id.VSub_Name PCCFG) 
              (word_part.EscapedLiteral
                token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:749)
              )
            )
          }
        )
        (C {(fetch)} {(-o)} {(DQ (${ Id.VSub_Name INSTALL_CFG))} {(DQ (${ Id.VSub_Name PCCFG))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')})
              ]
              action: [
                (C {(echo)} 
                  {(DQ ('ERROR: Failed to fetch ') (${ Id.VSub_Name PCCFG) (', install aborted'))}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:797)
                  arg_word: {(150)}
                )
              ]
              spids: [770 783]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ (${ Id.VSub_Name INSTALL_CFG))} 
              {(Id.Lit_RBracket ']')}
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name CONFIRM_INS))} 
                      {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (no))} {(-a)} {(DQ (${ Id.VSub_Name CONFIRM_INS))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (NO))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ 
                          (
"Type in 'install' to begin automated installation. Warning: Data on target disks may be destroyed!"
                          )
                        )
                      }
                    )
                    (C {(read)} {(tmp)})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$tmp')}
                      arms: [
                        (case_arm
                          pat_list: [{(install)} {(INSTALL)}]
                          spids: [887 890 892 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.Sentence
                              child: (C {(echo)} {(DQ ('Install canceled!'))})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:904)
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:906)
                              arg_word: {(150)}
                            )
                          ]
                          spids: [895 896 910 -1]
                        )
                      ]
                    )
                  ]
                  spids: [830 865]
                )
              ]
            )
            (C {(pc-sysinstall)} {(-c)} {(${ Id.VSub_Name INSTALL_CFG)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Id.Lit_LBracket '[')} {(-n)} 
                              {(DQ ($ Id.VSub_DollarName '$SHUTDOWN_CMD'))} {(Id.Lit_RBracket ']')}
                            )
                          ]
                          action: [(C {(${ Id.VSub_Name SHUTDOWN_CMD)})]
                          spids: [945 958]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(DQ ('SUCCESS: Installation finished! Press ENTER to reboot.'))})
                        (C {(read)} {(tmp)})
                        (C {(shutdown)} {(-r)} {(now)})
                      ]
                    )
                  ]
                  spids: [929 942]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('ERROR: Installation failed, press ENTER to drop to shell.'))})
                (C {(read)} {(tmp)})
                (C {(/bin/csh)})
              ]
            )
          ]
          spids: [811 825]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('ERROR: Failed to get /tmp/pc-sysinstall.cfg for automated install...'))})
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:1024)
          arg_word: {(150)}
        )
      ]
    )
  ]
)