(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 ) ] ) ) ] )