(command.CommandList
  children: [
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <less>
          more_env: []
          words: [{<less>} {<-K>} {<-Ff>} {<'/dev/null'>}]
          redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'CTRL_C_EXITS='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'CTRL_C_EXITS='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CTRL_C_EXITS='> name:CTRL_C_EXITS)
              op: assign_op.Equal
              rhs: {(DQ <-K>)}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RED='> name:RED)
                  op: assign_op.Equal
                  rhs: {<1>}
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GREEN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GREEN='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GREEN='> name:GREEN)
                  op: assign_op.Equal
                  rhs: {<2>}
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BLUE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BLUE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BLUE='> name:BLUE)
                  op: assign_op.Equal
                  rhs: {<4>}
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'BRIGHT='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'BRIGHT='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BRIGHT='> name:BRIGHT)
              op: assign_op.Equal
              rhs: {(SQ <'1;'>)}
            )
          ]
          redirects: []
        )
      ]
    )
    (command.ShFunction
      name_tok: <tputc>
      name: tputc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'bright='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'bright='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bright='> name:bright)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'colour='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'colour='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'colour='> name:colour)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_DollarName bright))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tput>
                  more_env: []
                  words: [{<tput>} {<bold>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <tput>
              more_env: []
              words: [{<tput>} {<setaf>} {($ Id.VSub_DollarName colour)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DEL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DEL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEL='> name:DEL)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <tputc>
                      more_env: []
                      words: [{<tputc>} {($ Id.VSub_DollarName BRIGHT)} {($ Id.VSub_DollarName RED)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ADD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ADD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ADD='> name:ADD)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <tputc>
                      more_env: []
                      words: [{<tputc>} {($ Id.VSub_DollarName BRIGHT)} {($ Id.VSub_DollarName GREEN)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CHG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CHG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHG='> name:CHG)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <tputc>
                      more_env: []
                      words: [{<tputc>} {($ Id.VSub_DollarName BRIGHT)} {($ Id.VSub_DollarName BLUE)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FIL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FIL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FIL='> name:FIL)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <tput>
                      more_env: []
                      words: [{<tput>} {<smso>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'RST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'RST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RST='> name:RST)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <tput>
                      more_env: []
                      words: [{<tput>} {<sgr0>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.Pipeline
      children: [
        (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_Pound '#'))}
                            {<-eq>}
                            {(DQ <2>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.Simple
                  blame_tok: <diff>
                  more_env: []
                  words: [{<diff>} {<-Naru>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              ]
              spids: [228 245]
            )
          ]
          else_kw: <Id.KW_Else else>
          else_action: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [
            {<sed>}
            {
              (DQ <'\n'> <'s/^'> <Id.Lit_BadBackslash '\\'> <'*'> <Id.Lit_BadBackslash '\\'> <'{3'> 
                <Id.Lit_BadBackslash '\\'> <'}.*'> <Id.Lit_BadBackslash '\\'> <'*'> <Id.Lit_BadBackslash '\\'> <'{4'> <Id.Lit_BadBackslash '\\'> 
                <'}/'> ($ Id.VSub_DollarName CHG) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'  s/^-'> 
                <Id.Lit_BadBackslash '\\'> <'{3'> <Id.Lit_BadBackslash '\\'> <'}.*-'> <Id.Lit_BadBackslash '\\'> <'{4'> <Id.Lit_BadBackslash '\\'> 
                <'}/'> ($ Id.VSub_DollarName CHG) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'             s/^@.*/'> 
                ($ Id.VSub_DollarName CHG) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'         s/^[0-9].*/'> ($ Id.VSub_DollarName CHG) <'&'> 
                ($ Id.VSub_DollarName RST) <'/;t\n'> <'             s/^!.*/'> ($ Id.VSub_DollarName CHG) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> 
                <'\n'> <'             s/^-.*/'> ($ Id.VSub_DollarName DEL) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> 
                <'             s/^<.*/'> ($ Id.VSub_DollarName DEL) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'\n'> <'            s/^'> 
                <Id.Lit_BadBackslash '\\'> <'*.*/'> ($ Id.VSub_DollarName ADD) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'            s/^'> 
                <Id.Lit_BadBackslash '\\'> <'+.*/'> ($ Id.VSub_DollarName ADD) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'             s/^>.*/'> 
                ($ Id.VSub_DollarName ADD) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> <'\n'> <'       s/^Only in.*/'> ($ Id.VSub_DollarName FIL) <'&'> 
                ($ Id.VSub_DollarName RST) <'/;t\n'> <'       s/^Index: .*/'> ($ Id.VSub_DollarName FIL) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'> 
                <'         s/^diff .*/'> ($ Id.VSub_DollarName FIL) <'&'> ($ Id.VSub_DollarName RST) <'/;t\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.Left_DollarBrace '${'>
          more_env: []
          words: [
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name PAGER>
                var_name: PAGER
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_ColonHyphen _>
                    arg_word: {<'less -QRS '> ($ Id.VSub_DollarName CTRL_C_EXITS)}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
  ]
)