(command.CommandList
  children: [
    (command.ShFunction
      name: smallyes
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:YES)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Number 1>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<y>})
                        )
                      )
                    }
                  spids: [11]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$YES'))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: in_path
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'OLD_IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <':'>)}
                  spids: [61]
                )
              ]
            )
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$PATH')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-x>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_Number '$1'))
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$OLD_IFS'))}
                                  spids: [97]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [79 94]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$OLD_IFS'))}
                  spids: [114]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: error
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'err='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number '$3'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'E: '> ($ Id.VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'EA: '> ($ Id.VSub_DollarName '$x'))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                            )
                            (C {<echo>} {(DQ <'EF: '> ($ Id.VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [176 187]
                )
              ]
              else_action: [
                (command.Subshell
                  child: 
                    (C {<printf>} 
                      {(DQ <'E: '> ($ Id.VSub_DollarName '$fmt') <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '$@'))}
                    )
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$err')}
            )
          ]
        )
    )
    (command.ShFunction
      name: warning
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number '$2'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'W: '> ($ Id.VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'WA: '> ($ Id.VSub_DollarName '$x'))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                            )
                            (C {<echo>} {(DQ <'WF: '> ($ Id.VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [301 312]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ <'W: '> ($ Id.VSub_DollarName '$fmt') <Id.Lit_BadBackslash '\\'> <n>)}
                    {(DQ ($ Id.VSub_At '$@'))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: info
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number '$2'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} {(DQ <'I: '> ($ Id.VSub_DollarName '$name'))})
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'IA: '> ($ Id.VSub_DollarName '$x'))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                            )
                            (C {<echo>} {(DQ <'IF: '> ($ Id.VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                    )
                  ]
                  spids: [419 430]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ <'I: '> ($ Id.VSub_DollarName '$fmt') <Id.Lit_BadBackslash '\\'> <n>)}
                    {(DQ ($ Id.VSub_At '$@'))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRESS_NOW)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [503]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRESS_END)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [506]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRESS_NEXT)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [509]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRESS_WHAT)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [513]
        )
      ]
    )
    (command.ShFunction
      name: progress_next
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROGRESS_NEXT)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [526]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: wgetprogress
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:QSWITCH)
                      op: assign_op.Equal
                      rhs: {(DQ <-q>)}
                      spids: [554]
                    )
                  ]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'ret='> <0>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName '$PROGRESS_NEXT'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          words: [{<wget>} {(DQ ($ Id.VSub_At '$@'))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName '$PKGDETAILS')}
                            {(DQ <'WGET%'>)}
                            {($ Id.VSub_DollarName '$PROGRESS_NOW')}
                            {($ Id.VSub_DollarName '$PROGRESS_NEXT')}
                            {($ Id.VSub_DollarName '$PROGRESS_END')}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<3>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      negated: F
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ret)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [620]
                        )
                      ]
                    )
                  ]
                  spids: [566 587]
                )
              ]
              else_action: [
                (C {<wget>} {($ Id.VSub_DollarName '$QSWITCH')} {(DQ ($ Id.VSub_At '$@'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ret)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [637]
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$ret')}
            )
          ]
        )
    )
    (command.ShFunction
      name: progress
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number '$3'))})
            (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number '$4'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$USE_DEBIANINSTALLER_INTERACTION'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROGRESS_NOW)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$now'))}
                          spids: [721]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROGRESS_END)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$end'))}
                          spids: [727]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PROGRESS_NEXT)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [733]
                        )
                      ]
                    )
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (C {<echo>} 
                              {
                                (DQ <'P: '> ($ Id.VSub_DollarName '$now') <' '> 
                                  ($ Id.VSub_DollarName '$end') <' '> ($ Id.VSub_DollarName '$name')
                                )
                              }
                            )
                            (command.ForEach
                              iter_names: [x]
                              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Sentence
                                      child: (C {<echo>} {(DQ <'PA: '> ($ Id.VSub_DollarName '$x'))})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                            )
                            (C {<echo>} {(DQ <'PF: '> ($ Id.VSub_DollarName '$fmt'))})
                          ]
                        )
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                    )
                  ]
                  spids: [707 718]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: dpkg_progress
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number '$3'))})
            (C {<local>} {<Id.Lit_VarLike 'desc='> (DQ ($ Id.VSub_Number '$4'))})
            (C {<local>} {<Id.Lit_VarLike 'action='> (DQ ($ Id.VSub_Number '$5'))})
            (C {<local>} {<Id.Lit_VarLike 'expect='>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$action'))} 
                              {<Id.Lit_Equals '='>} {<UNPACKING>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:expect)
                          op: assign_op.Equal
                          rhs: {<half-installed>}
                          spids: [868]
                        )
                      ]
                    )
                  ]
                  spids: [850 865]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$action'))} 
                              {<Id.Lit_Equals '='>} {<CONFIGURING>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:expect)
                          op: assign_op.Equal
                          rhs: {<half-configured>}
                          spids: [890]
                        )
                      ]
                    )
                  ]
                  spids: [872 887]
                )
              ]
            )
            (command.ShFunction
              name: dp
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:now)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName '$now')}
                                      right: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Number 1>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VTest_ColonHyphen ':-'>
                                                arg_word: {<1>}
                                              )
                                          )
                                        }
                                    )
                                )
                              )
                            }
                          spids: [906]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exitcode)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [927]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<read>} {<status>} {<pkg>} {<qstate>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$status'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <EXITCODE>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:exitcode)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$pkg'))}
                                  spids: [965]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [945 962]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$qstate'))} 
                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$expect'))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$qstate')}
                      arms: [
                        (case_arm
                          pat_list: [{<half-installed>}]
                          action: [
                            (command.Sentence
                              child: (C {<dp>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<progress>} {(DQ ($ Id.VSub_DollarName '$now'))} 
                              {(DQ ($ Id.VSub_DollarName '$end'))} {(DQ ($ Id.VSub_DollarName '$name'))} {(DQ ($ Id.VSub_DollarName '$desc'))}
                            )
                            (C {<info>} {(DQ ($ Id.VSub_DollarName '$action'))} 
                              {(DQ <'Unpacking %s...'>)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name pkg>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Percent '%'>
                                        arg_word: {<':'>}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:expect)
                                  op: assign_op.Equal
                                  rhs: {<unpacked>}
                                  spids: [1048]
                                )
                              ]
                            )
                          ]
                          spids: [1003 1004 1052 -1]
                        )
                        (case_arm
                          pat_list: [{<unpacked>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:expect)
                                  op: assign_op.Equal
                                  rhs: {<half-installed>}
                                  spids: [1059]
                                )
                              ]
                            )
                          ]
                          spids: [1055 1056 1063 -1]
                        )
                        (case_arm
                          pat_list: [{<half-configured>}]
                          action: [
                            (command.Sentence
                              child: (C {<dp>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<progress>} {(DQ ($ Id.VSub_DollarName '$now'))} 
                              {(DQ ($ Id.VSub_DollarName '$end'))} {(DQ ($ Id.VSub_DollarName '$name'))} {(DQ ($ Id.VSub_DollarName '$desc'))}
                            )
                            (C {<info>} {(DQ ($ Id.VSub_DollarName '$action'))} 
                              {(DQ <'Configuring %s...'>)} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name pkg>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Percent '%'>
                                        arg_word: {<':'>}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:expect)
                                  op: assign_op.Equal
                                  rhs: {<installed>}
                                  spids: [1111]
                                )
                              ]
                            )
                          ]
                          spids: [1066 1067 1115 -1]
                        )
                        (case_arm
                          pat_list: [{<installed>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:expect)
                                  op: assign_op.Equal
                                  rhs: {<half-configured>}
                                  spids: [1122]
                                )
                              ]
                            )
                          ]
                          spids: [1118 1119 1126 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$exitcode')}
            )
          ]
        )
    )
    (command.ShFunction
      name: default_mirror
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DEF_MIRROR)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [1154]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FINDDEBS_NEEDS_INDICES)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1162]
        )
      ]
    )
    (command.ShFunction
      name: finddebs_style
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm pat_list:[{<hardcoded>}] spids:[1182 1183 1186 -1])
                (case_arm
                  pat_list: [{<from-indices>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FINDDEBS_NEEDS_INDICES)
                          op: assign_op.Equal
                          rhs: {<true>}
                          spids: [1193]
                        )
                      ]
                    )
                  ]
                  spids: [1189 1190 1197 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADFINDDEBS>} {(DQ <'unknown finddebs style'>)})]
                  spids: [1200 1201 1215 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: mk_download_dirs
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$DLDEST')} 
                              {<Id.Lit_Equals '='>} {(DQ <apt_dest>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<mkdir>} {<-p>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> ($ Id.VSub_DollarName '$APTSTATE') 
                          <'/lists/partial'>
                        )
                      }
                    )
                    (C {<mkdir>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/cache/apt/archives/partial'>)}
                    )
                  ]
                  spids: [1231 1246]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download_style
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<apt>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$2'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <var-state>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:APTSTATE)
                                  op: assign_op.Equal
                                  rhs: {<'var/state/apt'>}
                                  spids: [1317]
                                )
                              ]
                            )
                          ]
                          spids: [1297 1314]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:APTSTATE)
                              op: assign_op.Equal
                              rhs: {<'var/lib/apt'>}
                              spids: [1324]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DLDEST)
                          op: assign_op.Equal
                          rhs: {<apt_dest>}
                          spids: [1331]
                        )
                      ]
                    )
                    (C {<export>} {<APTSTATE>} {<DLDEST>} {<DEBFOR>})
                  ]
                  spids: [1293 1294 1344 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADDLOAD>} {(DQ <'unknown download style'>)})]
                  spids: [1347 1348 1362 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: keyring
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$KEYRING'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:KEYRING)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                  spids: [1410]
                                )
                              ]
                            )
                          ]
                          spids: [1394 1407]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName '$DISABLE_KEYRING'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.AndOr
                                              ops: [Id.Op_DAmp Id.Op_DAmp]
                                              children: [
                                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                  {(DQ ($ Id.VSub_DollarName '$DEF_HTTPS_MIRROR'))} {<Id.Lit_RBracket ']'>}
                                                )
                                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                  {(DQ ($ Id.VSub_DollarName '$USER_MIRROR'))} {<Id.Lit_RBracket ']'>}
                                                )
                                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                  {(DQ ($ Id.VSub_DollarName '$FORCE_KEYRING'))} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<info>} {<KEYRING>} 
                                      {
                                        (DQ 
                                          <
'Keyring file not available at %s; switching to https mirror %s'
                                          >
                                        )
                                      } {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_DollarName '$DEF_HTTPS_MIRROR'))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:USER_MIRROR)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$DEF_HTTPS_MIRROR'))}
                                          spids: [1489]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1432 1469]
                                )
                              ]
                              else_action: [
                                (C {<warning>} {<KEYRING>} 
                                  {
                                    (DQ 
                                      <
'Cannot check Release signature; keyring file not available %s'
                                      >
                                    )
                                  } {(DQ ($ Id.VSub_Number '$1'))}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                  {(DQ ($ Id.VSub_DollarName '$FORCE_KEYRING'))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<error>} {<1>} {<KEYRING>} 
                                          {
                                            (DQ 
                                              <
'Keyring-based check was requested; aborting accordingly'
                                              >
                                            )
                                          }
                                        )
                                      ]
                                      spids: [1511 1524]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1416 1429]
                        )
                      ]
                    )
                  ]
                  spids: [1378 1391]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: doing_variant
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$VARIANT'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1564 1581]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VARIANT'))} 
                                  {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1591 1623]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUPPORTED_VARIANTS)
          op: assign_op.Equal
          rhs: {(DQ <->)}
          spids: [1640]
        )
      ]
    )
    (command.ShFunction
      name: variants
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SUPPORTED_VARIANTS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '$*'))}
                  spids: [1653]
                )
              ]
            )
            (command.ForEach
              iter_names: [v]
              iterable: (for_iter.Words words:[{($ Id.VSub_Star '$*')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<doing_variant>} {(DQ ($ Id.VSub_DollarName '$v'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<0>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1671 1680]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<error>} {<1>} {<UNSUPPVARIANT>} {(DQ <'unsupported variant'>)})
          ]
        )
    )
    (command.ShFunction
      name: mirror_style
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<release>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOWNLOAD_INDICES)
                          op: assign_op.Equal
                          rhs: {<download_release_indices>}
                          spids: [1731]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOWNLOAD_DEBS)
                          op: assign_op.Equal
                          rhs: {<download_release>}
                          spids: [1735]
                        )
                      ]
                    )
                  ]
                  spids: [1727 1728 1739 -1]
                )
                (case_arm
                  pat_list: [{<main>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOWNLOAD_INDICES)
                          op: assign_op.Equal
                          rhs: {<download_main_indices>}
                          spids: [1746]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOWNLOAD_DEBS)
                          op: assign_op.Equal
                          rhs: {<download_main>}
                          spids: [1750]
                        )
                      ]
                    )
                  ]
                  spids: [1742 1743 1754 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<BADMIRROR>} {(DQ <'unknown mirror style'>)})]
                  spids: [1757 1758 1772 -1]
                )
              ]
            )
            (C {<export>} {<DOWNLOAD_INDICES>})
            (C {<export>} {<DOWNLOAD_DEBS>})
          ]
        )
    )
    (command.ShFunction
      name: force_md5
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DEBOOTSTRAP_CHECKSUM_FIELD)
                  op: assign_op.Equal
                  rhs: {<MD5SUM>}
                  spids: [1798]
                )
              ]
            )
            (C {<export>} {<DEBOOTSTRAP_CHECKSUM_FIELD>})
          ]
        )
    )
    (command.ShFunction
      name: verify_checksum
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'expchecksum='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'expsize='> (DQ ($ Id.VSub_Number '$3'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$DEBOOTSTRAP_CHECKSUM_FIELD'))} {<Id.Lit_Equals '='>} {(DQ <MD5SUM>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<in_path>} {<md5sum>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:relchecksum)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                words: [{<md5sum>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Less '<'>
                                                    loc: (redir_loc.Fd fd:0)
                                                    arg: {(DQ ($ Id.VSub_Number '$1'))}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (C {<sed>} {(SQ <'s/ .*$//'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [1867]
                                )
                              ]
                            )
                          ]
                          spids: [1857 1864]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<in_path>} {<md5>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:relchecksum)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            words: [{<md5>}]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Less '<'>
                                                loc: (redir_loc.Fd fd:0)
                                                arg: {(DQ ($ Id.VSub_Number '$1'))}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                      )
                                    }
                                  spids: [1899]
                                )
                              ]
                            )
                          ]
                          spids: [1889 1896]
                        )
                      ]
                      else_action: [(C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Cannot check md5sum'>)})]
                    )
                  ]
                  spids: [1837 1854]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE) <sum>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:relchecksum)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            words: [{<sha> (${ Id.VSub_Name SHA_SIZE) <sum>}]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Less '<'>
                                                loc: (redir_loc.Fd fd:0)
                                                arg: {(DQ ($ Id.VSub_Number '$1'))}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                          (C {<sed>} {(SQ <'s/ .*$//'>)})
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                              spids: [1949]
                            )
                          ]
                        )
                      ]
                      spids: [1933 1946]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:relchecksum)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<sha> (${ Id.VSub_Name SHA_SIZE)}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Less '<'>
                                            loc: (redir_loc.Fd fd:0)
                                            arg: {(DQ ($ Id.VSub_Number '$1'))}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                  )
                                }
                              spids: [1990]
                            )
                          ]
                        )
                      ]
                      spids: [1975 1987]
                    )
                  ]
                  else_action: [
                    (C {<error>} {<1>} {<SIGCHECK>} 
                      {(DQ <'Cannot check sha'> (${ Id.VSub_Name SHA_SIZE) <sum>)}
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:relsize)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<wc>} {<-c>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {(DQ ($ Id.VSub_Number '$1'))}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [2031]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$expsize'))} 
                                  {<-ne>} {(DQ ($ Id.VSub_DollarName '$relsize'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$expchecksum'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$relchecksum'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [2047 2081]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: get
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<displayname>})
            (C {<local>} {<versionname>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Number 2>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Percent '%'>
                                        arg_word: {<.deb>}
                                      )
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:displayname)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_Number '$2'))})
                                        (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                      ]
                                      negated: F
                                    )
                                )
                              )
                            }
                          spids: [2150]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:versionname)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_Number '$2'))})
                                        (C {<sed>} {(SQ <'s,^.*/,,'>)})
                                        (C {<cut>} {<-d_>} {<-f2>})
                                        (C {<sed>} {(SQ <'s/%3a/:/'>)})
                                      ]
                                      negated: F
                                    )
                                )
                              )
                            }
                          spids: [2170]
                        )
                      ]
                    )
                  ]
                  spids: [2125 2147]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:displayname)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                    (C {<sed>} {(SQ <'s,^.*/,,'>)})
                                  ]
                                  negated: F
                                )
                            )
                          )
                        }
                      spids: [2209]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number '$2'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$3'))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2249 2262]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$3'))} 
                                      {<Id.Lit_Equals '='>} {<nocache>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$2'))})]
                          spids: [2270 2285]
                        )
                      ]
                      else_action: [
                        (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} 
                          {(DQ ($ Id.VSub_DollarName '$displayname'))} {(DQ ($ Id.VSub_DollarName '$versionname'))}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<verify_checksum>} {(DQ ($ Id.VSub_Number '$2'))} 
                                          {(DQ ($ Id.VSub_Number '$3'))} {(DQ ($ Id.VSub_Number '$4'))}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {<0>}
                                )
                              ]
                              spids: [2317 2334]
                            )
                          ]
                          else_action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$2'))})]
                        )
                      ]
                    )
                  ]
                  spids: [2233 2246]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$3'))} 
                              {<Id.Lit_Equals '='>} {<nocache>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<set>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))})]
                  spids: [2367 2382]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<-gt>} {<5>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'st='> <3>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$5'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:st)
                                      op: assign_op.Equal
                                      rhs: {<6>}
                                      spids: [2443]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [2424 2441]
                        )
                      ]
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'order='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.CommandList
                                children: [
                                  (command.Sentence
                                    child: 
                                      (command.ShAssignment
                                        pairs: [
                                          (assign_pair
                                            lhs: (sh_lhs_expr.Name name:a)
                                            op: assign_op.Equal
                                            rhs: {($ Id.VSub_DollarName '$st')}
                                            spids: [2455]
                                          )
                                        ]
                                      )
                                    terminator: <Id.Op_Semi _>
                                  )
                                  (command.Pipeline
                                    children: [
                                      (command.WhileUntil
                                        keyword: <Id.KW_While while>
                                        cond: 
                                          (condition.Shell
                                            commands: [
                                              (command.Sentence
                                                child: 
                                                  (C {<Id.Lit_LBracket '['>} 
                                                    {(DQ ($ Id.VSub_DollarName '$a'))} {<-le>} {($ Id.VSub_Pound '$#')} {<Id.Lit_RBracket ']'>}
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                            ]
                                          )
                                        body: 
                                          (command.DoGroup
                                            children: [
                                              (command.Sentence
                                                child: 
                                                  (C {<eval>} {<echo>} 
                                                    {
                                                      (word_part.EscapedLiteral
                                                        token: <Id.Lit_EscapedChar '\\"'>
                                                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <Id.Lit_LBrace '{'> 
                                                      (word_part.ArithSub
                                                        anode: 
                                                          (arith_expr.Binary
                                                            op_id: Id.Arith_Plus
                                                            left: {($ Id.VSub_DollarName '$a')}
                                                            right: {<Id.Lit_Digits 1>}
                                                          )
                                                      ) <Id.Lit_RBrace '}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                    } {($ Id.VSub_DollarName '$a')}
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                              (command.Sentence
                                                child: 
                                                  (command.ShAssignment
                                                    pairs: [
                                                      (assign_pair
                                                        lhs: (sh_lhs_expr.Name name:a)
                                                        op: assign_op.Equal
                                                        rhs: 
                                                          {
                                                            (word_part.ArithSub
                                                              anode: 
                                                                (arith_expr.Binary
                                                                  op_id: Id.Arith_Plus
                                                                  left: {($ Id.VSub_DollarName '$a')}
                                                                  right: {<Id.Lit_Digits 3>}
                                                                )
                                                            )
                                                          }
                                                        spids: [2496]
                                                      )
                                                    ]
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                            ]
                                          )
                                      )
                                      (C {<sort>} {<-n>})
                                      (C {<sed>} {(SQ <'s/.* //'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [2400 2415]
                )
              ]
              else_action: [(C {<local>} {<Id.Lit_VarLike 'order='> <3>})]
            )
            (command.ForEach
              iter_names: [a]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$order')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'checksum='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                  <Id.Lit_LBrace '{'> ($ Id.VSub_DollarName '$a') <Id.Lit_RBrace '}'>
                                }
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'siz='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                  <Id.Lit_LBrace '{'> 
                                  (word_part.ArithSub
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: {($ Id.VSub_DollarName '$a')}
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  ) <Id.Lit_RBrace '}'>
                                }
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'typ='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<eval>} {<echo>} 
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                  <Id.Lit_LBrace '{'> 
                                  (word_part.ArithSub
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: {($ Id.VSub_DollarName '$a')}
                                        right: {<Id.Lit_Digits 2>}
                                      )
                                  ) <Id.Lit_RBrace '}'>
                                }
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} {<from>})
                    (C {<local>} {<dest>})
                    (C {<local>} {<Id.Lit_VarLike 'iters='> <0>})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$typ'))}
                      arms: [
                        (case_arm
                          pat_list: [{<xz>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number '$1') <.xz>)}
                                      spids: [2644]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2') <.xz>)}
                                  spids: [2651]
                                )
                              ]
                            )
                          ]
                          spids: [2641 2642 2657 -1]
                        )
                        (case_arm
                          pat_list: [{<bz2>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number '$1') <.bz2>)}
                                      spids: [2663]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2') <.bz2>)}
                                  spids: [2670]
                                )
                              ]
                            )
                          ]
                          spids: [2660 2661 2676 -1]
                        )
                        (case_arm
                          pat_list: [{<gz>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number '$1') <.gz>)}
                                      spids: [2682]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2') <.gz>)}
                                  spids: [2689]
                                )
                              ]
                            )
                          ]
                          spids: [2679 2680 2695 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:from)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                      spids: [2701]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                                  spids: [2707]
                                )
                              ]
                            )
                          ]
                          spids: [2698 2699 2712 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name dest>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Slash '/'>}
                                              )
                                          )
                                        )
                                      } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$dest'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'./'> ($ Id.VSub_DollarName '$dest'))}
                                  spids: [2743]
                                )
                              ]
                            )
                          ]
                          spids: [2719 2740]
                        )
                      ]
                    )
                    (C {<local>} {<Id.Lit_VarLike 'dest2='> (DQ ($ Id.VSub_DollarName '$dest'))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name dest2>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VOp1_Percent '%'>
                                                arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                                              )
                                          ) <'/partial'>
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest2)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name dest2>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VOp1_Percent '%'>
                                              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                                            )
                                        ) <'/partial/'> 
                                        (braced_var_sub
                                          token: <Id.VSub_Name dest2>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VOp1_DPound '##'>
                                              arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                            )
                                        )
                                      )
                                    }
                                  spids: [2783]
                                )
                              ]
                            )
                          ]
                          spids: [2761 2780]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$iters'))} 
                                  {<-lt>} {<10>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<info>} {<RETRIEVING>} {(DQ <'Retrieving %s %s'>)} 
                              {(DQ ($ Id.VSub_DollarName '$displayname'))} {(DQ ($ Id.VSub_DollarName '$versionname'))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {<just_get>} {(DQ ($ Id.VSub_DollarName '$from'))} 
                                                  {(DQ ($ Id.VSub_DollarName '$dest2'))}
                                                )
                                              ]
                                              negated: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                          arg_word: {<2>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [2840 2855]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$checksum'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} 
                                      {(DQ ($ Id.VSub_DollarName '$displayname'))} {(DQ ($ Id.VSub_DollarName '$versionname'))}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<verify_checksum>} 
                                                      {(DQ ($ Id.VSub_DollarName '$dest2'))} {(DQ ($ Id.VSub_DollarName '$checksum'))} {(DQ ($ Id.VSub_DollarName '$siz'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:checksum)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ )}
                                                  spids: [2922]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [2902 2919]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2865 2882]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName '$checksum'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$dest2'))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$dest'))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<mv>} {(DQ ($ Id.VSub_DollarName '$dest2'))} 
                                          {(DQ ($ Id.VSub_DollarName '$dest'))}
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName '$typ'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<gz>}]
                                          action: [(C {<gunzip>} {(DQ ($ Id.VSub_DollarName '$dest'))})]
                                          spids: [2985 2986 2994 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<bz2>}]
                                          action: [(C {<bunzip2>} {(DQ ($ Id.VSub_DollarName '$dest'))})]
                                          spids: [2997 2998 3006 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<xz>}]
                                          action: [(C {<unxz>} {(DQ ($ Id.VSub_DollarName '$dest'))})]
                                          spids: [3009 3010 3018 -1]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<0>}
                                    )
                                  ]
                                  spids: [2933 2946]
                                )
                              ]
                              else_action: [
                                (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dest2'))})
                                (C {<warning>} {<RETRYING>} {(DQ <'Retrying failed download of %s'>)} 
                                  {(DQ ($ Id.VSub_DollarName '$from'))}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:iters)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: {($ Id.VSub_DollarName '$iters')}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          )
                                        }
                                      spids: [3054]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<warning>} {<CORRUPTFILE>} {(DQ <'%s was corrupt'>)} 
                      {(DQ ($ Id.VSub_DollarName '$from'))}
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: just_get
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'from='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<mkdir>} {<-p>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name dest>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_Percent '%'>
                        arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Pound '#'>
                                        arg_word: {<'null:'>}
                                      )
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<NOTPREDL>} {(DQ <'%s was not pre-downloaded'>)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name from>
                            suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<'null:'>})
                          )
                        )
                      }
                    )
                  ]
                  spids: [3138 3160]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name from>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: 
                                              {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                      )
                                    )
                                  } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name from>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: {<'ftp:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                      )
                                    )
                                  } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<wgetprogress>} {<-O>} {(DQ ($ Id.VSub_DollarName '$dest'))} 
                                      {(DQ ($ Id.VSub_DollarName '$from'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3236 3251]
                        )
                      ]
                      else_action: [
                        (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dest'))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                  spids: [3182 3229]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Pound '#'>
                                        arg_word: {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                      )
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<wgetprogress>} {($ Id.VSub_DollarName '$CHECKCERTIF')} 
                                      {($ Id.VSub_DollarName '$CERTIFICATE')} {($ Id.VSub_DollarName '$PRIVATEKEY')} {<-O>} {(DQ ($ Id.VSub_DollarName '$dest'))} 
                                      {(DQ ($ Id.VSub_DollarName '$from'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3311 3332]
                        )
                      ]
                      else_action: [
                        (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dest'))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                  spids: [3279 3304]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Pound '#'>
                                        arg_word: {<'file:'>}
                                      )
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'base='> 
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name from>
                            suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<'file:'>})
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name base>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                              )
                                          )
                                        )
                                      } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$base'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:base)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'/'> 
                                        (braced_var_sub
                                          token: <Id.VSub_Name from>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VOp1_Pound '#'>
                                              arg_word: 
                                                {<'file:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> 
                                                  <Id.Lit_Other '*'> <Id.Lit_Slash '/'>
                                                }
                                            )
                                        )
                                      )
                                    }
                                  spids: [3423]
                                )
                              ]
                            )
                          ]
                          spids: [3397 3420]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                      {(DQ ($ Id.VSub_DollarName '$base'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<cp>} {(DQ ($ Id.VSub_DollarName '$base'))} 
                              {(DQ ($ Id.VSub_DollarName '$dest'))}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3441 3454]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                  spids: [3360 3382]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name from>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Pound '#'>
                                        arg_word: {<'ssh:'>}
                                      )
                                  )
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'ssh_dest='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {($ Id.VSub_DollarName '$from')})
                                  (C {<sed>} {<-e>} {(SQ <'s#ssh://##'>)} {<-e>} {(SQ <'s#/#:/#'>)})
                                ]
                                negated: F
                              )
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName '$ssh_dest'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<scp>} {(DQ ($ Id.VSub_DollarName '$ssh_dest'))} 
                              {(DQ ($ Id.VSub_DollarName '$dest'))}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [3537 3550]
                        )
                      ]
                      else_action: [
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                  spids: [3484 3506]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNKNOWNLOC>} {(DQ <'unknown location %s'>)} 
                  {(DQ ($ Id.VSub_DollarName '$from'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download
      body: 
        (BraceGroup
          children: [
            (C {<mk_download_dirs>})
            (C {(DQ ($ Id.VSub_DollarName '$DOWNLOAD_DEBS'))} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_At '$@'))})
                        (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                        (C {<sort>})
                      ]
                      negated: F
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: download_indices
      body: 
        (BraceGroup
          children: [
            (C {<mk_download_dirs>})
            (C {(DQ ($ Id.VSub_DollarName '$DOWNLOAD_INDICES'))} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_At '$@'))})
                        (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                        (C {<sort>})
                      ]
                      negated: F
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: debfor
      body: 
        (BraceGroup
          children: [
            (command.Subshell
              child: 
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<pkg>} {<path>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ForEach
                          iter_names: [p]
                          iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$p'))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$pkg'))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$path'))})
                              ]
                            )
                        )
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/debootstrap/debpaths'>)}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: apt_dest
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<deb>}]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<echo>} 
                          {
                            (DQ <'/var/cache/apt/archives/'> (${ Id.VSub_Number 2) <_> 
                              (${ Id.VSub_Number 3) <_> (${ Id.VSub_Number 4) <.deb>
                            )
                          }
                        )
                        (C {<sed>} {(SQ <'s/:/%3a/'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3799 3800 3830 -1]
                )
                (case_arm
                  pat_list: [{<pkg>}]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$5'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:m)
                          op: assign_op.Equal
                          rhs: {(DQ <debootstrap.invalid>)}
                          spids: [3845]
                        )
                      ]
                    )
                    (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName '$APTSTATE') <'/lists/'>)})
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number '$6'))})
                        (C {<sed>} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3833 3834 3911 -1]
                )
                (case_arm
                  pat_list: [{<rel>}]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$3'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:m)
                          op: assign_op.Equal
                          rhs: {(DQ <debootstrap.invalid>)}
                          spids: [3926]
                        )
                      ]
                    )
                    (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName '$APTSTATE') <'/lists/'>)})
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number '$4'))})
                        (C {<sed>} {(SQ <'s/\\//_/g'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [3914 3915 3991 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: get_release_checksum
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'path='> (DQ ($ Id.VSub_Number '$2'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ ($ Id.VSub_DollarName '$DEBOOTSTRAP_CHECKSUM_FIELD'))} {<Id.Lit_Equals '='>} {<MD5SUM>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<local>} {<Id.Lit_VarLike 'match='> (DQ <'^[Mm][Dd]5[Ss][Uu][Mm]'>)})]
                  spids: [4027 4042]
                )
              ]
              else_action: [
                (C {<local>} 
                  {<Id.Lit_VarLike 'match='> 
                    (DQ <'^[Ss][Hh][Aa]'> ($ Id.VSub_DollarName '$SHA_SIZE') <':'>)
                  }
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<sed>} {<-n>} {(DQ <'/'> ($ Id.VSub_DollarName '$match') <'/,/^[^ ]/p'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName '$reldest'))}
                    )
                  ]
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<a>} {<b>} {<c>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$c'))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$path'))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: 
                                    (C {<echo>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$a') <' '> 
                                          ($ Id.VSub_DollarName '$b')
                                        )
                                      }
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [4103 4120]
                            )
                          ]
                        )
                      ]
                    )
                )
                (C {<head>} {<-n>} {<1>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: extract_release_components
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number '$1'))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TMPCOMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<sed>} {<-n>} {(SQ <'s/Components: *//p'>)} 
                              {(DQ ($ Id.VSub_DollarName '$reldest'))}
                            )
                        )
                      )
                    }
                  spids: [4166]
                )
              ]
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$TMPCOMPONENTS')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<eval>} 
                      {
                        (DQ <'\n'> <'\t\tcase '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <c> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) <' in\n'> <'\t\t    '> ($ Id.VSub_DollarName '$USE_COMPONENTS') <')\n'> <'\t\t\tCOMPONENTS='> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'COMPONENTS '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                          ) <c> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\t\t;;\n'> <'\t\tesac\n'> 
                          <'\t\t'>
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<echo>} {($ Id.VSub_DollarName '$COMPONENTS')})
                        )
                      )
                    }
                  spids: [4227]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$COMPONENTS'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<mv>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                      {(DQ ($ Id.VSub_DollarName '$reldest') <.malformed>)}
                    )
                    (C {<error>} {<1>} {<INVALIDREL>} {(DQ <'Invalid Release file, no valid components'>)})
                  ]
                  spids: [4237 4250]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CODENAME)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [4281]
        )
      ]
    )
    (command.ShFunction
      name: validate_suite
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CODENAME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<sed>} {<-n>} {(DQ <'s/^Codename: *//p'>)} 
                            {(DQ ($ Id.VSub_DollarName '$reldest'))}
                          )
                      )
                    }
                  spids: [4302]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'suite='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<sed>} {<-n>} {(DQ <'s/^Suite: *//p'>)} {(DQ ($ Id.VSub_DollarName '$reldest'))})
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SUITE'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$suite'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$SUITE'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$CODENAME'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<WRONGSUITE>} 
                      {(DQ <'Asked to install suite %s, but got %s (codename: %s) from mirror'>)} {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$suite'))} 
                      {(DQ ($ Id.VSub_DollarName '$CODENAME'))}
                    )
                  ]
                  spids: [4337 4372]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: split_inline_sig
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number '$3'))})
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
              {(DQ ($ Id.VSub_DollarName '$relsigdest'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:nl)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [4469]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:state)
                  op: assign_op.Equal
                  rhs: {<pre-begin>}
                  spids: [4474]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<read>} {<-r>} {<line>}]
                          more_env: [(env_pair name:IFS val:(word.Empty) spids:[4480])]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name state))}
                      arms: [
                        (case_arm
                          pat_list: [{<pre-begin>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNED MESSAGE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:state)
                                          op: assign_op.Equal
                                          rhs: {<begin>}
                                          spids: [4530]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4507 4527]
                                )
                              ]
                            )
                          ]
                          spids: [4503 4504 4537 -1]
                        )
                        (case_arm
                          pat_list: [{<begin>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <x>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:state)
                                          op: assign_op.Equal
                                          rhs: {<Id.KW_Data data>}
                                          spids: [4567]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4544 4564]
                                )
                              ]
                            )
                          ]
                          spids: [4540 4541 4574 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.KW_Data data>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<printf>}
                                        {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                        {(DQ (${ Id.VSub_Name line))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(DQ ($ Id.VSub_DollarName '$relsigdest'))}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:state)
                                          op: assign_op.Equal
                                          rhs: {<signature>}
                                          spids: [4625]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4581 4601]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {(DQ (${ Id.VSub_Name nl) <'%s'>)}
                                    {(DQ (${ Id.VSub_Name line))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ ($ Id.VSub_DollarName '$reldest'))}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:nl)
                                      op: assign_op.Equal
                                      rhs: {(DQ <Id.Lit_BadBackslash '\\'> <n>)}
                                      spids: [4654]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [4577 4578 4664 -1]
                        )
                        (case_arm
                          pat_list: [{<signature>}]
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                {(DQ (${ Id.VSub_Name line))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName '$relsigdest'))}
                                )
                              ]
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} 
                                              {<Id.Lit_Equals '='>} {(DQ <'x-----END PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [4692 4712]
                                )
                              ]
                            )
                          ]
                          spids: [4667 4668 -1 4721]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$inreldest'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download_release_sig
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number '$3'))})
            (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number '$4'))})
            (C {<progress>} {<0>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
            (C {<progress_next>} {<100>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<get>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$m1') <'/dists/'> 
                                  ($ Id.VSub_DollarName '$SUITE') <'/InRelease'>
                                )
                              } {(DQ ($ Id.VSub_DollarName '$inreldest'))} {<nocache>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<split_inline_sig>} {(DQ ($ Id.VSub_DollarName '$inreldest'))} 
                      {(DQ ($ Id.VSub_DollarName '$reldest'))} {(DQ ($ Id.VSub_DollarName '$relsigdest'))}
                    )
                    (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
                  ]
                  spids: [4794 4812]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<get>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$m1') <'/dists/'> ($ Id.VSub_DollarName '$SUITE') 
                          <'/Release'>
                        )
                      } {(DQ ($ Id.VSub_DollarName '$reldest'))} {<nocache>}
                    )
                    (C {<error>} {<1>} {<NOGETREL>} {(DQ <'Failed getting release file %s'>)} 
                      {
                        (DQ ($ Id.VSub_DollarName '$m1') <'/dists/'> ($ Id.VSub_DollarName '$SUITE') 
                          <'/Release'>
                        )
                      }
                    )
                  ]
                )
                (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                  {(DQ ($ Id.VSub_DollarName '$KEYRING'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                  {(DQ ($ Id.VSub_DollarName '$DISABLE_KEYRING'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<progress>} {<0>} {<100>} {<DOWNRELSIG>} 
                      {(DQ <'Downloading Release file signature'>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                                          {(DQ ($ Id.VSub_DollarName '$relsigdest'))} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<progress_next>} {<50>})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<get>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$m1') <'/dists/'> 
                                      ($ Id.VSub_DollarName '$SUITE') <'/Release.gpg'>
                                    )
                                  } {(DQ ($ Id.VSub_DollarName '$relsigdest'))} {<nocache>}
                                )
                                (C {<error>} {<1>} {<NOGETRELSIG>} 
                                  {(DQ <'Failed getting release signature file %s'>)} {(DQ ($ Id.VSub_DollarName '$m1') <'/dists/'> ($ Id.VSub_DollarName '$SUITE') <'/Release.gpg'>)}
                                )
                              ]
                            )
                            (C {<progress>} {<50>} {<100>} {<DOWNRELSIG>} 
                              {(DQ <'Downloading Release file signature'>)}
                            )
                          ]
                          spids: [4939 4954]
                        )
                      ]
                    )
                    (C {<info>} {<RELEASESIG>} {(DQ <'Checking Release signature'>)})
                    (command.Pipeline
                      children: [
                        (command.Subshell
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<gpgv>} {<--status-fd>} {<1>} {<--keyring>} 
                                  {(DQ ($ Id.VSub_DollarName '$KEYRING'))} {<--ignore-time-conflict>} {(DQ ($ Id.VSub_DollarName '$relsigdest'))} 
                                  {(DQ ($ Id.VSub_DollarName '$reldest'))}
                                )
                                (C {<true>})
                              ]
                            )
                        )
                        (C {<read_gpg_status>})
                      ]
                      negated: F
                    )
                    (C {<progress>} {<100>} {<100>} {<DOWNRELSIG>} 
                      {(DQ <'Downloading Release file signature'>)}
                    )
                  ]
                  spids: [4898 4923]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download_release_indices
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'inreldest='> 
                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName '$DLDEST')} {<rel>} 
                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/InRelease'>)}
                      )
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'reldest='> 
                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName '$DLDEST')} {<rel>} 
                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/Release'>)}
                      )
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'relsigdest='> 
                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {($ Id.VSub_DollarName '$DLDEST')} {<rel>} 
                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/Release.gpg'>)}
                      )
                  )
                )
              }
            )
            (C {<download_release_sig>} {(DQ ($ Id.VSub_DollarName '$m1'))} 
              {(DQ ($ Id.VSub_DollarName '$inreldest'))} {(DQ ($ Id.VSub_DollarName '$reldest'))} {(DQ ($ Id.VSub_DollarName '$relsigdest'))}
            )
            (C {<validate_suite>} {(DQ ($ Id.VSub_DollarName '$reldest'))})
            (C {<extract_release_components>} {($ Id.VSub_DollarName '$reldest')})
            (C {<local>} {<Id.Lit_VarLike 'totalpkgs='> <0>})
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'subpath='> 
                        (DQ ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') 
                          <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'xzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.xz>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'bz2i='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.bz2>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'gzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.gz>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'normi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath'))}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} {<Id.Lit_VarLike 'i='>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$normi'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$normi'))}
                                  spids: [5364]
                                )
                              ]
                            )
                          ]
                          spids: [5344 5361]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<bunzip2>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$bz2i'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$bz2i'))}
                                  spids: [5396]
                                )
                              ]
                            )
                          ]
                          spids: [5370 5393]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<unxz>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$xzi'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$xzi'))}
                                  spids: [5428]
                                )
                              ]
                            )
                          ]
                          spids: [5402 5425]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<gunzip>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$gzi'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$gzi'))}
                                  spids: [5460]
                                )
                              ]
                            )
                          ]
                          spids: [5434 5457]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:totalpkgs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (word_part.ArithSub
                                          anode: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Plus
                                              left: {($ Id.VSub_DollarName '$totalpkgs')}
                                              right: 
                                                {
                                                  (braced_var_sub
                                                    token: <Id.VSub_Name i>
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        tok: <Id.VOp1_Pound '#'>
                                                        arg_word: {<Id.Lit_Other '*'> <' '>}
                                                      )
                                                  )
                                                }
                                            )
                                        )
                                      )
                                    }
                                  spids: [5489]
                                )
                              ]
                            )
                          ]
                          spids: [5469 5486]
                        )
                      ]
                      else_action: [
                        (C {<mv>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                          {(DQ ($ Id.VSub_DollarName '$reldest') <.malformed>)}
                        )
                        (C {<error>} {<1>} {<MISSINGRELENTRY>} 
                          {(DQ <'Invalid Release file, no entry for %s'>)} {(DQ ($ Id.VSub_DollarName '$subpath'))}
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<local>} {<Id.Lit_VarLike 'donepkgs='> <0>})
            (C {<local>} {<pkgdest>})
            (C {<progress>} {<0>} {($ Id.VSub_DollarName '$totalpkgs')} {<DOWNPKGS>} 
              {(DQ <'Downloading Packages files'>)}
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'subpath='> 
                        (DQ ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') 
                          <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                          ($ Id.VSub_DollarName '$subpath')
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'xzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.xz>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'bz2i='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.bz2>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'gzi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath') <.gz>)}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'normi='> 
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName '$reldest'))} 
                                {(DQ ($ Id.VSub_DollarName '$subpath'))}
                              )
                          )
                        )
                      }
                    )
                    (C {<local>} {<Id.Lit_VarLike 'ext='>})
                    (C {<local>} {<Id.Lit_VarLike 'i='>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$normi'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$ext') <' '> 
                                        ($ Id.VSub_DollarName '$normi') <' .'>
                                      )
                                    }
                                  spids: [5717]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$normi'))}
                                  spids: [5726]
                                )
                              ]
                            )
                          ]
                          spids: [5697 5714]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<unxz>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$xzi'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$ext') <' '> 
                                        ($ Id.VSub_DollarName '$xzi') <' xz'>
                                      )
                                    }
                                  spids: [5761]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonHyphen ':-'>
                                              arg_word: {($ Id.VSub_DollarName '$xzi')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [5770]
                                )
                              ]
                            )
                          ]
                          spids: [5735 5758]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<bunzip2>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$bz2i'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$ext') <' '> 
                                        ($ Id.VSub_DollarName '$bz2i') <' bz2'>
                                      )
                                    }
                                  spids: [5809]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonHyphen ':-'>
                                              arg_word: {($ Id.VSub_DollarName '$bz2i')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [5818]
                                )
                              ]
                            )
                          ]
                          spids: [5783 5806]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<in_path>} {<gunzip>})
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$gzi'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ext)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$ext') <' '> 
                                        ($ Id.VSub_DollarName '$gzi') <' gz'>
                                      )
                                    }
                                  spids: [5857]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:i)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name i>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonHyphen ':-'>
                                              arg_word: {($ Id.VSub_DollarName '$gzi')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [5866]
                                )
                              ]
                            )
                          ]
                          spids: [5831 5854]
                        )
                      ]
                    )
                    (C {<progress_next>} 
                      {
                        (DQ 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: {($ Id.VSub_DollarName '$donepkgs')}
                                right: 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Name i>
                                      suffix_op: 
                                        (suffix_op.Unary
                                          tok: <Id.VOp1_Pound '#'>
                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                        )
                                    )
                                  }
                              )
                          )
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [m]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$MIRRORS')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:pkgdest)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                              {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                              {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                            )
                                        )
                                      )
                                    }
                                  spids: [5910]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<get>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$m') <'/'> 
                                                  ($ Id.VSub_DollarName '$path')
                                                )
                                              } {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {($ Id.VSub_DollarName '$ext')}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [5942 5959]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                                      {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} 
                              {(DQ ($ Id.VSub_DollarName '$path'))}
                            )
                          ]
                          spids: [5970 5985]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:donepkgs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName '$donepkgs')}
                                      right: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name i>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VOp1_Pound '#'>
                                                arg_word: {<Id.Lit_Other '*'> <' '>}
                                              )
                                          )
                                        }
                                    )
                                )
                              )
                            }
                          spids: [6006]
                        )
                      ]
                    )
                    (C {<progress>} {($ Id.VSub_DollarName '$donepkgs')} 
                      {($ Id.VSub_DollarName '$totalpkgs')} {<DOWNPKGS>} {(DQ <'Downloading Packages files'>)}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: get_package_sizes
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$1'))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number '$1'))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName '$PKGDETAILS')} {<PKGS>} {(DQ ($ Id.VSub_DollarName '$m'))} 
                  {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {(DQ ($ Id.VSub_At '$@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:newleft)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [6097]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:totaldebs)
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [6102]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:countdebs)
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [6106]
                            )
                          ]
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<read>} {<p>} {<details>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName '$details'))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:newleft)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$newleft') <' '> 
                                                    ($ Id.VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6142]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [6122 6139]
                                    )
                                  ]
                                  else_action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:size)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          tok: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [6153]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:totaldebs)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: {($ Id.VSub_DollarName '$totaldebs')}
                                                      right: {($ Id.VSub_DollarName '$size')}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [6165]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:countdebs)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: {($ Id.VSub_DollarName '$countdebs')}
                                                      right: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [6178]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                        (C {<echo>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$countdebs') <' '> 
                              ($ Id.VSub_DollarName '$totaldebs') ($ Id.VSub_DollarName '$newleft')
                            )
                          }
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: download_debs
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number '$2'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName '$PKGDETAILS')} {<PKGS>} {(DQ ($ Id.VSub_DollarName '$m'))} 
                  {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {(DQ ($ Id.VSub_At '$@'))}
                )
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:leftover)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [6267]
                            )
                          ]
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<read>} {<p>} {<ver>} {<arc>} {<mdup>} {<fil>} {<checksum>} {<size>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName '$ver'))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:leftover)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$leftover') <' '> 
                                                    ($ Id.VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6314]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [6294 6311]
                                    )
                                  ]
                                  else_action: [
                                    (C {<progress_next>} 
                                      {
                                        (DQ 
                                          (word_part.ArithSub
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Plus
                                                left: {($ Id.VSub_DollarName '$dloaddebs')}
                                                right: {($ Id.VSub_DollarName '$size')}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'debdest='> 
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName '$DLDEST')} {<deb>} 
                                                {(DQ ($ Id.VSub_DollarName '$p'))} {(DQ ($ Id.VSub_DollarName '$ver'))} {(DQ ($ Id.VSub_DollarName '$arc'))} 
                                                {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$fil'))}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<get>} 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName '$m') <'/'> 
                                                          ($ Id.VSub_DollarName '$fil')
                                                        )
                                                      } {(DQ ($ Id.VSub_DollarName '$TARGET') <'/'> ($ Id.VSub_DollarName '$debdest'))} 
                                                      {(DQ ($ Id.VSub_DollarName '$checksum'))} {(DQ ($ Id.VSub_DollarName '$size'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:dloaddebs)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (word_part.ArithSub
                                                          anode: 
                                                            (arith_expr.Binary
                                                              op_id: Id.Arith_Plus
                                                              left: 
                                                                {($ Id.VSub_DollarName '$dloaddebs')}
                                                              right: {($ Id.VSub_DollarName '$size')}
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [6399]
                                                )
                                              ]
                                            )
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$p') <' '> 
                                                    ($ Id.VSub_DollarName '$ver') <' '> ($ Id.VSub_DollarName '$m') <'/'> ($ Id.VSub_DollarName '$fil')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName '$TARGET') 
                                                      <'/debootstrap/deburis'>
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$p') <' '> 
                                                    ($ Id.VSub_DollarName '$debdest')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName '$TARGET') 
                                                      <'/debootstrap/debpaths'>
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          spids: [6371 6396]
                                        )
                                      ]
                                      else_action: [
                                        (C {<warning>} {<COULDNTDL>} 
                                          {(DQ <'Couldn\'t download package %s (ver %s arch %s)'>)} {(DQ ($ Id.VSub_DollarName '$p'))} {(DQ ($ Id.VSub_DollarName '$ver'))} 
                                          {(DQ ($ Id.VSub_DollarName '$arc'))}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:leftover)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$leftover') <' '> 
                                                    ($ Id.VSub_DollarName '$p')
                                                  )
                                                }
                                              spids: [6466]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                        (command.Simple
                          words: [
                            {<echo>}
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name leftover>
                                suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<' '>})
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<5>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: download_release
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'numdebs='> (DQ ($ Id.VSub_Pound '$#'))})
            (C {<local>} {<Id.Lit_VarLike 'countdebs='> <0>})
            (C {<progress>} {($ Id.VSub_DollarName '$countdebs')} {($ Id.VSub_DollarName '$numdebs')} 
              {<SIZEDEBS>} {(DQ <'Finding package sizes'>)}
            )
            (C {<local>} {<Id.Lit_VarLike 'totaldebs='> <0>})
            (C {<local>} {<Id.Lit_VarLike 'leftoverdebs='> (DQ ($ Id.VSub_Star '$*'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:leftoverdebs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<printf>} {(DQ ($ Id.VSub_DollarName '$leftoverdebs'))})
                              (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                              (C {<sort>} {<-u>})
                              (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [6570]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:numdebs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<printf>} {(DQ ($ Id.VSub_DollarName '$leftoverdebs'))})
                              (C {<wc>} {<-w>})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [6604]
                )
              ]
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$countdebs'))} {<-ge>} {(DQ ($ Id.VSub_DollarName '$numdebs'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [6631 6648]
                        )
                      ]
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> ($ Id.VSub_DollarName '$c') 
                          <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'pkgdest='> 
                        (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                              )
                          )
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                      {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [6705 6720]
                        )
                      ]
                    )
                    (C {<info>} {<CHECKINGSIZES>} {(DQ <'Checking component %s on %s...'>)} 
                      {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$m1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:leftoverdebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<get_package_sizes>} {(DQ ($ Id.VSub_DollarName '$m1'))} 
                                      {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {($ Id.VSub_DollarName '$leftoverdebs')}
                                    )
                                )
                              )
                            }
                          spids: [6747]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:countdebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName '$countdebs')}
                                    right: 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name leftoverdebs>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VOp1_DPercent '%%'>
                                              arg_word: {<' '> <Id.Lit_Other '*'>}
                                            )
                                        )
                                      }
                                  )
                              )
                            }
                          spids: [6766]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:leftoverdebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name leftoverdebs>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <' '>}
                                  )
                              )
                            }
                          spids: [6782]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:totaldebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name leftoverdebs>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_DPercent '%%'>
                                    arg_word: {<' '> <Id.Lit_Other '*'>}
                                  )
                              )
                            }
                          spids: [6792]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:leftoverdebs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name leftoverdebs>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <' '>}
                                  )
                              )
                            }
                          spids: [6801]
                        )
                      ]
                    )
                    (C {<progress>} {($ Id.VSub_DollarName '$countdebs')} 
                      {($ Id.VSub_DollarName '$numdebs')} {<SIZEDEBS>} {(DQ <'Finding package sizes'>)}
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$countdebs'))} 
                              {<-ne>} {(DQ ($ Id.VSub_DollarName '$numdebs'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<LEFTOVERDEBS>} {(DQ <'Couldn\'t find these debs: %s'>)} 
                      {(DQ ($ Id.VSub_DollarName '$leftoverdebs'))}
                    )
                  ]
                  spids: [6828 6845]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'dloaddebs='> <0>})
            (C {<progress>} {($ Id.VSub_DollarName '$dloaddebs')} {($ Id.VSub_DollarName '$totaldebs')} 
              {<DOWNDEBS>} {(DQ <'Downloading packages'>)}
            )
            (command.Simple
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$TARGET') <'/debootstrap/debpaths'>}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgs_to_get)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '$*'))}
                  spids: [6894]
                )
              ]
            )
            (command.ForEach
              iter_names: [c]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> ($ Id.VSub_DollarName '$c') 
                          <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [m]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$MIRRORS')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                              {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [6972 6987]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:pkgs_to_get)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              words: [
                                                {<download_debs>}
                                                {(DQ ($ Id.VSub_DollarName '$m'))}
                                                {(DQ ($ Id.VSub_DollarName '$pkgdest'))}
                                                {($ Id.VSub_DollarName '$pkgs_to_get')}
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '5>&'>
                                                  loc: (redir_loc.Fd fd:5)
                                                  arg: {<1>}
                                                )
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<6>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                        )
                                      )
                                    }
                                  spids: [6995]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName '$pkgs_to_get'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [7019 7032]
                                )
                              ]
                            )
                          ]
                        )
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '6>&'>
                          loc: (redir_loc.Fd fd:6)
                          arg: {<1>}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName '$pkgs_to_get'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [7046 7059]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<progress>} {($ Id.VSub_DollarName '$dloaddebs')} {($ Id.VSub_DollarName '$totaldebs')} 
              {<DOWNDEBS>} {(DQ <'Downloading packages'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$pkgs_to_get'))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<COULDNTDLPKGS>} {(DQ <'Couldn\'t download packages: %s'>)} 
                      {(DQ ($ Id.VSub_DollarName '$pkgs_to_get'))}
                    )
                  ]
                  spids: [7083 7100]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: download_main_indices
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'comp='> (DQ (${ Id.VSub_Name USE_COMPONENTS))})
            (C {<progress>} {<0>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)})
            (C {<progress_next>} {<100>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$comp'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:comp)
                              op: assign_op.Equal
                              rhs: {<main>}
                              spids: [7188]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [7173 7186]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPONENTS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_DollarName '$comp')})
                                (C {<tr>} {(SQ <'|'>)} {(SQ <' '>)})
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [7195]
                )
              ]
            )
            (C {<export>} {<COMPONENTS>})
            (command.ForEach
              iter_names: [m]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$MIRRORS')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                  ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.AndOr
                                              ops: [Id.Op_DAmp]
                                              children: [
                                                (C {<in_path>} {<gunzip>})
                                                (C {<get>} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName '$m') <'/'> 
                                                      (${ Id.VSub_Name path) <.gz>
                                                    )
                                                  } {(DQ (${ Id.VSub_Name pkgdest) <.gz>)}
                                                )
                                              ]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$pkgdest'))})
                                    (C {<gunzip>} {(DQ ($ Id.VSub_DollarName '$pkgdest') <.gz>)})
                                  ]
                                  spids: [7295 7322]
                                )
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<get>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$m') <'/'> 
                                                  ($ Id.VSub_DollarName '$path')
                                                )
                                              } {(DQ ($ Id.VSub_DollarName '$pkgdest'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<true>})]
                                  spids: [7342 7357]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
            )
            (C {<progress>} {<100>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)})
          ]
        )
    )
    (command.ShFunction
      name: download_main
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (command.Simple
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$TARGET') <'/debootstrap/debpaths'>}
                )
              ]
              do_fork: T
            )
            (command.ForEach
              iter_names: [p]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} {<Id.Lit_VarLike 'details='> (DQ )})
                            (command.ForEach
                              iter_names: [m]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$MIRRORS')}])
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'path='> 
                                        (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                          ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                        )
                                      }
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'pkgdest='> 
                                        (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                                {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                                {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                                      {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: <Id.ControlFlow_Continue continue>
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          spids: [7508 7523]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:details)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (command_sub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (C {($ Id.VSub_DollarName '$PKGDETAILS')} {<PKGS>} 
                                                      {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {(DQ ($ Id.VSub_DollarName '$p'))}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [7531]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ ($ Id.VSub_DollarName '$details'))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$p') <' -'>)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:details)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ )}
                                                  spids: [7574]
                                                )
                                              ]
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Continue continue>
                                            )
                                          ]
                                          spids: [7553 7571]
                                        )
                                      ]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:size)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          tok: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [7585]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:details)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: <Id.VSub_Name details>
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      tok: <Id.VOp1_Percent '%'>
                                                      arg_word: {<' '> <Id.Lit_Other '*'>}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [7596]
                                        )
                                      ]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:checksum)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name details>
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          tok: <Id.VOp1_DPound '##'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [7607]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:details)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: <Id.VSub_Name details>
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      tok: <Id.VOp1_Percent '%'>
                                                      arg_word: {<' '> <Id.Lit_Other '*'>}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [7618]
                                        )
                                      ]
                                    )
                                    (C {<local>} 
                                      {<Id.Lit_VarLike 'debdest='> 
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {($ Id.VSub_DollarName '$DLDEST')} {<deb>} 
                                                {($ Id.VSub_DollarName '$details')}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<get>} 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName '$m') <'/'> 
                                                          (braced_var_sub
                                                            token: <Id.VSub_Name details>
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                tok: <Id.VOp1_DPound '##'>
                                                                arg_word: {<Id.Lit_Other '*'> <' '>}
                                                              )
                                                          )
                                                        )
                                                      } {(DQ ($ Id.VSub_DollarName '$TARGET') <'/'> ($ Id.VSub_DollarName '$debdest'))} 
                                                      {(DQ ($ Id.VSub_DollarName '$checksum'))} {(DQ ($ Id.VSub_DollarName '$size'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$p') <' '> 
                                                    ($ Id.VSub_DollarName '$debdest')
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {($ Id.VSub_DollarName '$TARGET') 
                                                      <'/debootstrap/debpaths'>
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:details)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <done>)}
                                                  spids: [7689]
                                                )
                                              ]
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [7643 7673]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$details'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [7704 7721]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$details'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <done>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} 
                              {(DQ ($ Id.VSub_DollarName '$p'))}
                            )
                          ]
                          spids: [7733 7751]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: get_debs
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<local>} {<m1>} {<c>})
            (command.ForEach
              iter_names: [m1]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$MIRRORS')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_names: [c]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$COMPONENTS')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                  ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (C {<echo>} 
                              {
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {(DQ ($ Id.VSub_DollarName '$PKGDETAILS'))} {<FIELD>} 
                                          {(DQ ($ Id.VSub_DollarName '$field'))} {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {(DQ ($ Id.VSub_At '$@'))}
                                        )
                                        (C {<sed>} {(SQ <'s/ .*//'>)})
                                      ]
                                      negated: F
                                    )
                                )
                              }
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXTRACTORS_SUPPORTED)
          op: assign_op.Equal
          rhs: {(DQ <'dpkg-deb ar'>)}
          spids: [7926]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXTRACT_DEB_TAR_OPTIONS)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [7931]
        )
      ]
    )
    (command.ShFunction
      name: extract_dpkg_deb_field
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<dpkg-deb>} {<-f>} {(DQ ($ Id.VSub_DollarName '$pkg'))} 
              {(DQ ($ Id.VSub_DollarName '$field'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: extract_dpkg_deb_data
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number '$1'))})
            (command.Pipeline
              children: [
                (C {<dpkg-deb>} {<--fsys-tarfile>} {(DQ ($ Id.VSub_DollarName '$pkg'))})
                (C {<tar>} {($ Id.VSub_DollarName '$EXTRACT_DEB_TAR_OPTIONS')} {<-xf>} {<->})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: extract_ar_deb_field
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'tarball='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName '$pkg'))})
                        (C {<grep>} {(DQ <'^control'> <Id.Lit_BadBackslash '\\'> <.tar>)})
                      ]
                      negated: F
                    )
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$tarball'))}
              arms: [
                (case_arm
                  pat_list: [{<control.tar.gz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<zcat>}
                          spids: [8079]
                        )
                      ]
                    )
                  ]
                  spids: [8076 8077 8082 -1]
                )
                (case_arm
                  pat_list: [{<control.tar.xz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<xzcat>}
                          spids: [8088]
                        )
                      ]
                    )
                  ]
                  spids: [8085 8086 8091 -1]
                )
                (case_arm
                  pat_list: [{<control.tar>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<cat>}
                          spids: [8097]
                        )
                      ]
                    )
                  ]
                  spids: [8094 8095 8100 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNCONTROLCOMP>} 
                      {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName '$tarball'))} {(DQ ($ Id.VSub_DollarName '$pkg'))}
                    )
                  ]
                  spids: [8103 8104 8124 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {($ Id.VSub_DollarName '$cat_cmd')}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName '$pkg'))} 
                          {(DQ ($ Id.VSub_DollarName '$tarball'))}
                        )
                        (C {($ Id.VSub_DollarName '$cat_cmd')})
                        (command.Simple
                          words: [{<tar>} {<-O>} {<-xf>} {<->} {<control>} {<'./control'>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (C {<grep>} {<-i>} {(DQ <'^'> ($ Id.VSub_DollarName '$field') <':'>)})
                        (C {<sed>} {<-e>} {(SQ <'s/[^:]*: *//'>)})
                        (C {<head>} {<-n>} {<1>})
                      ]
                      negated: F
                    )
                  ]
                  spids: [8131 8144]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNPACKCMDUNVL>} 
                  {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName '$pkg'))} {(DQ ($ Id.VSub_DollarName '$cat_cmd'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: extract_ar_deb_data
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'tarball='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName '$pkg'))})
                        (C {<grep>} {(DQ <'^data.tar'>)})
                      ]
                      negated: F
                    )
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$tarball'))}
              arms: [
                (case_arm
                  pat_list: [{<data.tar.gz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<zcat>}
                          spids: [8291]
                        )
                      ]
                    )
                  ]
                  spids: [8288 8289 8294 -1]
                )
                (case_arm
                  pat_list: [{<data.tar.bz2>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<bzcat>}
                          spids: [8300]
                        )
                      ]
                    )
                  ]
                  spids: [8297 8298 8303 -1]
                )
                (case_arm
                  pat_list: [{<data.tar.xz>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<xzcat>}
                          spids: [8309]
                        )
                      ]
                    )
                  ]
                  spids: [8306 8307 8312 -1]
                )
                (case_arm
                  pat_list: [{<data.tar>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cat_cmd)
                          op: assign_op.Equal
                          rhs: {<cat>}
                          spids: [8318]
                        )
                      ]
                    )
                  ]
                  spids: [8315 8316 8321 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNDATACOMP>} 
                      {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName '$tarball'))} {(DQ ($ Id.VSub_DollarName '$pkg'))}
                    )
                  ]
                  spids: [8324 8325 8345 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {($ Id.VSub_DollarName '$cat_cmd')}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Pipeline
                      children: [
                        (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName '$pkg'))} 
                          {(DQ ($ Id.VSub_DollarName '$tarball'))}
                        )
                        (C {($ Id.VSub_DollarName '$cat_cmd')})
                        (C {<tar>} {($ Id.VSub_DollarName '$EXTRACT_DEB_TAR_OPTIONS')} {<-xf>} {<->})
                      ]
                      negated: F
                    )
                  ]
                  spids: [8352 8365]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<UNPACKCMDUNVL>} 
                  {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName '$pkg'))} {(DQ ($ Id.VSub_DollarName '$cat_cmd'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: valid_extractor
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'extractor='> (DQ ($ Id.VSub_Number '$1'))})
            (command.ForEach
              iter_names: [E]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$EXTRACTORS_SUPPORTED')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$extractor'))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$E'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [8451 8468]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: choose_extractor
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<extractor>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ ($ Id.VSub_DollarName '$EXTRACTOR_OVERRIDE'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:extractor)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$EXTRACTOR_OVERRIDE'))}
                          spids: [8520]
                        )
                      ]
                    )
                  ]
                  spids: [8504 8517]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<type>} {<dpkg-deb>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:extractor)
                          op: assign_op.Equal
                          rhs: {(DQ <dpkg-deb>)}
                          spids: [8542]
                        )
                      ]
                    )
                  ]
                  spids: [8526 8539]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:extractor)
                      op: assign_op.Equal
                      rhs: {(DQ <ar>)}
                      spids: [8551]
                    )
                  ]
                )
              ]
            )
            (C {<info>} {<CHOSENEXTRACTOR>} {(DQ <'Chosen extractor for .deb packages: %s'>)} 
              {(DQ ($ Id.VSub_DollarName '$extractor'))}
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$extractor'))}
              arms: [
                (case_arm
                  pat_list: [{<dpkg-deb>}]
                  action: [
                    (command.ShFunction
                      name: extract_deb_field
                      body: 
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {<extract_dpkg_deb_field>} {(DQ ($ Id.VSub_At '$@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                    )
                    (command.ShFunction
                      name: extract_deb_data
                      body: 
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {<extract_dpkg_deb_data>} {(DQ ($ Id.VSub_At '$@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                    )
                  ]
                  spids: [8583 8584 8621 -1]
                )
                (case_arm
                  pat_list: [{<ar>}]
                  action: [
                    (command.ShFunction
                      name: extract_deb_field
                      body: 
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {<extract_ar_deb_field>} {(DQ ($ Id.VSub_At '$@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                    )
                    (command.ShFunction
                      name: extract_deb_data
                      body: 
                        (BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {<extract_ar_deb_data>} {(DQ ($ Id.VSub_At '$@'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                    )
                  ]
                  spids: [8624 8625 8662 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: extract
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (C {<cd>} {(DQ ($ Id.VSub_DollarName '$TARGET'))})
                        (C {<local>} {<Id.Lit_VarLike 'p='> <0>} {<cat_cmd>})
                        (command.ForEach
                          iter_names: [pkg]
                          iterable: 
                            (for_iter.Words
                              words: [
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: (C {<debfor>} {(DQ ($ Id.VSub_At '$@'))})
                                  )
                                }
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:p)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: {($ Id.VSub_DollarName '$p')}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          )
                                        }
                                      spids: [8713]
                                    )
                                  ]
                                )
                                (C {<progress>} {(DQ ($ Id.VSub_DollarName '$p'))} 
                                  {(DQ ($ Id.VSub_Pound '$#'))} {<EXTRACTPKGS>} {(DQ <'Extracting packages'>)}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:packagename)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$pkg'))})
                                                    (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)})
                                                  ]
                                                  negated: F
                                                )
                                            )
                                          )
                                        }
                                      spids: [8743]
                                    )
                                  ]
                                )
                                (C {<info>} {<EXTRACTING>} {(DQ <'Extracting %s...'>)} 
                                  {(DQ ($ Id.VSub_DollarName '$packagename'))}
                                )
                                (C {<extract_deb_data>} {(DQ <'./'> ($ Id.VSub_DollarName '$pkg'))})
                              ]
                            )
                        )
                      ]
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: in_target_nofail
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$CHROOT_CMD')}
                                    {(DQ ($ Id.VSub_At '$@'))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<true>})]
                  spids: [8800 8814]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: in_target_failmsg
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'code='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'msg='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'arg='> (DQ ($ Id.VSub_Number '$3'))})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {($ Id.VSub_DollarName '$CHROOT_CMD')} {(DQ ($ Id.VSub_At '$@'))})
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<warning>} {(DQ ($ Id.VSub_DollarName '$code'))} 
                      {(DQ ($ Id.VSub_DollarName '$msg'))} {(DQ ($ Id.VSub_DollarName '$arg'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msg)
                          op: assign_op.Equal
                          rhs: {(DQ <'See %s for details'>)}
                          spids: [8904]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$TARGET') 
                                          <'/debootstrap/debootstrap.log'>
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$TARGET') 
                                        <'/debootstrap/debootstrap.log'>
                                      )
                                    }
                                  spids: [8927]
                                )
                              ]
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkg='> 
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<grep>} {(SQ <'^dpkg: error processing '>)} 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$TARGET') 
                                                <'/debootstrap/debootstrap.log'>
                                              )
                                            }
                                          )
                                          (C {<head>} {<-n>} {<1>})
                                          (C {<sed>} 
                                            {
                                              (SQ 
                                                <
's/\\(error processing \\)\\(package \\|archive \\)/\\1/'
                                                >
                                              )
                                            }
                                          )
                                          (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<4>})
                                        ]
                                        negated: F
                                      )
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName '$pkg'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:msg)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$msg') 
                                                <' (possibly the package '> ($ Id.VSub_DollarName '$pkg') <' is at fault)'>
                                              )
                                            }
                                          spids: [8999]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8983 8996]
                                )
                              ]
                            )
                          ]
                          spids: [8910 8924]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:arg)
                              op: assign_op.Equal
                              rhs: {(DQ <'the log'>)}
                              spids: [9014]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<warning>} {(DQ ($ Id.VSub_DollarName '$code'))} 
                      {(DQ ($ Id.VSub_DollarName '$msg'))} {(DQ ($ Id.VSub_DollarName '$arg'))}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8871 8882]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: in_target
      body: 
        (BraceGroup
          children: [
            (C {<in_target_failmsg>} {<IN_TARGET_FAIL>} {(DQ <'Failure trying to run: %s'>)} 
              {(DQ ($ Id.VSub_DollarName '$CHROOT_CMD') <' '> ($ Id.VSub_Star '$*'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: conditional_cp
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                              {(DQ ($ Id.VSub_Number '$2') <'/'> ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_Number '$1'))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number '$1'))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [{<cat>} {(DQ ($ Id.VSub_Number '$1'))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_Number '$2') <'/'> ($ Id.VSub_Number '$1'))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [9114 9139]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<cp>} {<-a>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {(DQ ($ Id.VSub_Number '$2') <'/'> ($ Id.VSub_Number '$1'))}
                            )
                          ]
                          spids: [9156 9169]
                        )
                      ]
                    )
                  ]
                  spids: [9094 9111]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: mv_invalid_to
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:m)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} 
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name m>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: 
                                              {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>}
                                          )
                                      )
                                    )
                                  }
                                )
                                (C {<tr>} {(SQ <'/'>)} {(SQ <_>)})
                                (C {<sed>} {(SQ <'s/_*//'>)})
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [9211]
                )
              ]
            )
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (C {<cd>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> ($ Id.VSub_DollarName '$APTSTATE') 
                          <'/lists'>
                        )
                      }
                    )
                    (command.ForEach
                      iter_names: [a]
                      iterable: (for_iter.Words words:[{<debootstrap.invalid_> <Id.Lit_Star '*'>}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<mv>} {(DQ ($ Id.VSub_DollarName '$a'))} 
                              {
                                (DQ (${ Id.VSub_Name m) <_> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name a>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VOp1_Pound '#'>
                                        arg_word: {<Id.Lit_Other '*'> <_>}
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_apt_sources
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/apt'>)})
            (command.ForEach
              iter_names: [m]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '$@'))}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} {<Id.Lit_VarLike 'cs='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name COMPONENTS>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: {($ Id.VSub_DollarName '$USE_COMPONENTS')}
                                  )
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                  ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-e>} 
                                              {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:cs)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$cs') <' '> 
                                                    ($ Id.VSub_DollarName '$c')
                                                  )
                                                }
                                              spids: [9419]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [9404 9417]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$cs'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<echo>} 
                                  {
                                    (DQ <'deb '> ($ Id.VSub_DollarName '$m') <' '> 
                                      ($ Id.VSub_DollarName '$SUITE') ($ Id.VSub_DollarName '$cs')
                                    )
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [9433 9450]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/apt/sources.list'>)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_etc
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc'>)})
            (C {<conditional_cp>} {<'/etc/resolv.conf'>} {(DQ ($ Id.VSub_DollarName '$TARGET'))})
            (C {<conditional_cp>} {<'/etc/hostname'>} {(DQ ($ Id.VSub_DollarName '$TARGET'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$DLDEST'))} 
                                  {<Id.Lit_Equals '='>} {<apt_dest>} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                  {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/apt/sources.list'>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<setup_apt_sources>} {(DQ <'http://debootstrap.invalid/'>)})]
                  spids: [9516 9546]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:UMOUNT_DIRS)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [9561]
        )
      ]
    )
    (command.ShFunction
      name: umount_exit_function
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<realdir>})
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$UMOUNT_DIRS')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:realdir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<in_target_nofail>} {<readlink>} {<-f>} 
                                      {(DQ ($ Id.VSub_DollarName '$dir'))}
                                    )
                                )
                              )
                            }
                          spids: [9589]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$realdir'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Subshell
                          child: 
                            (command.CommandList
                              children: [
                                (command.Sentence
                                  child: (C {<cd>} {<'/'>})
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<umount>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                      (braced_var_sub
                                        token: <Id.VSub_Name realdir>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: {<Id.Lit_Slash '/'>}
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                        )
                        (C {<true>})
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: umount_on_exit
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$UMOUNT_DIRS'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:UMOUNT_DIRS)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName '$UMOUNT_DIRS') <' '> ($ Id.VSub_Number '$1'))}
                          spids: [9672]
                        )
                      ]
                    )
                  ]
                  spids: [9658 9669]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:UMOUNT_DIRS)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [9683]
                    )
                  ]
                )
                (C {<on_exit>} {<umount_exit_function>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: clear_mtab
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-h>} 
                                  {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/etc/mtab'>)})]
                  spids: [9707 9736]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_proc
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<umount_on_exit>} {<'/dev'>})
                    (C {<umount_on_exit>} {<'/proc'>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<umount>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/proc'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (C {<true>})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$HOST_OS'))} 
                                      {<Id.Lit_Equals '='>} {<kfreebsd>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<in_target>} {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} {<'/proc'>})
                          ]
                          spids: [9802 9817]
                        )
                      ]
                      else_action: [
                        (C {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} 
                          {($ Id.VSub_DollarName '$TARGET') <'/proc'>}
                        )
                      ]
                    )
                  ]
                  spids: [9771 9774 9851 -1]
                )
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/dev'>)} 
                      {<'/hurd/firmlink'>} {<'/dev'>}
                    )
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/servers'>)} 
                      {<'/hurd/firmlink'>} {<'/servers'>}
                    )
                    (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/proc'>)} 
                      {<'/hurd/firmlink'>} {<'/proc'>}
                    )
                  ]
                  spids: [9854 9856 9905 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<umount_on_exit>} {<'/dev/pts'>})
                    (C {<umount_on_exit>} {<'/dev/shm'>})
                    (C {<umount_on_exit>} {<'/proc/bus/usb'>})
                    (C {<umount_on_exit>} {<'/proc'>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<umount>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/proc'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (C {<true>})
                      ]
                    )
                    (C {<in_target>} {<mount>} {<-t>} {<Id.KW_Proc proc>} {<Id.KW_Proc proc>} {<'/proc'>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                                          {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sys'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.Simple
                                          words: [
                                            {<grep>}
                                            {<-q>}
                                            {(SQ <'[[:space:]]sysfs'>)}
                                            {<'/proc/filesystems'>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<umount_on_exit>} {<'/sys'>})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{<umount>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sys'>)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<true>})
                              ]
                            )
                            (C {<in_target>} {<mount>} {<-t>} {<sysfs>} {<sysfs>} {<'/sys'>})
                          ]
                          spids: [9960 9991]
                        )
                      ]
                    )
                    (C {<on_exit>} {<clear_mtab>})
                  ]
                  spids: [9908 9909 10035 -1]
                )
              ]
            )
            (C {<umount_on_exit>} {<'/lib/init/rw'>})
          ]
        )
    )
    (command.ShFunction
      name: setup_proc_fakechroot
      body: 
        (BraceGroup
          children: [
            (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/proc'>)})
            (C {<ln>} {<-s>} {<'/proc'>} {(DQ ($ Id.VSub_DollarName '$TARGET'))})
          ]
        )
    )
    (command.ShFunction
      name: setup_devices
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<doing_variant>} {<fakechroot>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<setup_devices_fakechroot>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [10090 10097]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}]
                  spids: [10121 10123 10126 -1]
                )
                (case_arm pat_list:[{<freebsd>}] spids:[10129 10130 10133 -1])
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  spids: [10136 10138 10141 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<setup_devices_simple>})]
                  spids: [10144 10145 10151 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_dynamic_devices
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<doing_variant>} {<fakechroot>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [10170 10177]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}]
                  action: [(C {<in_target>} {<mount>} {<-t>} {<devfs>} {<devfs>} {<'/dev'>})]
                  spids: [10198 10200 10215 -1]
                )
                (case_arm
                  pat_list: [{<freebsd>}]
                  action: [
                    (C {<mount>} {<-t>} {<devfs>} {<devfs>} {($ Id.VSub_DollarName '$TARGET') <'/dev'>})
                  ]
                  spids: [10218 10219 10233 -1]
                )
                (case_arm
                  pat_list: [{<hurd> <Id.Lit_Star '*'>}]
                  action: [(C {<in_target>} {<'/usr/lib/hurd/setup-translators'>} {<-k>})]
                  spids: [10236 10238 10251 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_devices_simple
      body: 
        (BraceGroup
          children: [
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/null'>} {<c>} {<1>} {<3>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/zero'>} {<c>} {<1>} {<5>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/full'>} {<c>} {<1>} {<7>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/random'>} {<c>} {<1>} {<8>})
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/urandom'>} {<c>} {<1>} 
              {<9>}
            )
            (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$TARGET') <'/dev/tty'>} {<c>} {<5>} {<0>})
            (C {<mkdir>} {($ Id.VSub_DollarName '$TARGET') <'/dev/pts/'>} 
              {($ Id.VSub_DollarName '$TARGET') <'/dev/shm/'>}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<mknod>} {<-m>} {<666>} 
                                  {($ Id.VSub_DollarName '$TARGET') <'/dev/ptmx'>} {<c>} {<5>} {<2>}
                                )
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<warning>} {<MKNOD>} 
                      {
                        (DQ 
                          <
'Could not create /dev/ptmx, falling back to symlink. This chroot will require /dev/pts mounted with ptmxmode=666'
                          >
                        )
                      }
                    )
                    (C {<ln>} {<-s>} {<'pts/ptmx'>} {($ Id.VSub_DollarName '$TARGET') <'/dev/ptmx'>})
                  ]
                  spids: [10388 10408]
                )
              ]
            )
            (C {<ln>} {<-s>} {<'/proc/self/fd'>} {($ Id.VSub_DollarName '$TARGET') <'/dev/fd'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/0'>} {($ Id.VSub_DollarName '$TARGET') <'/dev/stdin'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/1'>} {($ Id.VSub_DollarName '$TARGET') <'/dev/stdout'>})
            (C {<ln>} {<-s>} {<'/proc/self/fd/2'>} {($ Id.VSub_DollarName '$TARGET') <'/dev/stderr'>})
          ]
        )
    )
    (command.ShFunction
      name: setup_devices_fakechroot
      body: 
        (BraceGroup
          children: [
            (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/dev'>)})
            (C {<ln>} {<-s>} {<'/dev'>} {(DQ ($ Id.VSub_DollarName '$TARGET'))})
          ]
        )
    )
    (command.ShFunction
      name: setup_dselect_method
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<apt>}]
                  action: [
                    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg'>)})
                    (command.Simple
                      words: [{<echo>} {(DQ <'apt apt'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg/cmethopt'>)}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<chmod>} {<644>} 
                      {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg/cmethopt'>)}
                    )
                  ]
                  spids: [10523 10524 10561 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<error>} {<1>} {<UNKNOWNDSELECT>} {(DQ <'unknown dselect method'>)})]
                  spids: [10564 10565 10579 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_merged_usr
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$MERGED_USR'))} 
                              {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [10618 10635]
                )
              ]
            )
            (C {<local>} {<link_dir>})
            (command.Case
              to_match: {($ Id.VSub_DollarName '$ARCH')}
              arms: [
                (case_arm
                  pat_list: [{<hurd-> <Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [10658 10660 10666 -1]
                )
                (case_arm
                  pat_list: [{<amd64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libx32'>)}
                          spids: [10672]
                        )
                      ]
                    )
                  ]
                  spids: [10669 10670 10677 -1]
                )
                (case_arm
                  pat_list: [{<i386>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib64 libx32'>)}
                          spids: [10683]
                        )
                      ]
                    )
                  ]
                  spids: [10680 10681 10688 -1]
                )
                (case_arm
                  pat_list: [{<mips>} {<mipsel>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10697]
                        )
                      ]
                    )
                  ]
                  spids: [10691 10694 10702 -1]
                )
                (case_arm
                  pat_list: [{<mips64> <Id.Lit_Star '*'>} {<mipsn32> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libo32'>)}
                          spids: [10713]
                        )
                      ]
                    )
                  ]
                  spids: [10705 10710 10718 -1]
                )
                (case_arm
                  pat_list: [{<powerpc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10724]
                        )
                      ]
                    )
                  ]
                  spids: [10721 10722 10729 -1]
                )
                (case_arm
                  pat_list: [{<ppc64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10735]
                        )
                      ]
                    )
                  ]
                  spids: [10732 10733 10740 -1]
                )
                (case_arm
                  pat_list: [{<ppc64el>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10746]
                        )
                      ]
                    )
                  ]
                  spids: [10743 10744 10751 -1]
                )
                (case_arm
                  pat_list: [{<s390x>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib32>)}
                          spids: [10757]
                        )
                      ]
                    )
                  ]
                  spids: [10754 10755 10762 -1]
                )
                (case_arm
                  pat_list: [{<sparc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <lib64>)}
                          spids: [10768]
                        )
                      ]
                    )
                  ]
                  spids: [10765 10766 10773 -1]
                )
                (case_arm
                  pat_list: [{<sparc64>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64'>)}
                          spids: [10779]
                        )
                      ]
                    )
                  ]
                  spids: [10776 10777 10784 -1]
                )
                (case_arm
                  pat_list: [{<x32>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:link_dir)
                          op: assign_op.Equal
                          rhs: {(DQ <'lib32 lib64 libx32'>)}
                          spids: [10790]
                        )
                      ]
                    )
                  ]
                  spids: [10787 10788 10795 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:link_dir)
                  op: assign_op.Equal
                  rhs: {(DQ <'bin sbin lib '> ($ Id.VSub_DollarName '$link_dir'))}
                  spids: [10801]
                )
              ]
            )
            (C {<local>} {<dir>})
            (command.ForEach
              iter_names: [dir]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$link_dir')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<ln>} {<-s>} {<'usr/'> ($ Id.VSub_DollarName '$dir')} 
                      {($ Id.VSub_DollarName '$TARGET') <'/'> ($ Id.VSub_DollarName '$dir')}
                    )
                    (C {<mkdir>} {<-p>} 
                      {($ Id.VSub_DollarName '$TARGET') <'/usr/'> ($ Id.VSub_DollarName '$dir')}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<in_path>} {<perl>}) terminator:<Id.Op_Semi _>)]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {<pkgdetails_perl>}
                  spids: [10876]
                )
              ]
            )
            (command.ShFunction
              name: pkgdetails_field
              body: 
                (BraceGroup
                  children: [
                    (C {<perl>} {<-le>} 
                      {
                        (SQ <'\n'> 
                          <
'$unique = shift @ARGV; $field = lc(shift @ARGV); $mirror = shift @ARGV;\n'
                          > <'%fields = map { $_, 0 } @ARGV;\n'> <'$prevpkg = "";\n'> <'while (<STDIN>) {\n'> <'\tchomp;\n'> 
                          <'\tnext if (/^ /);\n'> <'\tif (/^([^:]*:)\\s*(.*)$/) {\n'> <'\t\t$f = lc($1); $v = $2;\n'> <'\t\tif ($f eq "package:") {\n'> 
                          <'\t\t\t$last = 0;\n'> <'\t\t\t$pkg = $v;\n'> <'\t\t\tif ($pkg ne $prevpkg) {\n'> 
                          <'\t\t\t\tprint $output if defined $output;\n'> <'\t\t\t\tif ($unique && defined $output_val) {\n'> <'\t\t\t\t\tdelete $fields{$output_val};\n'> 
                          <'\t\t\t\t\t$last = 1 unless keys %fields;\n'> <'\t\t\t\t}\n'> <'\t\t\t\t$prevpkg = $pkg;\n'> <'\t\t\t}\n'> <'\t\t\tundef $output;\n'> 
                          <'\t\t\tundef $output_val;\n'> <'\t\t\tlast if $last;\n'> <'\t\t}\n'> <'\t\t$ver = $v if ($f eq "version:");\n'> 
                          <'\t\t$arc = $v if ($f eq "architecture:");\n'> <'\t\t$fil = $v if ($f eq "filename:");\n'> 
                          <
'\t\t$chk = $v if (lc $f eq lc($ENV{DEBOOTSTRAP_CHECKSUM_FIELD}).":");\n'
                          > <'\t\t$siz = $v if ($f eq "size:");\n'> <'\t\t$val = $v if ($f eq $field);\n'> <'\t} elsif (/^$/) {\n'> 
                          <'\t\tif (defined $val && defined $fields{$val}) {\n'> <'\t\t\t$output = sprintf "%s %s %s %s %s %s %s",\n'> 
                          <'\t\t\t $pkg, $ver, $arc, $mirror, $fil, $chk, $siz;\n'> <'\t\t\t$output_val = $val;\n'> <'\t\t}\n'> <'\t\tundef $val;\n'> <'\t}\n'> <'}\n'> 
                          <'print $output if defined $output;\n'> <'delete $fields{$output_val} if $unique && defined $output_val;\n'> <'for $v (keys %fields) {\n'> 
                          <'\tprintf ("%s -\\n", $v) if ($unique);\n'> <'}\n'>
                        )
                      } {(DQ ($ Id.VSub_At '$@'))}
                    )
                  ]
                )
            )
            (command.ShFunction
              name: pkgdetails_perl
              body: 
                (BraceGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <'WGET%'>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<perl>} {<-e>} 
                              {
                                (SQ <'\n'> <'$v = 0;\n'> <'$allow_percentage = 0;\n'> 
                                  <'while (read STDIN, $x, 1) {\n'> <'\tif ($x =~ m/\\s/) {\n'> <'\t\t$allow_percentage = 1;\n'> 
                                  <'\t} elsif ($allow_percentage and $x =~ m/\\d/) {\n'> <'\t\t$v *= 10;\n'> <'\t\t$v += $x;\n'> <'\t} elsif ($allow_percentage and $x eq "%") {\n'> 
                                  <
'\t\tprintf "P: %d %d%s\\n", int($v / 100.0 * ($ARGV[1] - $ARGV[0]) + $ARGV[0]), $ARGV[2], ($#ARGV == 3 ? " $ARGV[3]" : "");\n'
                                  > <'\t\t$v = 0;\n'> <'\t} else {\n'> <'\t\t$v = 0;\n'> <'\t\t$allow_percentage = 0;\n'> <'\t}\n'> <'}'>
                                )
                              } {(DQ ($ Id.VSub_At '$@'))}
                            )
                          ]
                          spids: [10961 10978]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <GETDEPS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number '$2'))})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [
                                    {<perl>}
                                    {<-e>}
                                    {
                                      (SQ <'\n'> <'$prevpkg = "";\n'> <'@d = ();\n'> 
                                        <'while (<STDIN>) {\n'> <'\tchomp;\n'> <'\tif (/^Package: (.*)$/) {\n'> <'\t\t$pkg = $1;\n'> <'\t\tif ($pkg ne $prevpkg) {\n'> 
                                        <'\t\t\tfor my $d (@d) {\n'> <'\t\t\t\tprint "$d\\n";\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t$prevpkg = $1;\n'> <'\t\t@d = ();\n'> 
                                        <'\t}\n'> <'\t$in = 1 if (grep {$_ eq $pkg} @ARGV);\n'> <'\t$in = 0 if (/^$/);\n'> 
                                        <
'\tif ($in and (/^Depends: (.*)$/ or /^Pre-Depends: (.*)$/)) {\n'
                                        > <'\t\tfor $d (split /\\s*,\\s*/, $1) {\n'> <'\t\t\t$d =~ s/\\s*[|].*$//;\n'> 
                                        <'\t\t\t$d =~ s/\\s*[(].*[)]\\s*//;\n'> <'\t\t\t$d =~ s/:.*//;\n'> <'\t\t\tpush @d, $d;\n'> <'\t\t}\n'> <'\t}\n'> <'}\n'> <'for my $d (@d) {\n'> 
                                        <'\tprint "$d\\n";\n'> <'}'>
                                      )
                                    }
                                    {(DQ ($ Id.VSub_At '$@'))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {(DQ ($ Id.VSub_DollarName '$pkgdest'))}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<sort>})
                                (C {<uniq>})
                              ]
                              negated: F
                            )
                          ]
                          spids: [11014 11031]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <PKGS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$2'))})
                            (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number '$3'))})
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<pkgdetails_field>}
                                {<1>}
                                {<Package> <Id.Lit_Colon ':'>}
                                {(DQ ($ Id.VSub_DollarName '$m'))}
                                {(DQ ($ Id.VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName '$p'))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [11102 11119]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <FIELD>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<local>} {<Id.Lit_VarLike 'f='> (DQ ($ Id.VSub_Number '$2'))})
                            (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number '$3'))})
                            (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number '$4'))})
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<pkgdetails_field>}
                                {<0>}
                                {(DQ ($ Id.VSub_DollarName '$f'))}
                                {(DQ ($ Id.VSub_DollarName '$m'))}
                                {(DQ ($ Id.VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName '$p'))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [11169 11186]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <STANZAS>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number '$2'))})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.Simple
                              words: [
                                {<perl>}
                                {<-e>}
                                {
                                  (SQ <'\n'> <'my $accum = "";\n'> <'while (<STDIN>) {\n'> 
                                    <'\t$accum .= $_;\n'> <'\t$in = 1 if (/^Package: (.*)$/ && grep {$_ eq $1} @ARGV);\n'> <'\tif ($in and /^$/) {\n'> 
                                    <'\t\tprint $accum;\n'> <'\t\tif (substr($accum, -1) != "\\n") {\n'> <'\t\t\tprint "\\n\\n";\n'> 
                                    <'\t\t} elsif (substr($accum, -2, 1) != "\\n") {\n'> <'\t\t\tprint "\\n";\n'> <'\t\t}\n'> <'\t\t$in = 0;\n'> <'\t}\n'> <'\t$accum = "" if /^$/;\n'> <'}'>
                                  )
                                }
                                {(DQ ($ Id.VSub_At '$@'))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName '$pkgdest'))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [11248 11265]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [10866 10873]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ <'/usr/lib/debootstrap/pkgdetails'>)} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {(DQ <'/usr/lib/debootstrap/pkgdetails'>)}
                  spids: [11336]
                )
              ]
            )
          ]
          spids: [11320 11333]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                      {(DQ ($ Id.VSub_DollarName '$DEBOOTSTRAP_DIR') <'/pkgdetails'>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PKGDETAILS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$DEBOOTSTRAP_DIR') <'/pkgdetails'>)}
                  spids: [11358]
                )
              ]
            )
          ]
          spids: [11341 11355]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:PKGDETAILS)
              op: assign_op.Equal
              rhs: {(DQ )}
              spids: [11367]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: resolve_deps
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'PKGS='> (DQ ($ Id.VSub_Star '$*'))})
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS='> (DQ ($ Id.VSub_DollarName '$PKGS'))})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS2='> (DQ )})
              terminator: <Id.Op_Semi _>
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PKGS'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} {<Id.Lit_VarLike 'NEWPKGS='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name COMPONENTS>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: {($ Id.VSub_DollarName '$USE_COMPONENTS')}
                                  )
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                  ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:NEWPKGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$NEWPKGS') <' '> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {(DQ ($ Id.VSub_DollarName '$PKGDETAILS'))} {<GETDEPS>} 
                                              {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {($ Id.VSub_DollarName '$PKGS')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [11516]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PKGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$PKGS') <' '> 
                                            ($ Id.VSub_DollarName '$NEWPKGS')
                                          )
                                        }
                                      )
                                      (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                      (C {<sort>})
                                      (C {<uniq>})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [11539]
                        )
                      ]
                    )
                    (C {<local>} {<Id.Lit_VarLike 'REALPKGS='> (DQ )})
                    (command.ForEach
                      iter_names: [c]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name COMPONENTS>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: {($ Id.VSub_DollarName '$USE_COMPONENTS')}
                                  )
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<local>} 
                              {<Id.Lit_VarLike 'path='> 
                                (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> 
                                  ($ Id.VSub_DollarName '$c') <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                                )
                              }
                            )
                            (C {<local>} 
                              {<Id.Lit_VarLike 'pkgdest='> 
                                (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                        {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                        {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:REALPKGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$REALPKGS') <' '> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {(DQ ($ Id.VSub_DollarName '$PKGDETAILS'))} {<PKGS>} 
                                                  {<REAL>} {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {($ Id.VSub_DollarName '$PKGS')}
                                                )
                                                (C {<sed>} {<-n>} {(SQ <'s/ .*REAL.*$//p'>)})
                                              ]
                                              negated: F
                                            )
                                        )
                                      )
                                    }
                                  spids: [11642]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PKGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$REALPKGS'))}
                          spids: [11677]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ALLPKGS2)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$PKGS') <' '> 
                                            ($ Id.VSub_DollarName '$ALLPKGS')
                                          )
                                        }
                                      )
                                      (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                      (C {<sort>})
                                      (C {<uniq>})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [11683]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PKGS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<without>} {(DQ ($ Id.VSub_DollarName '$ALLPKGS2'))} 
                                    {(DQ ($ Id.VSub_DollarName '$ALLPKGS'))}
                                  )
                              )
                            }
                          spids: [11715]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ALLPKGS)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$ALLPKGS2'))}
                          spids: [11729]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {($ Id.VSub_DollarName '$ALLPKGS')})
          ]
        )
    )
    (command.ShFunction
      name: setup_available
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'm1='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name MIRRORS>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_DPercent '%%'>
                        arg_word: {<' '> <Id.Lit_Other '*'>}
                      )
                  )
                )
              }
            )
            (command.ForEach
              iter_names: [c]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name COMPONENTS>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {($ Id.VSub_DollarName '$USE_COMPONENTS')}
                          )
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'path='> 
                        (DQ <'dists/'> ($ Id.VSub_DollarName '$SUITE') <'/'> ($ Id.VSub_DollarName '$c') 
                          <'/binary-'> ($ Id.VSub_DollarName '$ARCH') <'/Packages'>
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'pkgdest='> 
                        (DQ ($ Id.VSub_DollarName '$TARGET') <'/'> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {($ Id.VSub_DollarName '$DLDEST')} {<pkg>} 
                                {(DQ ($ Id.VSub_DollarName '$SUITE'))} {(DQ ($ Id.VSub_DollarName '$c'))} {(DQ ($ Id.VSub_DollarName '$ARCH'))} 
                                {(DQ ($ Id.VSub_DollarName '$m1'))} {(DQ ($ Id.VSub_DollarName '$path'))}
                              )
                          )
                        )
                      }
                    )
                    (C {(DQ ($ Id.VSub_DollarName '$PKGDETAILS'))} {<STANZAS>} 
                      {(DQ ($ Id.VSub_DollarName '$pkgdest'))} {(DQ ($ Id.VSub_At '$@'))}
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg/available'>)}
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  iter_names: [pkg]
                  iterable: (for_iter.Args)
                  body: 
                    (command.DoGroup
                      children: [(C {<echo>} {(DQ ($ Id.VSub_DollarName '$pkg') <' install'>)})]
                    )
                )
                (C {<in_target>} {<dpkg>} {<--set-selections>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: get_next_predep
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'stanza='> 
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<in_target_nofail>} {<dpkg>} {<--predep-package>})
                  )
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$stanza'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$stanza'))})
                (C {<grep>} {(SQ <'^Package:'>)})
                (C {<sed>} {(SQ <'s/^Package://; s/^ *//'>)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: check_sane_mount
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_Number '$1'))})
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$HOST_OS'))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>} {<hurd> <Id.Lit_Star '*'>}]
                  spids: [11995 12001 12004 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<mknod>} {(DQ ($ Id.VSub_Number '$1') <'/test-dev-null'>)} {<c>} {<1>} {<3>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [{<echo>} {<test>}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(DQ ($ Id.VSub_Number '$1') <'/test-dev-null'>)}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$1') <'/test-dev-null'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [12031 12047]
                        )
                      ]
                    )
                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$1') <'/test-dev-null'>)})
                  ]
                  spids: [12007 12008 12078 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SH)
                  op: assign_op.Equal
                  rhs: {<'/bin/sh'>}
                  spids: [12085]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-x>} {($ Id.VSub_DollarName '$SH')} {<Id.Lit_RBracket ']'>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:SH)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<sh>}))}
                      spids: [12099]
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_Number '$1') <'/test-exec'>)}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 12127
                      stdin_parts: [<'#! '> ($ Id.VSub_DollarName '$SH') <'\n'> <':\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (C {<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ ($ Id.VSub_Number '$1') <'/test-exec'>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [(C {(DQ ($ Id.VSub_Number '$1') <'/test-exec'>)})]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$1') <'/test-exec'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [12140 12150]
                )
              ]
            )
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$1') <'/test-exec'>)})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: read_gpg_status
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:badsig)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [12197]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:unkkey)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [12200]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:validsig)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [12203]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<read>} {<prefix>} {<keyword>} {<keyid>} {<rest>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$prefix'))} 
                          {<Id.Lit_Equals '='>} {(SQ <'[GNUPG:]'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$keyword')}
                      arms: [
                        (case_arm
                          pat_list: [{<BADSIG>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:badsig)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$keyid'))}
                                  spids: [12251]
                                )
                              ]
                            )
                          ]
                          spids: [12248 12249 12256 -1]
                        )
                        (case_arm
                          pat_list: [{<NO_PUBKEY>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:unkkey)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$keyid'))}
                                  spids: [12262]
                                )
                              ]
                            )
                          ]
                          spids: [12259 12260 12267 -1]
                        )
                        (case_arm
                          pat_list: [{<VALIDSIG>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:validsig)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$keyid'))}
                                  spids: [12273]
                                )
                              ]
                            )
                          ]
                          spids: [12270 12271 12278 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$validsig'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<info>} {<VALIDRELSIG>} {(DQ <'Valid Release signature (key id %s)'>)} 
                      {(DQ ($ Id.VSub_DollarName '$validsig'))}
                    )
                  ]
                  spids: [12287 12298]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$badsig'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<BADRELSIG>} {(DQ <'Invalid Release signature (key id %s)'>)} 
                      {(DQ ($ Id.VSub_DollarName '$badsig'))}
                    )
                  ]
                  spids: [12314 12325]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$unkkey'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<error>} {<1>} {<UNKNOWNRELSIG>} 
                      {(DQ <'Release signed by unknown key (key id %s)'>)} {(DQ ($ Id.VSub_DollarName '$unkkey'))}
                    )
                  ]
                  spids: [12343 12354]
                )
              ]
              else_action: [
                (C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Error executing gpgv to check Release signature'>)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: without
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_Number '$1')})
                                (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                (C {<sort>})
                                (C {<uniq>})
                              ]
                              negated: F
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_Number '$2')} {($ Id.VSub_Number '$2')})
                            (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
                (C {<sort>})
                (C {<uniq>} {<-u>})
                (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
              ]
              negated: F
            )
            (C {<echo>})
          ]
        )
    )
    (command.ShFunction
      name: repeatn
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'n='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$n'))} {<-gt>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {(DQ ($ Id.VSub_At '$@'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [12517 12524]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:n)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (word_part.ArithSub
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Minus
                                          left: {($ Id.VSub_DollarName '$n')}
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  )
                                }
                              spids: [12533]
                            )
                          ]
                        )
                        (C {<sleep>} {<1>})
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$n'))} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [12559 12574]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:N_EXIT_THINGS)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [12591]
        )
      ]
    )
    (command.ShFunction
      name: exit_function
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'n='> <0>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$n'))} {<-lt>} 
                          {(DQ ($ Id.VSub_DollarName '$N_EXIT_THINGS'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Subshell
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.Simple
                              words: [
                                {<eval>}
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<eval>} {<echo>} 
                                        {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                          <Id.Lit_LBrace '{'> <EXIT_THING_> ($ Id.VSub_DollarName '$n') <Id.Lit_RBrace '}'>
                                        }
                                      )
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<true>})
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:n)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: {($ Id.VSub_DollarName '$n')}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              )
                            }
                          spids: [12652]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:N_EXIT_THINGS)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [12670]
                )
              ]
            )
          ]
        )
    )
    (C {<trap>} {(DQ <exit_function>)} {<0>})
    (C {<trap>} {(DQ <'exit 129'>)} {<1>})
    (C {<trap>} 
      {
        (DQ <'error 130 INTERRUPTED '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
          <'Interrupt caught ... exiting'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
        )
      } {<2>}
    )
    (C {<trap>} {(DQ <'exit 131'>)} {<3>})
    (C {<trap>} {(DQ <'exit 143'>)} {<15>})
    (command.ShFunction
      name: on_exit
      body: 
        (BraceGroup
          children: [
            (C {<eval>} 
              {
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<echo>} 
                      {<EXIT_THING_> (${ Id.VSub_Name N_EXIT_THINGS) <Id.Lit_Equals '='> 
                        (DQ ($ Id.VSub_Number '$1'))
                      }
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:N_EXIT_THINGS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.ArithSub
                          anode: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: {($ Id.VSub_DollarName '$N_EXIT_THINGS')}
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      )
                    }
                  spids: [12749]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: install_fakechroot_tools
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VARIANT'))} 
                              {<Id.Lit_Equals '='>} {(DQ <fakechroot>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<export>} 
                      {<Id.Lit_VarLike 'PATH='> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/sbin'> 
                        <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')
                      }
                    )
                  ]
                  spids: [12778 12795]
                )
              ]
            )
            (C {<mv>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sbin/ldconfig'>)} 
              {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sbin/ldconfig.REAL'>)}
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'#!/bin/sh\n'> <'echo\n'> <'echo '> 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'Warning: Fake ldconfig called, doing nothing'> 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sbin/ldconfig'>)}
                )
              ]
              do_fork: T
            )
            (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/sbin/ldconfig'>)})
            (command.Simple
              words: [{<echo>} {(DQ <'/sbin/ldconfig\n'> <'/sbin/ldconfig.REAL\n'> <fakechroot>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg/diversions'>)}
                )
              ]
              do_fork: T
            )
            (C {<mv>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/usr/bin/ldd'>)} 
              {(DQ ($ Id.VSub_DollarName '$TARGET') <'/usr/bin/ldd.REAL'>)}
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <END>)}
                      here_end_span_id: 13060
                      stdin_parts: [
                        <'#!/usr/bin/perl\n'>
                        <'\n'>
                        <'# fakeldd\n'>
                        <'#\n'>
                        <'# Replacement for ldd with usage of objdump\n'>
                        <'#\n'>
                        <'# (c) 2003-2005 Piotr Roszatycki <dexter@debian.org>, BSD\n'>
                        <'\n'>
                        <'\n'>
                        <'my %libs = ();\n'>
                        <'\n'>
                        <'my $status = 0;\n'>
                        <'my $dynamic = 0;\n'>
                        <'my $biarch = 0;\n'>
                        <'\n'>
                        <'my $ldlinuxsodir = "/lib";\n'>
                        <'my @ld_library_path = qw(/usr/lib /lib);\n'>
                        <'\n'>
                        <'\n'>
                        <'sub ldso($) {\n'>
                        <'\tmy ($lib) = @_;\n'>
                        <'\tmy @files = ();\n'>
                        <'\n'>
                        <'\tif ($lib =~ /^\\//) {\n'>
                        <'\t    $libs{$lib} = $lib;\n'>
                        <'\t    push @files, $lib;\n'>
                        <'\t} else {\n'>
                        <'\t    foreach my $ld_path (@ld_library_path) {\n'>
                        <'\t\tnext unless -f "$ld_path/$lib";\n'>
                        <'\t\tmy $badformat = 0;\n'>
                        <'\t\topen OBJDUMP, "objdump -p $ld_path/$lib 2>/dev/null |";\n'>
                        <'\t \twhile (my $line = <OBJDUMP>) {\n'>
                        <'\t\t    if ($line =~ /file format (\\S*)$/) {\n'>
                        <'\t\t\t\t$badformat = 1 unless $format eq $1;\n'>
                        <'\t\t\t\tlast;\n'>
                        <'\t\t    }\n'>
                        <'\t\t}\n'>
                        <'\t\tclose OBJDUMP;\n'>
                        <'\t\tnext if $badformat;\n'>
                        <'\t\t$libs{$lib} = "$ld_path/$lib";\n'>
                        <'\t\tpush @files, "$ld_path/$lib";\n'>
                        <'\t    }\n'>
                        <'\t    objdump(@files);\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'\n'>
                        <'sub objdump(@) {\n'>
                        <'\tmy (@files) = @_;\n'>
                        <'\tmy @libs = ();\n'>
                        <'\n'>
                        <'\tforeach my $file (@files) {\n'>
                        <'\t    open OBJDUMP, "objdump -p $file 2>/dev/null |";\n'>
                        <'\t    while (my $line = <OBJDUMP>) {\n'>
                        <'\t\t$line =~ s/^\\s+//;\n'>
                        <'\t\tmy @f = split (/\\s+/, $line);\n'>
                        <'\t\tif ($line =~ /file format (\\S*)$/) {\n'>
                        <'\t\t    if (not $format) {\n'>
                        <'\t\t\t$format = $1;\n'>
                        <'\t\t\tif ($unamearch eq "x86_64" and $format eq "elf32-i386") {\n'>
                        <'\t\t\t    my $link = readlink "/lib/ld-linux.so.2";\n'>
                        <'\t\t\t    if ($link =~ /^\\/emul\\/ia32-linux\\//) {\n'>
                        <'\t\t\t\t$ld_library_path[-2] = "/emul/ia32-linux/usr/lib";\n'>
                        <'\t\t\t\t$ld_library_path[-1] = "/emul/ia32-linux/lib";\n'>
                        <'\t\t\t    }\n'>
                        <
'\t\t\t} elsif ($unamearch =~ /^(sparc|sparc64)$/ and $format eq "elf64-sparc") {\n'
                        >
                        <'\t\t\t    $ldlinuxsodir = "/lib64";\n'>
                        <'\t\t\t    $ld_library_path[-2] = "/usr/lib64";\n'>
                        <'\t\t\t    $ld_library_path[-1] = "/lib64";\n'>
                        <'\t\t\t}\n'>
                        <'\t\t    } else {\n'>
                        <'\t\t\tnext unless $format eq $1;\n'>
                        <'\t\t    }\n'>
                        <'\t\t}\n'>
                        <'\t\tif (not $dynamic and $f[0] eq "Dynamic") {\n'>
                        <'\t\t    $dynamic = 1;\n'>
                        <'\t\t}\n'>
                        <'\t\tnext unless $f[0] eq "NEEDED";\n'>
                        <'\t\tif ($f[1] =~ /^ld-linux(\\.|-)/) {\n'>
                        <'\t\t    $f[1] = "$ldlinuxsodir/" . $f[1];\n'>
                        <'\t\t}\n'>
                        <'\t\tif (not defined $libs{$f[1]}) {\n'>
                        <'\t\t    $libs{$f[1]} = undef;\n'>
                        <'\t\t    push @libs, $f[1];\n'>
                        <'\t\t}\n'>
                        <'\t    }\n'>
                        <'\t    close OBJDUMP;\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tforeach my $lib (@libs) {\n'>
                        <'\t    ldso($lib);\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'\n'>
                        <'if ($#ARGV < 0) {\n'>
                        <'\tprint STDERR "fakeldd: missing file arguments\\n";\n'>
                        <'\texit 1;\n'>
                        <'}\n'>
                        <'\n'>
                        <'while ($ARGV[0] =~ /^-/) {\n'>
                        <'\tmy $arg = $ARGV[0];\n'>
                        <'\tshift @ARGV;\n'>
                        <'\tlast if $arg eq "--";\n'>
                        <'}\n'>
                        <'\n'>
                        <'open LD_SO_CONF, "/etc/ld.so.conf";\n'>
                        <'while ($line = <LD_SO_CONF>) {\n'>
                        <'\tchomp $line;\n'>
                        <'\tunshift @ld_library_path, $line;\n'>
                        <'}\n'>
                        <'close LD_SO_CONF;\n'>
                        <'\n'>
                        <'unshift @ld_library_path, split(/:/, $ENV{LD_LIBRARY_PATH});\n'>
                        <'\n'>
                        <'$unamearch = `/bin/uname -m`;\n'>
                        <'chomp $unamearch;\n'>
                        <'\n'>
                        <'foreach my $file (@ARGV) {\n'>
                        <'\tmy $address;\n'>
                        <'\t%libs = ();\n'>
                        <'\t$dynamic = 0;\n'>
                        <'\n'>
                        <'\tif ($#ARGV > 0) {\n'>
                        <'\t\tprint "$file:\\n";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tif (not -f $file) {\n'>
                        <'\t\tprint STDERR "ldd: $file: No such file or directory\\n";\n'>
                        <'\t\t$status = 1;\n'>
                        <'\t\tnext;\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tobjdump($file);\n'>
                        <'\n'>
                        <'\tif ($dynamic == 0) {\n'>
                        <'\t\tprint "\\tnot a dynamic executable\\n";\n'>
                        <'\t\t$status = 1;\n'>
                        <'\t} elsif (scalar %libs eq "0") {\n'>
                        <'\t\tprint "\\tstatically linked\\n";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tif ($format =~ /^elf64-/) {\n'>
                        <'\t\t$address = "0x0000000000000000";\n'>
                        <'\t} else {\n'>
                        <'\t\t$address = "0x00000000";\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\tforeach $lib (keys %libs) {\n'>
                        <'\t\tif ($libs{$lib}) {\n'>
                        <'\t\t\tprintf "\\t%s => %s (%s)\\n", $lib, $libs{$lib}, $address;\n'>
                        <'\t\t} else {\n'>
                        <'\t\t\tprintf "\\t%s => not found\\n", $lib;\n'>
                        <'\t\t}\n'>
                        <'\t}\n'>
                        <'}\n'>
                        <'\n'>
                        <'exit $status;\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/usr/bin/ldd'>)}
                )
              ]
              do_fork: T
            )
            (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName '$TARGET') <'/usr/bin/ldd'>)})
            (command.Simple
              words: [{<echo>} {(DQ <'/usr/bin/ldd\n'> <'/usr/bin/ldd.REAL\n'> <fakechroot>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$TARGET') <'/var/lib/dpkg/diversions'>)}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
  ]
)