(command.CommandList
  children: [
    (command.Simple blame_tok:<set> more_env:[] words:[{<set>} {<-e>}] redirects:[] do_fork:T)
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <command>
          more_env: []
          words: [{<command>} {<-v>} {<tput>}]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <exec>
          more_env: []
          words: [{<exec>} {<grep>} {<-v>} {(DQ <'^begin '>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'header_pattern='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'header_pattern='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'header_pattern='> name:header_pattern)
          op: assign_op.Equal
          rhs: {(SQ <'[0-9]+\\.\\.[0-9]+'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <read>
      more_env: [(EnvPair left:<Id.Lit_VarLike 'IFS='> name:IFS val:(rhs_word__Empty))]
      words: [{<read>} {<-r>} {<header>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(DQ ($ Id.VSub_DollarName header))}
                          right: {($ Id.VSub_DollarName header_pattern)}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'count='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'count='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name header>
                          var_name: header
                          suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 3>})
                          right: <Id.Arith_RBrace _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'index='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'index='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'failures='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'failures='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failures='> name:failures)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'skipped='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'skipped='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skipped='> name:skipped)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'name='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'name='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'count_column_width='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'count_column_width='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'count_column_width='>
                      name: count_column_width
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Star
                                left: 
                                  {
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name count>
                                      var_name: count
                                      prefix_op: <Id.VSub_Pound '#'>
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  }
                                right: {<Id.Lit_Digits 2>}
                              )
                            right: {<Id.Lit_Digits 2>}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          spids: [47 62]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <printf>
          more_env: []
          words: [
            {<printf>}
            {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
            {(DQ ($ Id.VSub_DollarName header))}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <exec>
          more_env: []
          words: [{<exec>} {<cat>}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      name_tok: <update_screen_width>
      name: update_screen_width
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'screen_width='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'screen_width='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'screen_width='> name:screen_width)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <tput>
                              more_env: []
                              words: [{<tput>} {<cols>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'count_column_left='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'count_column_left='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'count_column_left='>
                      name: count_column_left
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: {($ Id.VSub_DollarName screen_width)}
                            right: {($ Id.VSub_DollarName count_column_width)}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {<update_screen_width>} {<WINCH>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <update_screen_width>
      more_env: []
      words: [{<update_screen_width>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <begin>
      name: begin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {<0>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf_with_truncation>
              more_env: []
              words: [
                {<printf_with_truncation>}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Minus
                        left: {($ Id.VSub_DollarName count_column_left)}
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
                {(DQ <'   %s'>)}
                {(DQ ($ Id.VSub_DollarName name))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <clear_to_end_of_line>
              more_env: []
              words: [{<clear_to_end_of_line>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {($ Id.VSub_DollarName count_column_left)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {
                  (DQ <'%'> 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name count>
                      var_name: count
                      prefix_op: <Id.VSub_Pound '#'>
                      right: <Id.Right_DollarBrace '}'>
                    ) <'s/'> (${ Id.VSub_Name count)
                  )
                }
                {(DQ ($ Id.VSub_DollarName index))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {<1>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <pass>
      name: pass
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {<0>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <' ✓ %s'>)} {(DQ ($ Id.VSub_DollarName name))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <advance>
              more_env: []
              words: [{<advance>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <skip>
      name: skip
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'reason='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-z>}
                    {(DQ ($ Id.VSub_DollarName reason))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'reason='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'reason='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reason='> name:reason)
                      op: assign_op.Equal
                      rhs: {(DQ <': '> ($ Id.VSub_DollarName reason))}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {<0>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <' - %s (skipped%s)'>)}
                {(DQ ($ Id.VSub_DollarName name))}
                {(DQ ($ Id.VSub_DollarName reason))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <advance>
              more_env: []
              words: [{<advance>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fail>
      name: fail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <go_to_column>
              more_env: []
              words: [{<go_to_column>} {<0>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_color>
              more_env: []
              words: [{<set_color>} {<1>} {<bold>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <' ✗ %s'>)} {(DQ ($ Id.VSub_DollarName name))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <advance>
              more_env: []
              words: [{<advance>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <log>
      name: log
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <set_color>
              more_env: []
              words: [{<set_color>} {<1>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <'   %s'> <Id.Lit_BadBackslash '\\'> <n>)}
                {(DQ ($ Id.VSub_Number 1))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <clear_color>
              more_env: []
              words: [{<clear_color>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <summary>
      name: summary
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <Id.Lit_BadBackslash '\\'> <'n%d test%s'>)}
                {(DQ ($ Id.VSub_DollarName count))}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <plural>
                          more_env: []
                          words: [{<plural>} {(DQ ($ Id.VSub_DollarName count))}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <', %d failure%s'>)}
                {(DQ ($ Id.VSub_DollarName failures))}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <plural>
                          more_env: []
                          words: [{<plural>} {(DQ ($ Id.VSub_DollarName failures))}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName skipped))}
                                {<-gt>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <', %d skipped'>)} {(DQ ($ Id.VSub_DollarName skipped))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [451 466]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <printf_with_truncation>
      name: printf_with_truncation
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'width='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'string='> 
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [{<printf>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name string>
                                      var_name: string
                                      prefix_op: <Id.VSub_Pound '#'>
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<-gt>}
                                {(DQ ($ Id.VSub_DollarName width))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(DQ <'%s...'>)}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name string>
                              var_name: string
                              suffix_op: 
                                (suffix_op.Slice
                                  begin: {<Id.Lit_Digits 0>}
                                  length: 
                                    {
                                      (word_part.ArithSub
                                        left: <Id.Left_DollarDParen '$(('>
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Minus
                                            left: {($ Id.VSub_DollarName width)}
                                            right: {<Id.Lit_Digits 4>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              right: <Id.Arith_RBrace _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [527 547]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <printf>
                  more_env: []
                  words: [{<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName string))}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <go_to_column>
      name: go_to_column
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'column='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <Id.Lit_BadBackslash '\\'> <'x1B[%dG'>)}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {($ Id.VSub_DollarName column)}
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <clear_to_end_of_line>
      name: clear_to_end_of_line
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <'x1B[K'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <advance>
      name: advance
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <clear_to_end_of_line>
              more_env: []
              words: [{<clear_to_end_of_line>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <clear_color>
              more_env: []
              words: [{<clear_color>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <set_color>
      name: set_color
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'color='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'weight='> (DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(DQ <Id.Lit_BadBackslash '\\'> <'x1B[%d;%dm'>)}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {<Id.Lit_Digits 30>}
                        right: {($ Id.VSub_DollarName color)}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName weight))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <bold>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<1>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<22>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <clear_color>
      name: clear_color
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <'x1B[0m'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <plural>
      name: plural
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_Number 1))}
                    {<-eq>}
                    {<1>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <s>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_buffer='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_buffer='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_buffer='> name:_buffer)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <buffer>
      name: buffer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_buffer='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_buffer='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_buffer='> name:_buffer)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name _buffer) 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <Id.Left_DoubleQuote '"'>
                              more_env: []
                              words: [{(DQ ($ Id.VSub_At '@'))}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flush>
      name: flush
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName _buffer))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_buffer='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_buffer='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_buffer='> name:_buffer)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <finish>
      name: finish
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <flush>
              more_env: []
              words: [{<flush>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {<finish>} {<EXIT>}]
      redirects: []
      do_fork: T
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <read>
                  more_env: [(EnvPair left:<Id.Lit_VarLike 'IFS='> name:IFS val:(rhs_word__Empty))]
                  words: [{<read>} {<-r>} {<line>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName line))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <'begin '>) <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <let>
                      more_env: []
                      words: [{<let>} {<Id.Lit_VarLike 'index+='> <1>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name line>
                                  var_name: line
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: 
                                        {<Id.Lit_Other '*'> <' '> ($ Id.VSub_DollarName index) <' '>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <buffer>
                      more_env: []
                      words: [{<buffer>} {<begin>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <flush>
                      more_env: []
                      words: [{<flush>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <'ok '>) <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'skip_expr='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'skip_expr='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip_expr='> name:skip_expr)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'ok '> ($ Id.VSub_DollarName index) <' # skip ('> 
                                <Id.Lit_BadBackslash '\\'> <'(([^)]*)'> <Id.Lit_BadBackslash '\\'> <'))?'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_EqualTilde
                                          left: {(DQ ($ Id.VSub_DollarName line))}
                                          right: {($ Id.VSub_DollarName skip_expr)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <let>
                              more_env: []
                              words: [{<let>} {<Id.Lit_VarLike 'skipped+='> <1>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <buffer>
                              more_env: []
                              words: [
                                {<buffer>}
                                {<skip>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name BASH_REMATCH>
                                      var_name: BASH_REMATCH
                                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [949 964]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <buffer>
                          more_env: []
                          words: [{<buffer>} {<pass>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <'not ok '>) <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <let>
                      more_env: []
                      words: [{<let>} {<Id.Lit_VarLike 'failures+='> <1>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <buffer>
                      more_env: []
                      words: [{<buffer>} {<fail>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ <'# '>) <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <buffer>
                      more_env: []
                      words: [
                        {<buffer>}
                        {<log>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name line>
                              var_name: line
                              suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>})
                              right: <Id.Arith_RBrace _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <buffer>
      more_env: []
      words: [{<buffer>} {<summary>}]
      redirects: []
      do_fork: T
    )
  ]
)